【问题标题】:How to Replace Description Text for All Users in an Organizational Unit using Powershell如何使用 Powershell 替换组织单位中所有用户的描述文本
【发布时间】:2016-03-23 13:41:23
【问题描述】:

我使用 CSV 文件向 Active Directory 添加了大约 1700 多个用户。我不小心尝试使用\n 来分隔它们之间的一些属性。但它并没有逃脱新的路线。而是按原样输入。

$Users = Import-Csv -Path "C:\UsersList.csv"            

foreach ($User in $Users)            
{
    $Name = $User.Name
    $AccountPassword = $User.AccountPassword
    $City = $User.City
    $Company = $User.Company
    $GivenName = $User.GivenName
    $SamAccountName = $User.SamAccountName      
    $Surname = $User.Surname
    $UserPrincipalName = $User.UPN
    $Displayname = $User.Name   
    $Description = "Desc1: " + $User.Desc1 + "\nDesc2: " + $User.Desc2 + "\nDesc3: " + $User.Desc3 + "\nDesc4: " + $User.Desc4
    $Path = $User.Path


    New-ADUser -Name "$Name" -DisplayName "$Displayname" -SamAccountName "$SamAccountName" -UserPrincipalName "$UserPrincipalName" -GivenName "$GivenName" -Surname "$Surname" -Description "$Description" -AccountPassword (ConvertTo-SecureString $AccountPassword -AsPlainText -Force) -Enabled $true -Path "$Path" -ChangePasswordAtLogon $true
}

现在我想为所有用户更改描述中的那些“\n”。

我可以让用户使用

Get-ADUser -Filter {description -like "\n"}

我需要一个使用.Replace("\n"," - ") 的命令。我不知道如何使用它来达到我的目标。

【问题讨论】:

    标签: powershell replace powershell-ise


    【解决方案1】:

    您可以执行 Foreach-Object 循环以使用您的过滤器查找所有描述并将其通过管道传递给 Set-Aduser。

             $Description = "-Desc1: " + $User.Desc1 + "-Desc2: " + $User.Desc2 + "-Desc3: " + $User.Desc3 + "-Desc4: " + $User.Desc4
    
            foreach ($User in (Get-ADUser -Filter {description -like "*\n*"}) )
            {
                $User.SamAccountName | Set-ADUser -Description $Description
            }
    

    从 CSV 更新用户

                foreach ($User in $users )
                {
                    $User.SamAccountName | Set-ADUser -Description $user.Description
                }
    

    【讨论】:

      【解决方案2】:

      使用Set-ADUser:

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

      请注意,使用-like 运算符时,您需要在\n 之前和之后添加通配符,否则您只会获得描述仅包含\n 而没有其他内容的用户。您还需要告诉Get-ADUser 包含属性Description,因为它不在默认返回的属性中。

      【讨论】:

      • 谢谢@AnsgarWiechers。它不起作用。它没有给出错误但没有替换
      • 我已将所有用户描述更改为$_.Description.Replace("\n"," - ")。现在我必须再次参考 csv 文件。我的问题演变为“如何从 csv 文件更新用户的描述?”
      • @zkanoca 请不要移动目标。如果您有新问题或后续问题:发布新问题。
      • 由于我无法将修改恢复为原始状态,我就这么说了。但我找到了自己的解决方案。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 2018-12-03
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多