Bir nesne ve bir dize değişkeni "Get-ADUser" komutuna Invoke-Expression kullanarak iletmeye çalışıyorum.Powershell Geçiş ifadesi için Nesne ve Dize Geçme
kimlik böyle inşa edilir:
if ($dc)
{
$newVar = " -server $dc"
}
if ($ou)
{
$newVar = $newvar + " -Serchbase $ou"
}
ve son olarak aşağıdaki
$AllADUsers = iex "Get-ADUser $newVar -Credential $($mycreds) -Filter * -Properties *" | Where-Object {$_.info -NE 'Migrated'}
yürütülür fakat onun getirdiği: bir dize ilave parametreleri ile oluşur
$secpasswd = ConvertTo-SecureString $pwd -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ($uid, $secpasswd)
sonra
sadece 012'yi tıklatırsam kimlik iletişim kutusunu ve bir hatayı gidermekGet-ADUser: 'Kimlik Bilgileri' parametresindeki bağımsız değişken doğrulanamıyor. Argüman boş veya boş. Boş olmayan veya boş olmayan bir argüman sağlayın ve ardından komutu tekrar deneyin. satırında : 1 karakter: 54 +-ADUser alın -sunucu srv-v-hh001.bwg.corp -credential System.Management.Automatio ... + ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~ + CategoryInfo: InvalidData: (:) [Al-ADUser] ParameterBindingValidationException + FullyQualifiedErrorId: ParameterArgumentValidationError, Microsoft.ActiveDirectory.Management.Commands.GetADUser
I Bunun nedeni, iex'in bir dizge olarak $ mycreds'ı ayrıştırmasıdır, Powershell'e bunun bir nesne olduğunu söylemenin bir yolu var mıdır?
Parametrelerle 'Invoke-Expression 'kullanma örneği için bkz. Https://stackoverflow.com/questions/26615658/calling-invoke-expression-with-parameters-in-powershell. –