Сбор данных о ПК в домене с помощью PowerShell

Начал изучать понемногу powershell, написал первый скрипт и для его запуска в домене необходимо произвести пару действий:

Первое это на пк  на котором планируется тестово запускать скрипт надо разрешить запуск скриптов, изначально эти возможности по умолчанию отключены и при запуске скрипта выдаст вот такую ошибку: Не удается загрузить файл <путь к вашему файлу>, так как выполнение скриптов запрещено для данной системы. Введите “get-help about_signing” для получения дополнительных сведений.

 

Посмотреть текущие настройки политики во всех областях применения можно выполнив командлет Get-Executionpolicy с параметром list.

get-executionpolicy -list

Значения политики.

Данная политика может принимать 6 значений:

Restricted (Политика выполняется по умолчанию. Например если во всех областях применения стоит значение Undefined)
— Допускает отдельные команды, но скрипты выполнять нельзя.
— Препятствует выполнению всех файлов скриптов, включая файлы форматирования и конфигурации (PS1XML), файлы скриптов модулей (PSM1) и профили Windows PowerShell (PS1).

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

RemoteSigned
— Выполнение скриптов разрешено.
— Требует наличия цифровой подписи надежного издателя у скриптов и файлов конфигурации, загружаемых из Интернета (включая электронную почту и программы мгновенного обмена сообщениями).
— Не требует наличия цифровых подписей у скриптов, выполняемых и написанных на локальном компьютере (не загруженных из Интернета).
— Имеется риск выполнения подписанных, но вредоносных скриптов.

Unrestricted
— Могут выполняться неподписанные скрипты. (Имеется риск выполнения вредоносных скриптов.)
— Предупреждает пользователя перед выполнением скриптов и файлов конфигурации, загруженных из Интернета.

Bypass
— Ничего не блокируется, и никакие предупреждения и запросы не появляются.
— Эта политика выполнения предназначена для конфигураций, в которых скрипт Windows PowerShell встроен в более крупное приложение, или для конфигураций, в которых Windows PowerShell является платформой для программы, у которой имеется собственная модель обеспечения безопасности.

Undefined
— В текущей области не задана политика выполнения.
— Если политика выполнения во всех областях имеет значение Undefined, действует политика выполнения Restricted, которая является политикой выполнения по умолчанию.

 

Области применения политики.

Областей применений пять:

MachinePolicy и UserPolicy задаются политиками AD или локальными политиками данного компьютера.
Process — область применения текущая ссесия. В справке говорится, что её значение хранится в переменной $PSExecutionPolicyPreference однако получить/изменить значение данной политики через переменную не удалось. Измения сделанные на эту область применения ни как не повлияют на другие сессии.
CurrentUser — область применения текущей пользователь. Её значение хранится в разделе реестра HKEY_CURRENT_USER («HKEY_CURRENT_USER\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\ExecutionPolicy»).
LocalMachine — область применения на всех пользователей текущего компьютера. Она хранится в разделе реестра HKEY_LOCAL_MACHINE(«HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\ScriptedDiagnostics\ExecutionPolicy»).

 

Выполняем команду для запуска локальных скриптов

Set-ExecutionPolicy remotesigned

далее нам необходимо установить модуль RSAT в нем содержится модуль для удаленного управления AD через PS

так же для работы скрипта необходимо в Брандмауэре добавить разрешающие порты. Я сделал это через групповую политику:

Конфигурация компьютера -> Политики -> Конфигурация windows -> параметры безопасности -> Брандмауэр Windows в режиме повышенной безопасности  -> Брандмауэр Windows в режиме повышенной безопасности  -> Правила для входящих подключений, создаем новое правило:

тип правила -> предопределенные(Инструментарий управления windows (WMI) автоматически предложит создать 3 правила. после создания правил необходимо зайти в каждое правило вкладка дополнительно и указать область применения правила, у меня стоит домен.

Создаем на диске C папку temp, в ней будут отчеты создаваться

ну собственно дошли до самого скрипта:

$Results = @()
$properties = [ordered]@{
"Name" = "";
"CapacityGB" = "";
"Speed" = "";
"Manufacturer" = "";
"SMBIOSMemoryType" = "";
}

ForEach ($computer in Get-ADComputer -Filter 'Name -like "EV*"')
{
Try
{
ForEach ($memInfo in Get-WmiObject Win32_PhysicalMemory -computerName $computer.name -ErrorAction Stop)
{
$object = New-Object -TypeName PSObject -Property $properties
$object.Name = $computer.name
$object.CapacityGB = $memInfo.Capacity/1GB
$object.Manufacturer = $memInfo.Manufacturer
$object.SMBIOSMemoryType = $memInfo.SMBIOSMemoryType
$object.Speed = $memInfo.Speed
$Results += $object | select *
}
}
Catch {}
}

$Results | ft -a
$Results | Export-CSV -Path C:\temp\export.csv -NoTypeInformation

Небольшое пояснение -Filter ‘Name -like “EV*”‘ ищет все ПК начинающиеся на EV, можете заменить на свое значение

После экспорта в файл export.csv все находится в одном столбце, можно разбить все по столбцам для этого (office  2010) перейдите во вкладку данные текст по столбцам, разделитель запятая.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Капча загружается...

© 2018 FIL