web-dev-qa-db-ja.com

PowerShellを介したWSUSの自動化

[〜#〜] 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-targets」コマンドはありますか?この方法で、$TargetComputerGroupsの手動宣言を削除できます。

さらに、$UserPromptをより良いコードセットにしたいと思います(ここでも手動宣言を避けています)。 '$i for $i in $TargetComputerGroups' write-Host 'Press 1 for i'のようなことをしていると思います

そうは言っても、私はこれが非常に新しいので、それを行うための最良の方法がわかりません(その選択をそのステートメントの正しいグループに理想的にマッピングします!)。

7
Abraxas

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
Drifter104

Drifter104が言ったように、WSUSの管理に使用できるPowerShellモジュールはまだありませんが、次のWindows Serverリリース( https://technet.Microsoft.com/en-us/library/hh826166)に含まれる予定です.aspx );一方、WSUSを管理するために.NETアセンブリをインポートして使用する必要があります。 PowerShellの最大の機能の1つは、特定のタスクを実行するためのネイティブコマンドレットが含まれていなくても、そこから完全な.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
Massimo