Сбор данных о ПК в домене с помощью 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) перейдите во вкладку данные текст по столбцам, разделитель запятая.

 

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

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

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

© 2018 FIL