MDTタスクシーケンス中にPowershell ADモジュールをインポートする


13

MDTタスクシーケンスの一部としてコンピューターの名前を変更するこの短いPowerShellスクリプトを作成しました。

Import-Module ActiveDirectory

$AdminUsername = 'domain.com\administrator'
$AdminPassword = 'password' | ConvertTo-SecureString -asPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList $AdminUsername, $AdminPassword              

$Domain = Get-ADDomainController DomainName domain.com -Discover -NextClosestSite
$Site = $Domain.Site
$DomainComputer = Get-WmiObject Win32_BIOS 
$Serial = $DomainComputer.SerialNumber
$Computername = $Site + "-" + $Serial

Rename-Computer -NewName $Computername -DomainCredential $cred 

MDTがこのタスクを実行すると、ローカル管理者として実行されます。ADモジュールをロードしようとすると、次のエラーが表示されます。

Warning: Error initializing default drive:  'The server has rejected the client credentials.'.

ドメイン管理者としてログインし、マシンのローカル管理者としてではなく、マシンからタスクシーケンスが終了した後、モジュールを正常にインポートできます。ドメイン管理者としてMDTタスクシーケンスを実行する方法、またはタスクシーケンス中にローカル管理者の権限を昇格する方法はありますか?

あなたが提供できる助けを事前に感謝します、

Mx

更新日:2015年10月13日

私はMDTスクリプト内でADモジュールを使用することをやめることにし、これを投稿した直後に、これを実現する別の方法を考案しました。ADモジュールでの私の結果は、せいぜい予測不可能でした。後世のためにここに投稿したかった。これを[状態の復元]> [カスタムタスク]フォルダーに、MDTタスクシーケンスの「Powershellスクリプトの実行」として追加し、その直下にコンピューターの再起動タスクを追加します。この1年で1600以上のクライアントを展開するのは魅力的でした。

$type = [System.DirectoryServices.ActiveDirectory.DirectoryContextType]"Domain"
$context = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext($type, "yourdomain.edu", "domainadmin", "yourpasswordhere")
$domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($context)
$DC = $domain.FindDomainController().Name
$Prefix = $DC.Substring(0,5)
$DomainComputer = Get-WmiObject Win32_BIOS 
$Serial = $DomainComputer.SerialNumber
$Computername = $Prefix + "-" + $Serial
$Password = "yourpasswordhere"
$Username = "yourdomain.edu\domainadmin"
$Computer = Get-WmiObject Win32_ComputerSystem
$Computer.Rename($Computername,$Password,$Username)

$AdminPasswordPSCredential ArgumentListに欠けていませんか?
マティアスR.ジェッセン14年

申し訳ありませんが、実際のスクリプトには含まれていますが、コピーアンドペーストでは省略されている必要があります。
Mxゴープリー14年

タスクシーケンスを実行していますCMDPowerShell?あなたは試すその後、PowerShellを実行している場合cmd:コマンドをpowershell PowerShellのボックスはのboot.wimビルド構成画面上で確認された場合にも、私はチェックして見ること
エリオット研究所LLCを

@MxGorply次のことを確認できます。1.状態の復元段階など、OSのインストール後にWindowsが起動した後、またはWinPEまたはOSが更新される前の段階でスクリプトが実行されていること。2.このステップを実行する前に、ドメインへの参加/再参加ステップをすでに実行しておきます。
バーニーホワイト

4
@MxGorplyああ、コマンドの実行に問題はありませんか?警告は、モジュールがインポートされると、有効でない現在の資格情報を使用して自動的にバインドしようとするため、これが予想されるためです。コマンドが実行されている場合、資格情報を提供する前に警告を心配します。-WarningAction SilentlyContinueimport-moduleコマンドでメッセージを抑制するために使用できます。
バーニーホワイト14年

回答:


1

ドメインユーザーとしてログオンしていない場合は、PSDriveを明示的にインスタンス化し、そこから* -AD *コマンドを実行する必要があります。

Import-Module ActiveDirectory -WarningAction SilentlyContinue
New-PSDrive -Name AD -PSProvider ActiveDirectory -Server <your DC> -Root //RootDSE/ -Credential $cred
Set-Location AD:
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.