Administrators以外のユーザでPSSessionによるリモート制御をする

リモートのコンピュータを制御できるPSSessionはとても便利です。ただデフォルトではAdministratorsグループのユーザしかPSSessionを張ることはできません。

Administratorsグループ以外のユーザでPSSessionが可能になる設定を書きます。

一番簡単な方法

Remote Management Usersグループに所属させるのが一番簡単な方法です。

もう少し細かく設定したい

もう少し細かく設定したい場合があれば以下の方法も使えます。
 


まず、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