如何使用Powershell替换组织单位中所有用户的描述文本

时间:2016-03-23 13:41:24

标签: powershell replace powershell-ise

我已使用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"," - ")的命令。我不知道如何使用它来实现我的目标。

2 个答案:

答案 0 :(得分: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,因为它不是默认返回的属性。

答案 1 :(得分:2)

您可以执行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
            }