Tuesday 27 December 2022

Тестирование инфраструктуры с Testinfra #2.

Всем привет.

Усвоив идею тестирования на Testinfra и переориентировав ее для проверки системы, можно добиться очень многого. Автоматизация запуска тестов в ходе разработки приложений или даже написания и выполнения тестов для существующей инфраструктуры - два прекрасных способа упростить рутинные операции, которые могут вызвать ошибки. Рytest и Testinfra - отличные проекты, начать использовать их очень просто, к тому же при необходимости они легко расширяются. Самое естественное начало разработки проверочных тестов - во время создания самой инфраструктуры. Любое усовершенствование требует нового теста

Сегодня погоняем пару теcтов через Testinfra.

Вам понадобится установить web-сервер и запустить его на порту 80 для выдачи статической стартовой страницы. По мере достижения прогресса мы будем добавлять новые тесты. Неотъемлемой составляющей написания тестов является осознание сбоев, так что смоделируем несколько проблем, на примере которых будем разбираться, что нужно исправить.

На свежем сервере Ubuntu начните с установки пакета Nginx:

$apt install nginx

Создайте новый файл теста test_webserver.py, в который мы будем постепенно

добавлять тесты:

def test_nginx_is_installed(host):

assert host.package('nginx').is_installed

Сделаем вывод pytest лаконичнее с помощью флага -q, чтобы сосредоточить свое внимание на сбоях. Удаленный сервер называется node4, для подключения к нему используется SSH. Вот команда для запуска первого теста:

(validate) $ pytest -q --hosts='ssh://node4' test_webserver.py

1 passed in 1.44 seconds

Отлично! Необходимо, чтобы веб-сервер был запущен и работал, так что добавляем новый тест для проверки этого поведения:

def test_nginx_is_running(host):

assert host.service('nginx').is_running


Повторный запуск теста, казалось бы, должен опять пройти успешно:

(validate) $ pytest -q --hosts='ssh://node4' test_webserver.py

.F

= FAILURES ===================================

_____________________ test_nginx_is_running[ssh://node4] ______________________

host = <testinfra.host.Host object at 0x7f629bf1d668>

def test_nginx_is_running(host):

> assert host.service('nginx').is_running

E AssertionError: assert False

E + where False = <service nginx>.is_running

E + where <service nginx> = <class 'SystemdService'>('nginx')

test_webserver.py:7: AssertionError

1 failed, 1 passed in 2.45 seconds

Sunday 25 December 2022

Тестирование инфраструктуры с Testinfra #1.

Всем привет.

Создание модульных тестов для тестирования инфраструктуры - замечательная идея. Главное найти подхоящий инструмент с низким порогом вхождения. Я таких знаю два - это Testinfra  (Python) и Pester (Powershell). Разумеется оба бесплатны, но более простым для старта я считаю первый. Так что сегодня будет Testinfra.

С проектом Testinfra мы можем качественно улучшить наши приложения, которые мы используем в промышленной эксплуатации. Давайте выполним подключение к разным хостам и выполним несколько проверочных тестов.

Пожалуй начнем. Создайте новую виртуальную среду и активируйте ее:

$ python3 -m venv validator

$ source validator/bin/activate

Установите  pytest:

(validator) $ pip3 install pytest

Установите testinfra:

(validator) $ pip3 install pytest-testinfra

Установите paramiko:

(validator) $ pip3 install paramiko

Фикстуры pytest предоставляют всю тестовую функциональность проекта Testinfra.  Чтобы извлечь пользу из этого, вам необходимо правильно указать тип соединения. Поскольку  существуют различные типы соединений прикладных частей, то, если соединение не указано непосредственно, Testinfra использует определенные типы по умолчанию. Лучше указывать тип соединения явным образом в командной строке.

Вот список поддерживаемых Testinfra соединений на сегодня:

-local

$ py.test --sudo test_myinfra.py

-Paramiko (SSH-реализация на Python)

$ py.test --ssh-config=/path/to/ssh_config --hosts=server

-Docker;

$ py.test --hosts='docker://[user@]container_id_or_name'

-SSH;

$ py.test --ssh-config=/path/to/ssh_config --hosts='ssh://server'

-Podman;

$ py.test --hosts='podman://[user@]container_id_or_name'

-Salt;

$ py.test --hosts='salt://*'

-Ansible;

$ py.test --hosts='ansible://all' # tests all inventory hosts

-Kubernetes (через утилиту kubectl);

$ py.test --hosts='kubectl://mypod-a1b2c3'

-OpenShift;

$ py.test --hosts='openshift://mypod-a1b2c3'

-WinRM;

$ py.test --hosts='winrm://vagrant@127.0.0.1:2200?no_ssl=true&no_verify_ssl=true'

-LXC/LXD

$ py.test --hosts='lxc://container_name'

Wednesday 21 December 2022

Начало работы с СХД HP P2000.

Всем привет.

Пару слов про азы работы с СХД HP P2000 FC. С чего начинать? Заходим в web-админку СХД: 

1. Создаем Vdisk (правая клавиша мышки Vdisks -> Provisioning -> Create Vdisk)

Здесь выбираем какие диски должны быть в массиве, а так же Strape диски для автоматической подмены, при выходе из строя. Немаловажный параметр, на которой стоит обратить внимание это Chunk size, от этого зависит производительность данного Vdisk.

Размер Chunk size - определяет объем данных записываемых за одну операцию ввода/вывода. размер Chunk size задается в момент конфигурирования RAID массива и не может быть изменен позднее без переинициализации всего массива. Больший размер Chunk size обеспечивает прирост производительности при работе с большими последовательными файлами (например, видео), меньший - обеспечивает большую эффективность в случае работы с большим количеством небольших файлов.

2. Далее создаем Volume (правая клавиша мышки Vd01 -> Provisioning -> Create Volume) Здесь мы уже нарезаем логическое пространство, которое будем назначать нашим устройствам (серверам). Пока идет инициализация Vdisk, нам нужно создать хосты, которым будут назначены наши диски. Для этого нам необходимо узнать так называемые WWN портов нашей FC карты на сервере. 

Первый способ - запрос в Powershell. Для примера, я укажу как это можно узнать на системе Windows, которая непосредственно установлена на сервере, где находится наша FC карта:

Get-InitiatorPort | Select-Object -Property PortAddress,ConnectionType | Format-Table -AutoSize

По итогу видим все порты, которые нам доступны и активны на нашей FC карте. Нас интересует поле PortAddress.


Второй способ подойдёт для использования во всех версиях ОС Windows. Чтобы им воспользоваться необходимо установить утилиту управления от производителя HBA вашей СХД:

  • HBAnyware/OneCommand для Emulex
  • SANsurfer для Qlogic
  • HP System Management Console (HP SYM)
  • Dell Server Management Console

Sunday 18 December 2022

NMAP и Python.

Всем привет.

Популярный NMAP также может вызываться и выполняться из разных языков  программирования, что делает его еще более мощным. Добавим ему Python - интерпретируемый язык программирования высокого уровня для программирования общего назначения. Python действительно удобный и чрезвычайно гибкий. Сам Python устанавливается по умолчанию в большинстве систем на основе Unix. Однако вам необходимо установить библиотеку NMAP отдельно. В системах на основе Debian вы можете просто использовать команду:

>pip install python-nmap

Теперь, когда вы установили требуемую библиотеку NMAP, запустите интерпретатор Python из терминала, введя команду python, и импортируйте библиотеку NMAP, как показано здесь:

kali@kali:~# python3

Python 3.9.7 (default, Sep 24 2021, 15:17:02)

[GCC 10.3.0] on linux

Type "help", "copyright", "credits" or "license" for more

information.

>>> import nmap

>>>

Теперь вы можете создать новый объект с именем nmp для вызова функции PortScanner. Затем запустите новое сканирование для целевого IP-адреса 127.0.0.1 и портов от 1 до 50, как показано ниже:

>nmp = nmap.PortScanner()

>nmp.scan('127.0.0.1', '1-50')

Сканирование завершается и дает следующий вывод:

{'nmap': {'scanstats': {'uphosts': '1', 'timestr': 'Fri Sep 20 13:12:09 2022', 'downhosts': '0', 'totalhosts': '1',

'elapsed': '1.06'}, 'scaninfo': {'tcp': {'services': '1-50', 'method': 'syn'}}, 'command_line': 'nmap -oX - -p 1-50 -sV 127.0.0.1'}, 'scan': {'127.0.0.1': {'status': {'state': 'up', 'reason': 'localhost-response'}, 'hostnames': [{'type': 'PTR', 'name': 'localhost'}], 'vendor': {}, 'addresses': {'ipv4': '127.0.0.1'}, 'tcp': {22: {'product': 'OpenSSH', 'state': 'open', 'version': '7.7p1 Debian 4', 'name': 'ssh', 'conf': '10', 'extrainfo': 'protocol 2.0', 'reason': 'syn-ack', 'cpe': 'cpe:/o:linux:linux_kernel'}}}}}


Хотя предыдущий вывод является необработанным, он, безусловно, может быть отформатирован с использованием многих функций Python. После того, как вы запустили начальное сканирование, вы можете исследовать различные функции python-nmap для получения определенных деталей сканирования.

Friday 16 December 2022

NMAP как сканер уязвимостей.


Всем привет.

До сих пор вы знали возможности NMAP по сканированию и перечислению портов. Теперь вы увидите, как NMAP можно использовать для оценки уязвимости. Несмотря на то, что NMAP не такой всеобъемлющий, как сканеры уязвимостей, такие как Nessus и OpenVAS, он, безусловно, может обнаруживать основные уязвимости. NMAP делает это с помощью идентификаторов Common Vulnerabilities and Exposure (CVE). Он ищет подходящие CVE для служб, работающих на цели. Чтобы превратить NMAP в сканер уязвимостей, сначала необходимо загрузить и установить несколько дополнительных сценариев. 

Сначала вы переходите в каталог /usr/share/nmap/scripts, а затем клонируете две директории git:

cd /usr/share/nmap/scripts

git clone https://github.com/vulnersCom/nmap-vulners.git

git clone https://github.com/scipag/vulscan scipag_vulscan

ln -s pwd/scipag_vulscan /usr/share/nmap/scripts/vulscan

После можно скопировать vulscan.nse в /usr/share/nmap/scripts:

cp vulscan.nse /usr/share/nmap/scripts

После того, как вы загрузили необходимые сценарии, у вас все готово для их выполнения в отношении цели. Вы можете использовать команду: 

nmap -sV --script=vulscan.nse 192.168.1.3

для проведения первого сканирования.

На этом все.

Wednesday 14 December 2022

IPMI-функция мониторинга в Zabbix.

Всем привет.

IPMI (Intelligent Platform Management Interface) - интеллектуальный интерфейс управления платформой, предназначенный для автономного мониторинга и управления функциями, встроенными непосредственно в аппаратное и микропрограммное обеспечения серверных платформ. IPMI реализуется в виде отдельного контроллера сервера, который не зависит от операционной системы, BIOS, CPU севера и позволяет удаленно управлять физическим оборудованием.

Можно ли использовать функцию мониторинга IPMI в Zabbix? Можно, но предварительно надо выполнить несколько шагов по настройке IPMI, на примере НР iLO.

В НР iLO.

1. Создаем пользователя с правами администратора. С другими правами не работает (получим ошибки соединения IPMI в zabbix).

2. Активируем IPMI. По умолчанию он отключен.

В Zabbix.

1.  Нам нужно установить пакет IPMITOOL, чтобы сам Zabbix мог выполнять проверки IPMI. После используйте следующую команду, чтобы получить список доступных IPMI-датчиков на вашем устройстве iLO:

# ipmitool -I lanplus -H 192.168.1.220 -U admin -P adminpsw sensor


2. Обязательно установить StartIPMIPollers=5 в zabbix_server.conf. Перезапустить сервис Zabbix. У вас количество IPMI-полеров может быть другим.

Sunday 11 December 2022

Про Інтернет без електрики.

Всім привіт.

На жаль відключення електроенергії на тривалий час – наша нова буденність. Головне залишатися на зв`язку та бути просто онлайн: робота, рідні, друзі. Саме тому провайдери Інтернету вже навчилися  забезпечувати надання послуг доступу до мережі Інтернет навіть в умовах тимчасової відсутності електроенергії.

Наразі така можливість перевірена для тих хто отримує послугу Інтернет по ADSL (RJ11) та Fibre channel (GРОN) завдяки резервному живленню міжстанційного телекомунікаційного обладнання та пониженного електроспоживання самих кінцевих точок за технологією. Для тих хто отримує інтернет вітою парою (RJ45) з проміжного роутера який часто висить у підїзді будинку треба уточнювати у провайдера.

Що потрібно споживачу, щоб скористатися інтернетом під час зникнення світла? 

Зовсім небагато:

- мати заряджений ноутбук, смартфон, ПК з UPS. За необхідності для додаткової підзарядки можна використовувати різні пристрої безперебійного живлення.

- підключити пристрій, який забезпечує надання інтернет у вашій оселі (маршрутизатор, модем, оптичний термінал (медіаконвертор) тощо) до резервного електроживлення. Це стосується випадку коли ви протребуєте мати Інтернет так само по всій оселі як до зникнення світла. Про невелику перебудову схеми трохи згодом.

То ж для цього необхідно зробити такі кроки:

Friday 9 December 2022

Время современного ИТ-инженера.

Всем привет.

Чем замечательно наше время для ИТ-инженера? Прежде всего тем что для своего профессионального развития ему стали доступны многие тестовые полигоны бесплатно. Собрать свою мини-сеть с сервером, станциями и даже маршрутизаторами можно на своем домашнем компьютере в VirtualBox или GNS3, главное чтобы ОЗУ было побольше. Благо что в дисковом пространстве недостатка уже нет. Вот мой список виртуального оборудования в VirtualBox:


Что недоступно как виртаульный образ (у вас нет подписки), то можно пошупать на сайте самого производителя оборудования. Например Cisco. Уверен, небольшая регистрация вас не затруднит.

Вы же знаете что многие производители сетевого оборудования все больше склоннны к программируемым сетям, поэтому программная начинка их железа все больше напоминает мне хорошо кастомизированный Linux. А поддержка REST API и Python из коробки идет как must have!

ИТ-бренды сами заинтересованы чтобы с их оборудованием было знакомо как можно больше будущих специалистов и вам для своей карьеры надо использовать эту возможность уже сегодня.

Успехов всем нам!

Thursday 8 December 2022

Период кеширования в Outlook 365.

Всем привет.

Возвращаясь к теме кеширования в MS Outlook и общаясь с специалистами пришел к выводу что все таки лучше его оставить. Особенно сейчас когда пользуешся Office 365, но имеешь перебои с интернетом. Период кеширования ставим не менее месяца, можно три.


Остальное как на слайде. Успехов.

Saturday 3 December 2022

И волки сыты, и овцы целы!


Всем привет.

Играясь с полигоном ELK в качестве активного выявление угроз я обнаружил любопытную заметку. В ней говорилось что деятельность инфобеза в качестве охотников за угрозами можно уместить в 6 пунктов, заимствованных из отчета, опубликованного компанией Lockheed Martin (Eric M. Hutchins, Michael J. Cloppert, Rohan M. Amin, Ph.D., Intelligence-Driven Computer Network Defense Informed by Analysis of Adversary Campaigns and Intrusion Kill Chains, https://www.lockheedmartin.com/content/dam/lockheed-martin/rms/documents/cyber/LM-White-Paper-Intel-Driven-Defense.pdf):

  • Detect (oбнаруживать);
  • Deny (отказывать);
  • Disrupt (нарушать);
  • Degrade (ухудшать);
  • Deceive (обманывать);
  • Destroy (уничтожать).

Так вот по пункту Deny сообщалось следущее:

"этот пункт означает действия защитников, которые лишают злоумышленника объективного успеха. Примером может быть отказ в доступе к системным учетным записям, необходимым для горизонтального перемещения по рабочей среде. У автора была анекдотическая история. Однажды он анализировал сервис-респондер, который был занят в операционной деятельности предприятия. Злоумышленник активно похищал данные через канал, который должен был оставаться открытым для поддержки бизнес-операций. Все данные должны быть доступны, так что команда кибербезопасности оказалась в уязвимом и беспомощном положении. В качестве ответной меры они применили довольно своеобразную конфигурацию сети, чтобы вырезать случайное количество байтов из каждого случайного пакета в определенных файлах, которые направлялись к заведомо плохому месту назначения. И злоумышленник не смог восстановить украденные данные, потому что они были повреждены."

Тут я вспомнил свою историю, которая оказалась весьма похожа. Итак, руководящий орган поставил перед нашей бухгалтерией емкую задачу по сбору данных в сжатые сроки. Все бы ничего, но данные требовали консолидации со всей области, а это без малого 28 филиалов банка. Разумеется к часу Х данные были готовы на 90%, посылать непроверенные данные не хотелось, а нарушать сроки их подачи тем более. Над местным главбухом навис дамоклов меч. Они обратились к ИТ за помощью, т.е. ко мне.

Я решил что будет для всех правильно перевести ситуацию в чисто техническую - реализовать идею которая лишила бы руководство наверху рычага наказания нашего бухгалтера, хотя бы временно. Итак, я предложил взять готовые данные дополнить их  пустышкой до 100% и все красиво поместить в архив. В самом архиве был намеренно поврежден header чтобы архив не смог корректно распаковаться у адресата. И в таком виде файл был отправлен наверх. Разумеется адресат минут через 20 сообщил что архив (при пересылке?) был поврежден, срочно повторите отправку и т.д. Ай, я, яй, как же так... конечно сейчас  повторим. Вы уже поняли что за это время бухгалтерия дополучила недостающие данные, и уже новый но правильный архив бы "повторно" и торжественно отправлен адресату. 

Каюсь, но как говорится, остались и волки сыты и овцы целы!

Удачи.


Friday 2 December 2022

Шпаргалка - установка RDS.

Всем привет.

Сегодня для вас еще одна шпаргалка - установка роли RDS. Это самый простой способ поднять RDS-сервер. Итак:

1) Устанавливаем роль RDS.

2) Тип развертывания: быстрый запуск.

3) Сценарий: на основе сеансов.

4) Выбор сервера: этот сервер, если пул серверов не был сформирован ранее.

5) Разрешаем автоматичский ребут. Ждем окончания установки роли.

6) Проводим настройку сеансов RDS:

- коллекции/Quiсk Session Collection

- задачи/Изменить свойства


7) Добавляем (опубликовать) приложения в RemoteApp: Задачи/Опубликовать удаленные приложения RemoteApp. Все опубликованные из коробки удаляем, но я из стандартных всегда оставляю "Калькулятор" для теста.

Thursday 1 December 2022

USB-диск и хост Hyper-V.


Всем привет.

Уверенно написав вам в прошлый раз что проброс USB-дисков с хоста Hyper-V в ВМ есть немало инструкций в сети, я вчера случайно обнаружил еще одну фишку. Но по порядку...

Итак, вы вставили USB-диск в хост Hyper-V, перевели его в режим offline, кликнули на настройки ВМ, подсоединили там уже свободный диск и запустили саму ВМ. Есть, далее в самой ВМ находим это диск и переводим его в режим online. Отлично, наш USB-диск доступен.

Что дальше? Вот мы закончили с ним работать, теперь его надо благополучно извлечь. Ок, мы его опять переводим в режим offline в самой ВМ и... забираем его с собой.) 

ВМ не жалуется, потому что у нее забрали диск которым она уже не управляет, Hyper-V тоже не против, так как этот диск у него был offline. Все довольны, все работает.

А теперь фишка - ВМ будет себя чувствовать нормально до первой перезагрузки! Т.е. она просто не загрузиться. Почему? А дело в том что Hyper-V будет искать для ВМ тот самый диск который остался в настройках ВМ, но оказался у нас в кармане. И не найдя его выдаст ошибку и прекратит загрузку ВМ.



Поэтому не забывайте удалять диск и там тоже.

Удачи.

Saturday 26 November 2022

Шпаргалка - установка MS DPM.

Всем привет.

Сегодня для вас шпаргалка по установке MS DPM версии 2016. С одной стороны ничего сложного, а с другой на повторе я наступил на определенные нюансы. За основу была взята инструкция отсюда.

Требования к серверу Windows, особое внимание к версиям продуктов:

- PowerShell 5.0 или старше

- .NET Framework v3.5

- SQL Server 2016 (без SP-ков)

- SQL Server Management Studio v16.5.3

- открытые порты 443, 1433 и 1434

- DPM 2016.

Далее по шагам:

1) Create in AD SCDPM_SA  account with "Password never expired",  domain\SCDPM_SA  put in local admin group of DPM-server.

2) Ставим  .NET Framework v3.5

Dism /Online /Enable-Feature /FeatureName:NetFx3 /All

3) Установка SQL Server 2016:

+ Database Engine Services

+ Full-text and Semantic Extraсtion Services

+ Reporting Services Native

Instance ID as New value!

Account domain\SCDPM_SA , startup type - Automatic for:

  • SQL Server Database Engine
  • SQL Server Agent

SQL Reporting Services:

Collation SQL_Latin1_General_CP1_CI_AS

Authentication mode - Windows Authentication mode:

  • Current user
  • domain\SCDPM_SA 

4)  Установка SQL Server Management Studio v16.5.3 (this version only!)

Sunday 20 November 2022

Проброс USB устройств в Hyper-V.


Всем привет.

Одним из существенных недостатков Hyper-V перед другими гипервизорами (например, ESXi или Proxmox) являются отсутствие полноценной возможности пробрасывать USB устройства с хоста в виртуальные машины. Начиная с версии Hyper-V 2012 R2 появился ряд изменений, касающихся возможностей USB Passthrough, однако этот функционал все еще уступает возможностям конкурентов. 

Под термином USB passthrough понимается возможность проброса USB устройства из хостового гипервизора в виртуальную машину. С помощью USB passthrough вы можете прокинуть внутрь ВМ токен, USB ключ, модем или любое другое оборудование, подключенное через USB порт.

Плохая новость в том, что в Hyper-V нет нормальной поддержки проброса USB устройств, вы не сможете пробросить любое USB устройство с физического хоста в виртуальную машину. Есть несколько встроенных возможностей использования USB устройства в Hyper-V, но у всех них есть существенные ограничения. 

На сегодня можно использовать следующие технологии для проброса USB устройства в Hyper-V:

  • проброс USB дисков с хоста Hyper-V;
  • расширенные возможности консоли Hyper-V - Enhanced Session Mode;
  • проброс USB устройства через RDP сессию;
  • использование программного/аппаратного средства для проброса USB по сети (USB over IP).

Последний сценарий предполагает использование сторонних решений для реализации USB over IP. Это может быть сетевой USB хаб, программное решение по пробросу USB устройства через TCP/IP сеть с другого сервера. Большинство популярных коммерческих решений - платные (AnywhereUSB, DigiUSBAW). Из бесплатных можно отметить VirtualHere USB (бесплатна для одного ключа и одного сервера) и довольно старый opensource проект usbip.sourceforge.net (серверная часть реализуется на Linux, на Windows ставится клиент).

По проброс USB дисков с хоста Hyper-V есть немало инструкций в сети. Поэтому мы остановимся на пробросе USB устройств через Enhanced Session Mode в Hyper-V.

Saturday 12 November 2022

Видеть изменения в документе.

Всем привет.

С введением в моду облаков многие документы  стали общими, и не только на просмотр, но и на правку. Как по мне самым важным в этом случае для меня будет наглядно узнать что менялось без меня, т.е. какой пользователь внес изменения и какие.

Есть такая фишка, и выглядит в MS Excel 365 она просто как "Показать изменения" на вкладке "Рецензирование". Полагаю что в  MS Word 365 это выглядит аналогично.



Т.е. кликаете ее и справа вычитываете кто, где и что менял. Наглядно? Не очень, но это лучше чем ничего. Я уверен что это дело привычки.


Имейте ввиду что эта функция доступна если документ общий, т.е. права на его изменения даны больше чем одному пользователю.

Успехов.

Friday 11 November 2022

Используем PSWindowsUpdate.

Всем привет.

В PowerShell есть такой замечательный модуль PSWindowsUpdate, который предназначен для управление обновлениями Windows. Его можно и нужно использовать для управления обновлениями Windows-хоста из командной строки. Модуль PSWindowsUpdate не встроен в Windows и доступен для установки из репозитория PowerShell Gallery.  PSWindowsUpdate позволяет администраторам удаленно проверять, устанавливать, удалять и скрывать обновления на рабочих станциях и серверах Windows. 

Модуль PSWindowsUpdate особо ценен при использовании для управления обновлениями в Core редакциях Windows Server (в которых отсутствуют графический интерфейс), а также для хостов которые по технологическим причинам не подчиняются корпоративным GPO.

Собственно вы его можете установить на хост при наличии интернета:

Install-Module -Name PSWindowsUpdate

Если интернет недоступен то просто скопировать с другого хоста папку PSWindowsUpdate куда он был установлен ранее и выполнить импорт:

Import-Module PSWindowsUpdate

Список доступных командлетов модуля можно вывести так:

get-command -module PSWindowsUpdate


Назначение команд модуля:

Clear-WUJob – использовать Get-WUJob для вызова задания WUJob в планировщике;

Download-WindowsUpdate (алиас для Get-WindowsUpdate –Download) — получить список обновлений и скачать их;

Get-WUInstall, Install-WindowsUpdate (алиас для Get-WindowsUpdate –Install) – установить обвновления;

Hide-WindowsUpdate (алиас для Get-WindowsUpdate -Hide:$false) – скрыть обновление;

Uninstall-WindowsUpdate -удалить обновление с помощью Remove-WindowsUpdate;

Add-WUServiceManager – регистрация сервера обновления (Windows Update Service Manager) на компьютере;

Enable-WURemoting — включить правила Windows Defender файервола, разрешающие удаленное использование командлета PSWindowsUpdate;

Get-WindowsUpdate (Get-WUList) — выводит список обновлений, соответствующим указанным критериям, позволяет найти и установить нужное обновление. Это основной командлет модуля PSWindowsUpdate. Позволяет скачать и установить обновления с сервера WSUS или Microsoft Update. Позволяет выбрать категории обновлений, конкретные обновления и указать правила перезагрузки компьютера при установке обновлений;

Friday 4 November 2022

Старые сайты с Adobe Flash.

Всем привет.

Время от времени у меня есть необходоимость по просмотру старых web-сайтов где многое было сделано по технологии Adobe Flash. Сам когда-то их налепил с десяток. Разумеется сейчас никакой web-браузер ее не поддерживает.

Также не открываются web-сайты, например iLO 3, контент которых заточен на старые алгоритмы шифрования и тогда я имею ошибку типа ERR_SSL_VERSION_OR_CIPHER_MISMATCH. Здесь пока еще возможен выход с использованием Internet Explorer версии 11. Весьма временное решение ибо в Wndows 11 его уже нет, а предлагаемый режим совместимости в Edge иногда не спасает от пустого экрана.

Какой же выход? Да самый простой. Он подходит для решения обоих проблем - я создал виртуалный хост с Windows ХР и доставил туда браузер Chrome 15-й версии. Почему 15-я версия или ХР?


Критерий был следующим - и ОС и браузер не должны иметь официальных обновлений! И все, теперь я могу смело открыть то чем современные версии Chrome или Edge брезгуют.

Успехов!

Wednesday 2 November 2022

Convert Windows Image.


Всем привет.

Есть на TechNet интересная утилита Convert-WindowsImage, умеющая преобразовывать установочные образы в файлы виртуальных жестких дисков. Convert-WindowsImage.ps1 - это скрипт PowerShell, который конвертирует установочный образ диска из формата WIM или ISO в формат Virtual Hard Disk. В результате работы скрипта из дистрибутива Windows получается готовый VHD с установленной операционной системой, который можно использовать для создания виртуальной машины или для загрузки обычного компьютера.

Развернутая таким способом ОС будет находиться в таком же состоянии, как после применения образа и первой перезагрузки в ходе обычной установки. Такой же эффект получается после обработки (Generalize) уже установленной системы утилитой Sysprep. То есть, после первой загрузки системы вам придётся пройти процедуру начальной настройки (Out Of Box Experience, OOBE).

Convert-WindowsImage является развитием другой утилиты - WIM2VHD, однако имеет несколько существенных отличий:

• утилита переписана на языке PowerShell (WIM2VHD использовала JScript);

• добавлена поддержка виртуальных жестких дисков формата VHDX;

• добавлена возможность работы с образами ISO;

• добавлен графический интерфейс (есть информация что GUI более не поддерживается).

Convert-WindowsImage имеет несколько предварительных требований к версиям операционной системы:

• утилита может быть запущена только на Windows Server 2012 и выше. 

• утилита может конвертировать установочные образы следующих операционных систем: Windows 10, Windows Server 2012 и выше. 

Примеры использования Convert-WindowsImage.

Для запуска Convert-WindowsImage необходимо скопировать файл Convert-WindowsImage.ps1 на компьютер и изменить политику выполнения скриптов на RemoteSigned.

Пример 1:

Создаем в папке E:\VHD виртуальный диск Win8.vhdx из образа установочного диска E:\ISO\Windows 8\windows8.iso. Задаем формат диска VHDX, тип динамический и размер 25Гб:

.\Convert-WindowsImage.ps1 -SourcePath E:\ISO\Windows 8\windows8.iso

-VHDPath E:\VHD\Win8.vhdx -VHDFormat VHDX -VHDType Dynamic -SizeBytes 25GB


Saturday 22 October 2022

Обновляем недоменные сервера через WSUS.

Всем привет.

В любой компании где есть AD случается что несколько серверов ведут себя обособленно, т.е. в домене не участвуют по технологическим причинам. Но, как говорится, обновляться все равно надо.

Самый простой выход - указать им в качестве источника апдейтов то же внутренний WSUS-сервер компании. Он не будет против).

Это можно сделать через локальнyю политику gpedit.msc:


  

А можно одним кликом накатить те же значения с помощью уилиты secedit:

secedit /validate UpdateAlone.inf

secedit /configure /DB UpdateAlone.sdb /CFG UpdateAlone.inf /LOG UpdateAlone.log

где шаблон UpdateAlone.inf содержит следующее:

Thursday 20 October 2022

Конвертация vmdk в vdi-формат.

Всем привет.

Сегодня я покажу, как быстро сконвертировать файл виртуальной машины в формате VMWare (файл vmdk) в формат Oracle VirtualBox (vdi - VirtualBox Disk Image). Этот метод покажет вам как можно без лишних сложностей запустить виртуальную машину, созданную в среде VMWare на компьютере с установленным VirtualBox.

Но вначале небольшое отступление. Мне настоятельно рекоменадовали использовать для таких целей StarWind V2V Converter

StarWind V2V Converter is a free software for cloning and transforming VMs from one format to another, as well as converting physical machines into virtual ones. It is utilized when migration or Hypervisor Switch is required. Compared to the typical converters built into hypervisors, StarWind V2V Converter / P2V Migrator offers bi-directional conversion between all the major VM formats: VMDK, VHD/VHDX (Windows Repair Mode aware), QCOW2, and StarWind native IMG.

Хотя это инструмент бесплатен и не имеет в своем списке vdi-формата, тем не менее мне захотелось его попробовать на своих vmdk-файлах. А результат на первом же шаге был таков:


Как говорится "ну не смогла я". Поиск решения в сети чаще приводил к тому что перед конвертацией в vmdk-файле не должно быть контрольных точек (snapshot) и виртуальная машина должна быть выключена (shutdown). В соблюдении обоих требований я был уверен на 99%.

Не долго думая, я вернулся к Oracle VirtualBox. А здесь все оказалось намного проще -  берем наш vmdk файл виртуальной машины и запускаем на нем с правами Администратора встроенную утилиту VBoxManage с параметром clonehd для создания копии файла данных виртуальной машины с преобразованием его из формата VMDK в VDI:

"C:\Program Files\Oracle\VirtualBox\VBoxManage" clonehd --format VDI "E:\Virtual\WinXPZverCD\Windows XP Professional.vmdk" C:\VM\WinXPZverCD.vdi

Через пару минут имеем новый файл WinXPZverCD.vdi на котором в VirtualBox нужно создать новую виртуальную машину с подключенным к ней указанного vdi-диска.

Это все. Удачи!

Tuesday 18 October 2022

Близкий враг.

Всем привет. 

Сегодня имею для вас еще одну почемучку. Возможно зайдет не всем.

Генерация дубля SIM-карты прошла за считанные минуты, и Вероника поспешила домой чтобы вставить ее в свой старый телефон. Старый Samsung прослужил ей верой и правдой многие годы, пока она не получила в подарок смартфон. Но... хорош был подарок, да не мой. Позавчера  это новое чудо было благополучно посеяно то ли в парке, то ли в трамвае...  эх. Старый Samsung весело включился, обрадовавшись перерыву в своем временном забвении, подхватил новую карту и перешел в режим ожидания. Вероника тут же решила проверить свой номер, и набрала его с проводного телефона... 

Послышались гудки вызова, но к ее удивлению, Samsung все еще молчал. Где-то в районе десятого гудка ее терпение уже иссякло и она решила положить трубку...

- Я вас слушаю,- раздалось в телефоне.

- О, я так рада, что мой телефон наконец-то нашелся,- ее неподдельная радость была в каждом ее слове.

- Телефон? - в ответ прозвучало слабое удивление абонента, - нашелся?!

- Ну да, я же говорю с Вами, значит он нашелся! - продолжала радоваться Вероника.

- Простите, я Вас не понимаю, у нас телефон уже два года, еще до войны, а вы говорите что он нашелся...,- недоумение абонента было так же искренне.

- Ну как же "два года"?! Я его потярала три дня тому, а вчера восстановила номер, ...минутку, как  это? - Вероника слегка растералась.

- Ммм, девушка, я же говорю Вам, номер телефона который вы якобы нашли у нас уже два года. Скорее всего вы просто ошиблись номером. Всего хорошего.

- Погодите погодите, не ложите трубку,...- Вероника была в замешательстве, - вы пользуетесь моим, простите,  этим номером уже два года?! - она глянула на Samsung, который показывал что ее номер сейчас активен. - Ок, возможно  это неправильный дубль симки, но... ладно, но сам телефон вы мне можете вернуть?

- Простите, вернуть телефон? Вы про что  это? Я же Вам четко обьяснила  этот номер у нас с... - наступила пауза., - и что за глупость? Зачем Вам наш телефонный аппарат? 

- Ваш? Послушайте, может вам и все равно, но на моем телефоне было много важной для меня информации: фото, переписка, контакты друзей, и я бы не хотела чтобы.., - Вероника с трудом подбирала слова, - Вы же должны понимать что телефон для человека  это очень важно. Особенно  это важно сегодня, когда идет война.

- Простите, Вы серьезно?, - непроизвольная пауза, - Хотите чтобы я поверила что в нашем аппарате, который висит в прихожей есть какая то ваша информация, и поэтому я должна его отдать Вам? Для вас какой год на дворе?! Все, вы мне надоели со своими дурацкими шутками, я ложу трубку. - последовал ответ.

- Двадцать второй уже. - грустно произнесла Вероника слабо надеясь на понимание с той стороны.

Thursday 13 October 2022

Сканируем Mikrotik RouterOS.

Всем привет.

Вы знаете, Microsoft иногда выдает на гора полезные штуки. Давненько так я писал вам про их кофе. А вчера узнал что Microsoft приложила руку к диагностике Mikrotik RouterOS на уязвимости.

Обьяснялось это тем что сам Mikrotik не прилагает достаточных усилий к безопасности своей RouterOS. Поэтому, мол, за все это время RouterOS, особенно старые ее версии, накопили достаточно дыр. Как их латать и чем это вопрос к разработчику, ну а Microsoft ограничилась бесплатным инструментом RouterOS Scanner.

Что же этот сканер может выявить:

  • get the version of the device and map it to CVEs
  • check for scheduled tasks
  • look for traffic redirection rules
  • look for DNS cache poisoning
  • look for default ports change
  • look for non-default users
  • look for suspicious files
  • look for proxy, socks and FW rules.

Как это работает? В принцпе все просто, делаем клон репозитория, запускаем виртуальное окружение в Python и щупаем нашу Mikrotik RouterOS.

Вывод сканера включает 3 раздела для каждого теста:

  • raw data - данные, которые мы ищем.
  • suspicious - CVE, которые мы обнаружили как подозрительные, должны быть проверены, являются ли они законными или вредоносными.
  • recommendation - обнаруженные нами слабые места в безопасности и рекомендации по их устранению.

Для локального теста я развернул RouterOS v5.26 прямо в VirtualBox. 

Friday 7 October 2022

ESXi - переназначение VMFS.

Всем привет.

Если вы присоединяете клонированный вложенный сервер ESXi к vCenter, а хосты ESXi  содержат локальное хранилище данных, вы не сможете добавить хосты ESXi в тот же центр обработки данных или кластер. Причина этой проблемы заключается в том, что клонированный хост ESXi будет иметь повторяющийся UUID VMFS на клонированных хостах ESXi. Нам нужно выполнить повторное назначение метки тома VMFS, чтобы решить эту проблему. 


Давайте рассмотрим пошаговую процедуру, как выполнить повторную подпись хранилища данных в клонированном Nested ESXi.

1. Жмем "Alt-F1" для входа в консоль ESXi.

2. Переведим хост ESXi в режим обслуживания:

esxcli system maintenanceMode set -e true

Thursday 6 October 2022

Справка про RAID.


Всем привет.

Сегодня cправка про RAID. RAID-массивы (Redundant Array of Independent Disks, избыточный массив независимых дисков) необходимы для построения отказоустойчивых систем. Существуют классические типы массивов (от 0 до 6), комбинированные (1+0, 5+0, 6+0), нестандартные (1E, 5EE, DP, TEC).

RAID 0 – массив дисков с поочередной записью данных на них. Это повышает быстродействие чтения/записи, но нет надежности, так как избыточность данных отсутствует. Минимальное количество дисков – 2, выход из строя любого диска ведет к разрушению всей RAID-группы. Использование массива RAID 0 не предназначено для критически важных приложений, хорошо подходит для создания и редактирования видео и изображений.

Допустимый отказ - 0.

RAID 1 – так называемое "зеркало". Запись информации происходит одновременно на все диски массива, копируя друг друга. В этом случае достигается высокая надежность, однако снижается быстродействие. Наиболее частым сценарием является зеркалирование двух системных дисков серверов, яркий пример – контроллеры домена.

Допустимый отказ - 1 диск.

Минимальное количество дисков – 2. 

RAID 2, 3, 4 – уже почти не применяются из-за невысокой производительности и необходимости выделять дополнительно дисковую емкость под хранение кодов четности (контрольных сумм). Не могут конкурировать с другими, более совершенными RAID-группами, поэтому почти не используются.

RAID 5 – вся информация и контрольная сумма поочередно записываются на все диски массива, а в случае сбоя проблемный диск заменяется другим. RAID 5 обеспечивает высокую скорость чтения. Типовым сценарием является использование в серверах в области хранения данных для пользовательских приложений и выполнения транзакций. 

Допустимый отказ - 1 диск.

Минимальное количество дисков – 3. 

Saturday 1 October 2022

Готуємо нараду в Teams.

Всім привіт.

Якщо вже вам випала така честь організувати корпоративну нараду в Teams, то наступні поради вам будуть у нагоді. Розглянемо схему по який мені доводилось працювати: маємо ПК Studio для президії в залі нарад та ПК Модератора, проектор транслює екран ПК модератора на великий екран: це або презентація, або Teams, або web-камера модератора. Доцільність використання великого екрану та проектора в цій схемі сумнівна, але змінити думку щодо цього у мого шефа мені поки не вдалося. 


То ж готуємо наступне:

1) На обох ПК впевнетись що зовнішнІ пристрої (камера,мкф та колонки) належать саме до MS Teams.

2) На обох ПК впевнетись що MS Teams та Windows мають останні оновлення (щоб не почалося термінове оновлення під час наради).

3) Модератор може мати навушники (не колонки!) для контролю якості звуку в MS Teams.

4) В форматі «Нарада» модератор висилає поштою запрошення всім учасникам за угодженим списком, також додає постійних VIP-членів навіть якщо вони не планують приймайти участі: директор, корпоративні ЗМІ, шеф. Потім буде меньше проблем з передачєю відеозапису наради охочим.

5) Всі запрошені мають перевірити в себе наявність останньої версії MS Teams за день до наради. Саме за день, інашке не встигнуть під'єнатися, оновитися тощо. Маю таких забудькуватих періодично.

6) Відеозапис наради проводить виключно модератор! Будь які спроби перехопити цю функцію іншим учасником присікати на корню.

7) Модератор може мати лазерну вказівку якщо презентація на великому екрані потребує такої функції. Краще відмовитись від цього архаізму, бо за моїм баченням презентацію повинен вести доповідач, а не модератор.

8) Модератор може вести чат Teams в форматі «Підняти руку» якщо це узгоджено заздалегідь з усіми запрошеними (потребує дотримання протоколу наради усіма учасниками).

Ось здається і усе. Успіхів та терпіння всім.

Україна переможе!

Wednesday 21 September 2022

Удаленно включить RDP в Windows.


Всем привет.

Иногда случается что на удаленном хосте забыли включить RDP. Это можно поправить не бегая к нему лично, т.е. вы можете удаленно включить RDP на любом компьютере Windows. Но для этого у вас должен быть удаленный доступ к целевому компьютеру (через PowerShell или WMI) и ваша учетная запись состоять в группе локальных администраторов на целевом компьютере.

В принципе все сводится в правке ключа реестра  fDenyTSConnections на целевом компьютере RemHost.

Это понятно? Тогда приступим. Выполним настройку RDP удаленно из командной строки с помощью встроенной утилиты sc (позволяет создавать, управлять или удалять службы Windows):

sc \\RemHost config RemoteRegistry start=demand

sc \\RemHost start RemoteRegistry

Затем на своем компьютере:

  • запустите редактор реестра regedit.exe
  • выберите в меню Файл пункт Connect Network Registry (Подключить сетевой реестр)
  • укажите имя RemHost или IP адрес удаленного компьютера, на котором нужно включить службу RDP;
  • перейдите в раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server;
  • найдите параметр fDenyTSConnections (тип REG_DWORD). Если данный ключ отсутствует – создайте его. 
  • измените его значение на 0, чтобы включить RDP.

Для отключения RDP доступа нужно изменить значение fDenyTSConnections на 1.

Сразу после этого без перезагрузки удаленный компьютер должен стать доступным по RDP.

Friday 16 September 2022

Супер-ножницы Windows 11.

Всем привет.

Как и ожидалось, в Windows 11 инструмент «Ножницы» находится в списке удаленных функций. Пользователи ПК, недавно обновившиеся до Windows 11 с Windows 10, могут заметить, что старый инструмент "Ножницы" отсутствует и недоступен - это связано с тем, что старый инструмент "Ножницы" был заменен на Snipping Tool (Ножницы) плюс Snip & Sketch, т.е. два в одном. С итоговым названием... "Ножницы"!


Замечательно, но не совсем. У меня новые "Ножницы" работают в два раза медленнее старых, да и половина функций в наборе мне оказалась не нужна. Поэтому встала задача вернуть те "Ножницы" что попроще. Как? 

Не надо искать никаких умных инструкций на пол экрана, все оказалось проще простого - находим Windows 10 и: 

  • в  \Windows\System32 берем SnippingTool.exe, 
  • в \Windows\System32\en-US берем SnippingTool.exe.mui.
И ложим все это в нашу Windows 11 по тем же папкам. Это все. Можно использовать старые "Ножницы" запуском с ярлыка SnippingTool.exe.

Всем удачи.

Thursday 15 September 2022

Блокируем SCCM Remote Control.

Всем привет.

Применение SCCM Remote Control в работе службы технической поддержки имеет свои плюсы. Главным преимуществом перед тем же RDP-соединеием является возможность подосединиться удаленно в сеанс пользователя и наглядно лицезреть и решать проблему последнего.

Однако, как оказалось, в этом же и его опасность для пользователя. Ибо SCCM Remote Control не требует подтверждения на подсоединение, т.е. спецалист ТП может это сделать в самый "неудобный" момент либо же в момент когда пользователь зевнул и отошел на кофе от своего пк не заблокировав рабочий стол.

В моей ситуации я использую свой ПК для административных задач в нашем домене и считаю что такой вариант со стороны ТП к моему ПК просто недопустим даже случайно. Так как на обоснование подобных опасений к службе инфобеза заняло бы много времени и красивой переписки, то я решил обезопасить себя сам.

Первое - как мы знаем удаленный помошник SCCM Remote Control использует порты:

Console SCCM -> Client tcp 2701,3389 udp 3389

Поскольку 3389-й порт нужен для RDP его мы блокировать не будем, а нацелимся на порт 2701.

Второе - править правила штатного фаерволла Windows я тоже не стал, ибо они часто попадают под политики того же инфобеза и мои локальные запреты дожили бы максимум до следующего gpupdate.

Wednesday 14 September 2022

Установка .NET Framework v3.5 в Windows Server.


Всем привет.

Довольно много приложений для своей работы в Windows Server или Windows 10 требуют наличия предустановленного .NET Framework 3.5 несмотря на наличие в системе .NET Framework более высоких версий. К примеру, без .Net 3.5 вам не удасться установить и запустить SQL Management Studio. Такой вот загадочный Microsoft. Ну что ж, будем выкручиваться.

Если на вашем Windows Server есть прямой доступ в Интернет, вы можете установить .NET Framefork 3.5 несколькими способам:

  • через Server Manager;
  • с помощью DISM: DISM /Online /Enable-Feature /FeatureName:NetFx3 /All
  • с помощью PowerShell: Install-WindowsFeature NET-Framework-Core

При этом все необходимые файлы .NET 3.5 для вашей версии Windows Server загружаются с серверов Windows Update. Чтобы сработал этот метод установки нужно убедиться в:

  • сервер не настроен на локальный WSUS сервер для получения обновлений (проверьте настройки обновлений в групповых политиках или напрямую в реестре: REG QUERY "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" -v WUServer)
  • настройки прокси-сервера и файервола не должны ограничивать доступ к серверам Windows Update.

Если с вашего сервера нет прямого доступа в Интернет (что есть правильно), то при попытке установить .NET 3.5 в Windows Server через консоль Server Manager (Add Roles and Features -> Features -> Net Framework 3.5 Features, установка заканчивается с ошибкой 0x800f081f (The source files could not be found) или 0x800F0950.

Хотя .NET Framework 3.5 присутствует в списке компонентов Windows Server 2016/2019, на самом деле его бинарные файлы в хранилище компонентов Windows отсутствуют (концепция Features on Demand). Это сделано, чтобы уменьшить размер ОС на диске. Вы можете проверить наличие.NET Framework 3.5 в локальном хранилище компонентов Windows Server с помощью команды:

Get-WindowsFeature *Framework*

Обычно вы увидите статус компонента NET-Framework-Core для версии 3.5 как Removed.

Saturday 10 September 2022

Удаляем фантомные сервера из VMM.

Всем привет.

Сегодня хочу вам поведать как можно убрать из консоли SCVMM сведения о некорректно удаленных(мигрированных) HV-серверах. Например, в случае с одного из серверов виртуализации сняли роль Hyper-V, поставили чистую ОС и отдали под другие задачи, а из консоли VMM отключить забыли. Но это может произойти даже когда администратор  выполняет все штатно в самой консоли SCVMM. В результате чего получается такая картина:

Собственно, теперь с этим сервером, тот самый который pending, сделать ничего нельзя ни из GUI, ни из PowerShell. Если он просто перестал существовать и забыт в SCVMM, то его можно удалить так:

$VMM = 'hv04.forza.com'

$Name = Get-SCVMHost -ComputerName $VMM

Remove-SCVMHost -VMHost $Name -Force

Thursday 8 September 2022

Запуск внешней программы из PowerShell.

Всем привет.

Задача запустить из PowerShell какой либо исполняемый файл  (программу или утилиту командной строки) встречается достаточно часто. Последний раз я с этим столнкнулся бувкально на днях когда правил шаблон BGinfo. PowerShell предлагает для этого несколько различных способов, которые рассмотрим далее.

Я рассматриваю универсальный случай когда под внешнюю программу подставляют командный файл, уже из которого после можно вызвать что душа пожелает.

$exec = "d:\1st.cmd"

Секция прямого вызова:

.$exec

& $exec

cmd /c $exec


Секция  Invoke-командлетов:

Invoke-Expression -Command $exec

Invoke-Item -Path $exec

Invoke-Command -ScriptBlock {& $exec}

Wednesday 7 September 2022

Шифрование данных в PowerShell.

Всем привет.

С помощью PowerShell можно не только защитить конфиденциальные данные, но и использовать другие возможности командлетов, таких, как Invoke-Command или New-PSSession. Я покажу вам, насколько просто шифровать или дешифровать данные в PowerShell и как можно использовать зашифрованные данные для создания данных учетных записей.

В PowerShell командлеты ConvertTo-SecureString и ConvertFrom-SecureString можно использовать для шифрования и дешифрования стандартной строки System.String в System.Security.SecureString.

Вот пример, когда строка шифруется и сохраняется в переменной:

data = "This is some extremely important data"

$encryptedData = ConvertTo-SecureString -String $data -AsPlainText

Если мы введем имя переменной, содержащей зашифрованную строку, то увидим ее тип System.Security.SecureString

Мы также можем расшифровать данные, хранящиеся в объекте System.Security.SecureString, следующим образом:

ConvertFrom-SecureString -SecureString $encryptedData -AsPlainText


Ремарка - это справедливо для Powershell версии 7.2+.

Sunday 4 September 2022

BGinfo и Powershell.

Всем привет.

BGInfo - это маленькая утилита входящая в состав всем известного пакета Sysinternals от Марка Русиновича. В ее задачи входит отображение на рабочем столе некой полезной системной информации. 

В качестве дополнительной опции она может черпать информацию из внутренних WMI-запросов и внешних VB-скриптов. Однако автор уилиты здесь незаслуженно обошел Powershell. Поэтому я сегодня вам покажу как это исправить. 

Логика моего решения проста - запустим Powershell из VBScript. В шаблоне BGInfo указываем вызов VB-скрипта, например файл 11.vbs, в котором и вызываем Powershell:


On Error Resume Next

Set objShell = CreateObject("Wscript.Shell")

Status = objShell.Exec("powershell.exe -ExecutionPolicy Bypass –Noprofile -Windowstyle Hidden -File test.ps1").StdOut.ReadAll()

Echo Status

Не забываем прочитать результат Powershell через ReadAll(), и передать его через эхо в саму BGInfo.

А вот скрипт Powershell test.ps1 должен возвращать максимально простой однострочный ответ, например такой:
$PSVersionTable.PSVersion.Major

Это все. Работает на ура. Кстати убирайте в Path все кроме имени вызываемого vbs-файла, так проще запускать утилиту с нового места, не надо будет каждый раз перестраивать шаблон.

Удачи.

Friday 2 September 2022

GUI с помощью Windows Presentation Foundation.

Всем привет.

Рациональным подходом к созданию GUI в Powershell будет случай когда декларативное описание графического интерфейса отделяется от остального кода исполнения. Такой подход обеспечивает технология Windows Presentation Foundation (WPF).

При использовании WPF графический интерфейс описывается с помощью бази­рующегося на XML языка разметки XAML (Extensible Application Markup Lan­guage). Таким образом, дизайн интерфейса отделяется от логики сценария, рабо­тающего с этим интерфейсом. Для работы с объектами WPF в PowerShell нужно загрузить сборку PresentationFramework:

PS C: \Users\xenial> Add-Type -AssemblyName PresentationFramework

Создадим сначала простейшее диалоговое окно без элементов размером 300x200 пик­селов и с заголовком "Форма WPF". На первом шаге с помощью here-string созда­дим строку $xaml с XML-разметкой, содержащей один тег <window/> с атрибутами Width, Height и Title, и преобразуем эту строку в объект XML:

PS С:\Users\xenial> [xml]$xaml = @"

<Window

xmlns="http: //schemas.microsoft.com/winfx/2006/xaml/presentation”

xmlns :x="http: //schemas.microsoft.com/winfx/2006/xaml"

        x:Name="Window" Тitle="Form WPF” Height=”200" Width=”300”

 />

"@

Версия на печать

Популярное