Invoke-Expressionを使用してオブジェクトと文字列変数を "Get-ADUser"コマンドレットに渡そうとしています。Powershellオブジェクトと文字列を呼び出し式に渡す
資格情報は、次のように構築されています:
if ($dc)
{
$newVar = " -server $dc"
}
if ($ou)
{
$newVar = $newvar + " -Serchbase $ou"
}
、最終的には、以下が
$AllADUsers = iex "Get-ADUser $newVar -Credential $($mycreds) -Filter * -Properties *" | Where-Object {$_.info -NE 'Migrated'}
実行されますが、それがもたらす:文字列は、追加のパラメータで構成されて
$secpasswd = ConvertTo-SecureString $pwd -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ($uid, $secpasswd)
その後、
資格情報ダイアログを開き、OKをクリックするだけでエラーが発生するGet-ADUser:パラメータ 'Credential'で引数を検証できません。引数がnullまたは空です。 nullまたは空でない引数を指定してから、コマンドを再試行してください。ラインで :1つの文字:54 +は、Get-ADUser SRV-V-hh001.bwg.corp -Credential System.Management.Automatio ... + ~~~~~~~~~~~~~~ -server ~~~~~~~~~~~~~ + CategoryInfo:InvalidData:(:) [取得-ADUser]、ParameterBindingValidationException + FullyQualifiedErrorId:ParameterArgumentValidationError、Microsoft.ActiveDirectory.Management.Commands.GetADUser
Iこれはiexが$ mycredsを文字列として解析しているためだと思いますが、これはPowershellにオブジェクトであることを伝える方法ですか?
パラメータとともに「Invoke-Expression」を使用する例については、https://stackoverflow.com/questions/26615658/calling-invoke-expression-with-parameters-in-powershellを参照してください。 –