Я написал сценарий с намерением быстро управлять WSUS процесса, и у меня есть несколько вещей, которые я жестко запрограммировал, но предпочел бы использовать PowerShell. В частности, «Целевые» группы для Approve-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]
Есть ли команда "get-target", которая создаст массив доступных целевых групп? Таким образом я мог удалить ручное объявление $TargetComputerGroups
.
Кроме того, хотелось бы сделать $UserPrompt
лучший набор кода (снова избегая ручных объявлений). Я думаю делать что-то вроде '$i for $i in $TargetComputerGroups' write-host 'Press 1 for i'
При этом я ОЧЕНЬ новичок в этом, поэтому я не знаю, как лучше всего это сделать (в идеале сопоставить их выбор с правильной группой в этом утверждении!).
Вы можете сделать это с помощью 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, но приведенная выше информация даст вам информацию о группах.
Как сказал 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: "