0

这是一个双重问题。

首先,我试图让这个 PS 命令正常工作(试图在其描述中提取具有某些字符的帐户并替换这些字符),并且它不断给我“表达式或语句中的意外令牌'Set-ADUser'”。错误:

Get-ADUser -Filter {description -like "*Example*"} -Properties description | ForEach-Object {$newDescription = $_.Description.Replace("Example", "Example2") Set-ADUser -Identity $_ -Description $newDescription}

我基于我在此处找到的内容(第二个答案 - Ansgar Wiechers)如何使用 Powershell 替换组织单位中所有用户的描述文本

任何帮助深表感谢!以前从未使用过这样的网站,但不想在此上花费太多时间。

我的第二个问题与第一个问题有关,前面提到的链接上有示例。有没有办法在不按 Enter 的情况下移动到 PS 中的下一行?我问的原因是,当我将上面链接中的代码复制到 Word 中,对其进行编辑,然后复制到 PS 中并运行它时,它运行良好——实际上并没有改变任何东西,但它运行了。当我尝试将其全部作为一行运行时,它会引发错误。

当他们这样做时,人们是否在另一个程序中构建命令?

4

1 回答 1

0

你几乎做对了。唯一的错误是您需要使用$_.DistinguishedNameor$_.SamAccountName-Identity参数Set-ADUser

当您像以前那样尝试将所有内容放在一行上时,这些事情经常发生。这使得阅读代码非常困难。

我也改成.Replace-replace。这使它不区分大小写(与您的相同-Filter),因此现在“example”也将被“Example2”替换。

这是新代码。

Get-ADUser -Filter { Description -like "*Example*"} -Properties Description | 
    ForEach-Object {
        $newDescription = $_.Description -replace "Example", "Example2"
        Set-ADUser -Identity $_.DistinguishedName -Description $newDescription
    }
于 2018-08-17T20:17:22.743 回答