脚本行在 dc 上有效,但在使用 invoke 命令时无效
script line works on dc but not while using invoke command
我有一个变量 $user,其中存储了一个 AD 用户。
我想更改其 UPN。
如果我在 dc 上写这个:
$user | set-aduser -UserPrincipalName bla@bla.bla
它工作正常。
但是如果我像这样使用调用命令
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 : InputObjectNotBound,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'"}
有人可以帮忙吗?
我认为您应该向脚本块添加一个参数块并使用它
类似
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'
我有一个变量 $user,其中存储了一个 AD 用户。 我想更改其 UPN。 如果我在 dc 上写这个:
$user | set-aduser -UserPrincipalName bla@bla.bla
它工作正常。 但是如果我像这样使用调用命令
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 : InputObjectNotBound,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'"}
有人可以帮忙吗?
我认为您应该向脚本块添加一个参数块并使用它
类似
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'