Автоматизация WSUS через PowerShell

Я записал сценарий с намерением быстрого управления процессом WSUS, и у меня есть несколько вещей, которые я трудно кодировал в, но скорее получу с PowerShell. В частности, 'Целевые' группы для Одобряют-WsusUpdate.

В настоящее время я делаю что-то вроде этого:

#Select Target Group for Update Approval:

$TargetComputerGroups = "All Computers", "Unassigned Computers", "Clients", "Servers", "Test", "View Templates"

$UserPrompt = @"

Please select a Computer Group from the below options:

1) All Computers (Selects all of the below)
2) Unassigned Computers
3) Clients
4) Servers
5) Test
6) View Templates

Enter selection
"@

###Record user selection to varirable
$TargetComputerGroupTemp = Read-Host -Prompt $UserPrompt

###Convert their choice to the correct 0-index array value.
$TargetComputerIndex = $TargetComputerGroupTemp -1

$ComputerTarget = $TargetComputerGroups[$TargetComputerIndex]

Существует ли команда 'получать-целей', которая создаст массив доступных целевых групп? Таким образом, я мог удалить ручное объявление $TargetComputerGroups.

Кроме того, я хотел бы сделать $UserPrompt лучший набор кода (снова избегающий ручных объявлений). Я думаю, делая что-то как '$i for $i in $TargetComputerGroups' write-host 'Press 1 for i'

Однако я ОЧЕНЬ плохо знаком с этим, таким образом, я не знаю лучший способ сделать это (идеально отображение их выбора корректной группе в том операторе!).

7
задан 2 September 2015 в 23:53
2 ответа

Вы можете сделать это с помощью PowerShell, но на вашем компьютере должна быть также установлена ​​консоль администрирования WSUS.

Затем вы можете сделать следующее.

[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")

$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer(“wsus_server”,$False)

$wsus

Затем вы можете получить список целевых групп с помощью

$wsus.GetComputerTargetGroups()

Или выберите группу с помощью

$targetgroup = $wsus.GetComputerTargetGroups() | ? {$_.Name -eq "some target name"}

Более подробная информация содержится в Использование PowerShell для выполнения основных административных задач на WSUS , но приведенная выше информация предоставит вам информацию о группах.

10
ответ дан 2 December 2019 в 23:22

Как сказал Drifter104, доступного модуля PowerShell для управления WSUS пока нет, хотя он будет включен в следующий выпуск Windows Server ( https://technet.microsoft. com / en-us / library / hh826166.aspx ); тем временем вам необходимо импортировать сборку .NET для управления WSUS и использовать ее; одна из самых замечательных функций PowerShell заключается в том, что даже если она не включает собственные командлеты для выполнения данной задачи, у вас есть доступ к полной среде .NET из нее, и вы действительно можете делать все, что могли бы делать из Приложение .NET.

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

Write-Host Please select a Computer Group from the below options:

$i = 1

foreach($g in $TargetComputerGroups)
{
    Write-Host Press $i for $g
    $i++
}

$sel = Read-Host -Prompt "Enter selection: "
4
ответ дан 2 December 2019 в 23:22

Теги

Похожие вопросы