PowerShell - 管道中子字符串的问题



我正在尝试用他的描述的子字符串替换用户描述。我希望它只是前 10 个字母。我尝试这样做:

Get-ADUser abc -Properties description | Set-ADUser -Description "($($PSItem.Description).substring(0,10))"

你能给我一个提示如何让它工作吗?

您从未提到它对您不起作用的方式,但我认为这是因为您的 SubString 方法从未被调用,而是被解释为字符串中的文本。尝试将行更改为以下内容,看看它是否符合您的预期。

您可以先尝试一下,只需将输出写入屏幕,而不是(可能(使用错误的值更新您的 AD 对象。

Get-ADUser -abc -Properties Description | foreach { Write-Output "$($PSItem.Description.SubString(0,10))" }

然后在确保拥有所需内容后运行您的生产线。

Get-ADUser -abc -Properties Description | Set-ADUser -Description "$($PSItem.Description.SubString(0,10))"

这个给出了很好的输出:

Get-ADUser abc -Properties Description | foreach { Write-Output "$($PSItem.Description.SubString(0,10))" }

但这个不是:

Get-ADUser abc -Properties Description | Set-ADUser -Description "$($PSItem.Description.SubString(0,10))"

它给出这样的错误:

不能对 null 值表达式调用方法。行:1 字符:71 + ...上 |Set-ADUser -description "$($PSItem.description.SubString(0,10((" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 类别信息 : 无效操作: (:) [], 运行时异常 + 完全限定错误 ID : 调用方法空 设置-ADUser : 替换 在行:1 字符:44 + ...脚本 |Set-ADUser -description "$($PSItem.description.SubString( ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 分类信息 : 无效操作: (CN=abc...C=DOMAIN,DC=com:ADUser( [Set-ADUser], ADInvalidOperationException + FullQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.SetADUser

最新更新