Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 脚本行在dc上工作,但在使用invoke命令时不工作_Powershell_Command_Invoke - Fatal编程技术网

Powershell 脚本行在dc上工作,但在使用invoke命令时不工作

Powershell 脚本行在dc上工作,但在使用invoke命令时不工作,powershell,command,invoke,Powershell,Command,Invoke,我有一个变量$user,其中存储了一个广告用户。 我想更改它的UPN。 如果我写在dc上: $user | set-aduser -UserPrincipalName bla@bla.bla 它很好用。 但如果我像这样使用invoke命令 Invoke-Command -Session $S -ScriptBlock {$using:ADUSER | set-aduser -userprincipalname bla@bla.bla} 我得到一个错误(假设$s是一个很好的会话,我在其他行中

我有一个变量$user,其中存储了一个广告用户。 我想更改它的UPN。 如果我写在dc上:

$user | set-aduser -UserPrincipalName bla@bla.bla
它很好用。 但如果我像这样使用invoke命令

Invoke-Command -Session $S -ScriptBlock  {$using:ADUSER | set-aduser -userprincipalname bla@bla.bla}
我得到一个错误(假设$s是一个很好的会话,我在其他行中使用它) 我的错误是:

无法将输入对象绑定到该命令的任何参数,因为该命令不接受管道输入或输入及其参数 属性与接受管道输入的任何参数都不匹配。 +CategoryInfo:InvalidArgument:(CN=uzi,OU=IT,OU…shahar,DC=local:PSObject)[Set-ADUser],ParameterBindingException +FullyQualifiedErrorId:InputObject NotBound,Microsoft.ActiveDirectory.Management.Commands.SetADUser +PSComputerName:dc01

编辑:aduser的行

$uname =  $script:textbox1.text+"@"+$script:textbox2.text

$ADUSER = Invoke-Command  -Session $S -ScriptBlock {Get-aduser -property 'emailaddress' -filter "UserPrincipalName -eq '$using:UNAME'"}

有人能帮忙吗?

我认为您应该在scriptblok中添加一个参数块并使用它

差不多

Invoke-Command -Session $S -ScriptBlock {param ($ADUser, $UPN = 'someone@bla.bla'); $ADUser | Set-ADUser -UserPrincipalName $UPN } -ArgumentList $ADUser, 'bla@bla.bla'
或可读性更好:

$scriptBlock = {
    param (
        $ADUser, 
        $UPN = 'someone@bla.bla'
    )
    $ADUser | Set-ADUser -UserPrincipalName $UPN
}
Invoke-Command -Session $S -ScriptBlock $scriptBlock -ArgumentList $ADUser, 'bla@bla.bla'

假设
$ADUSER
是samaccountname(例如jdoe1234),尝试
调用命令-Session$S-ScriptBlock{set ADUSER-identity$using:ADUSER-userprincipalnamebla@bla.bla}
您的代码没有定义
$AdUser
。。。请将其添加到您的代码中,这样您就可以做一些有学问的事情,而不是胡乱猜测。。。[咧嘴笑]