SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

PSRemoting で AD を操作

leave a comment

OS の展開プロセスの中で、AD に OU やユーザーの作成が必要となることがあります。

その際の設定の覚書を。

PowerShell を実行する環境に Active Directory 用の PowerShell モジュールが追加されていれば、直接操作することができると思いますが、OS の初期状態ですと、モジュールが追加されていませんので、AD に PSRemoting で接続してコマンドレットを実行することになるかと思います。

# ADSI で直接ごにょごにょできるのかもしれませんが。

PSRemoting で操作を可能にするために以下のコマンドレット DC 上で実行して、リモートの操作を許可しておきます。

Enable-PSRemoting -Force
Set-Item wsman:localhostclienttrustedhosts * -Force

これでリモート操作が許可されます。

展開プロセスの最中だとワークグループのユーザーでコマンドを実行することになるかと思いますので資格情報を設定し、コマンド実行時にはその資格情報を使用するとよいかと。。

$sstr= ConvertTo-SecureString -String <パスワード> -AsPlainText -Force
$pscred = New-Object System.Management.Automation.PsCredential(<ドメインユーザー名>, $sstr)
$cred = Get-Credential -Credential $pscred
Invoke-Command -ComputerName <ドメインコントローラー> -Credential $cred -ScriptBlock {Get-ADDomain}

$sstr= ConvertTo-SecureString -String <パスワード> -AsPlainText -Force
$pscred = New-Object System.Management.Automation.PsCredential(<ドメインユーザー名>, $sstr)
$cred = Get-Credential -Credential $pscred
Invoke-Command -ComputerName <ドメインコントローラー> -Credential $cred -ScriptBlock {Get-ADDomain}

ドメインの管理者権限 (Domain Admins) を持っていない一般のユーザーだと権限が不足して以下のようなエラーになるかと思います。

[AlwaysOn-AD] リモート サーバー AlwaysOn-AD への接続に失敗し、次のエラー メッセージが返されました: アクセスが拒否されました。詳細については、about_Remote_Troubleshooting のヘルプ トピックを参照してください。

+ CategoryInfo : OpenError: (AlwaysOn-AD:String) [], PSRemotingTransportException

+ FullyQualifiedErrorId : AccessDenied,PSSessionStateBroken

この手の処理を実行するときは管理者ではなく操作に必要な権限を付与したユーザーで実行することになるかと思いますので、使用する資格情報のユーザーを AD の Builtin のコンテナーにある [Remote Management Users] グループのメンバーとして登録をしておきます。

これで、特定の資格情報を使用して、AD の操作ができるようになるかと思います。

操作する内容によって使用する資格情報のドメインユーザーに [Account Operators] の権限を付与したり、OU を作成するための権限を制御の委任で付与することで、特定の操作のみを許可するということができるかと。

Share

Written by Masayuki.Ozawa

11月 12th, 2013 at 8:21 am

Posted in PowerShell

Tagged with

Leave a Reply