リモートのコンピュータを制御できるPSSessionはとても便利です。ただデフォルトではAdministratorsグループのユーザしかPSSessionを張ることはできません。
Administratorsグループ以外のユーザでPSSessionが可能になる設定を書きます。
もう少し細かく設定したい
もう少し細かく設定したい場合があれば以下の方法も使えます。
まず、PSSessionで利用したいユーザを作成したら(ここではtest01というユーザを作成しました)、PSSessionの設定コマンド(Set-PSSessionConfiguration)を実行します。
Set-PSSessionConfiguration Microsoft.PowerShell -ShowSecurityDescriptorUI
以下のプロンプトがでるので、Y(Yes)を入力します。
確認 この操作を実行しますか? 対象 "名前: Microsoft.PowerShell" に対して操作 "Set-PSSessionConfiguration" を実行しています。 [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"): y
以下のような権限設定の画面が出るので、作成したユーザにInvoke権限を割り当てます。
設定が終わり画面を閉じるとプロンプトでWinRMのサービス再起動を聞かれるのでY(Yes)を入力し、WinRMを再起動します。
確認 この操作を実行しますか? 対象 "名前: WinRM" に対して操作 ""Restart-Service"" を実行しています。 [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"): y
後はPSSessinが実際に作成できるかテストしてみます。サンプルスクリプトです。
$ipAddress = "192.168.1.1" $user = "test01" $pass = "passw0rd" $secPassword = ConvertTo-SecureString $pass -AsPlainText -Force $cred = New-Object System.Management.Automation.PSCredential($user,$secPassword) $psSessionOption = New-PSSessionOption -NoMachineProfile -SkipCACheck -SkipCNCheck -SkipRevocationCheck $session = New-PSSession -ComputerName $ipAddress -Credential $cred -UseSSL -SessionOption $psSessionOption
上記で作成したセッションを利用してリモートセッションを張ってみます。
Enter-PSSession -Session $session