我使用CSV文件将关于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"," - ")的命令。我不知道如何用它来达到我的目标。
发布于 2016-03-23 14:22:23
您可以执行Foreach-Object循环,用过滤器和管道查找所有要设置-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
}发布于 2016-03-23 14:03:01
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,因为它不是默认返回的属性。
https://stackoverflow.com/questions/36179855
复制相似问题