2012年12月23日日曜日

Powershellでドメイン内のクライアントに対してグループポリシーを更新する

  • このエントリーをはてなブックマークに追加


グループポリシーを更新するには、gpupdateユティリティを使います。既定ではgpupdateはコンピューターの構成、ユーザーの構成両方を更新します。コンピューターの構成のみを更新する、またはユーザーの構成のみを更新する時に、/targetオプションをつけます。

コンピューターの構成の更新
PS C:\Users\Administrator> gpupdate /target:computer
Updating Policy...

Computer Policy update has completed successfully.


ユーザーの構成の更新
gpupdate /target:user

既定ではgpupdateは変更された設定しか更新しません。すべての設定を強制的に更新するには、/forceオプションを使用します。

PS C:\Users\Administrator> gpupdate /force
Updating Policy...

User Policy update has completed successfully.
Computer Policy update has completed successfully.

 

これからPowershell3.0でドメイン内のクライアントに対してグループポリシー更新をご紹介します。

Step 1:ドメイン内のクライアントオブジェクトを取得する。

ここでGet-ADComputerコマンドを使います。Get-ADcomputerコマンドはActive Directoryモジュールに含まれています。RSATツールからActive Directoryモジュールをインストールできます。

$clientPC = Get-ADComputer –Filter *

 

Step 2:クライアントごとに、Powershell リモートセッションを作成する。

New-PSSessionコマンドでセッションを作成します。

$credential = Get-Credential test\administrator

$session = New-PSSession –ComputerName $clientPC.name –Credential $credential

クライアントがオフラインになっている時に、以下のようなエラーメッセージが表示されます。

New-PSSession : <pc name> Connecting to remote server <pc name> failed with the following error message : The WinRM client cannot process the request because the server name cannot be resolved.

オンラインしているクライアントのセッションが成功しているので、エラーを無視していいです。

 

Step 3:リモートクライアントでgpupdateコマンドを実行する

Invoke-Commandを使います。確率されたセッションごとにScriptBlock内のコマンドを実行します。

Invoke-Command -Session $session -ScriptBlock {gpupdate /force}

 

Step 4:コマンドの実行結果を確認する。

グループポリシーが正しく更新された場合、システムイベントログにEvent 1502が出力されます。Get-EventLogコマンドで確認できます。

Invoke-Command -Session $session -ScriptBlock {Get-EventLog -LogName system -InstanceId 1502 -Newest 1

Windows PowerShell ポケットリファレンス (POCKET REFERENCE)
牟田口 大介
技術評論社
売り上げランキング: 241,533

この記事がお役にたちましたらシェアをお願いします:)

  • このエントリーをはてなブックマークに追加

1 件のコメント:

  1. すいません、ComputerNameやclientPC.nameは、クライアントの情報をいれる箇所でしょうか。。

    返信削除