0

我对powershell很陌生,遇到了我无法弄清楚的路障。我有一个 CSV,其中包含 380 个用户帐户的列表,他们的 samaccount 名称后面有一个空格。这是在具有 PSv2 和 Quest.Activeroles.admanagement 的 Windows 2003 服务器上 这是我到目前为止所拥有的

`添加-pssnapin quest.activeroles.admanagement

获取 PSSnapin Quest.ActiveRoles.ADManagement

Import-Csv "C:\Documents and Settings\%user%\Desktop\withspaces2.csv" | ForEach{ Set-QADUser $_.sAMAccountName.Replace(' ',"").Replace("\t","") }`

它正在删除第一个用户的空白,但对其他用户无所事事,这就是错误的样子。

Name                           Type            DN                                

---- ---- --
ABPR 用户 CN=ABPR,CN=Users,DC=DRIVERS,DC=...

ADDJ 用户 CN=ADDJ,CN=Users,DC=DRIVERS,DC=... Set-QADUser:不明确的身份:ALLMA。

在行:3 字符:12

  • 设置-QADUser <<<< $_.sAMAccountName.Replace(' ',"").Replace("\t","")
    • CategoryInfo : NotSpecified: (:) [Set-QADUser], IdentityException
    • FullyQualifiedErrorId : Quest.ActiveRoles.ArsPowerShellSnapIn.BusinessLogic.IdentityException,Quest.ActiveRoles.ArsPowerShellSnapIn.Powershell.Cmdlets
      .SetUserCmdlet

ALLR 用户 CN=ALLR,CN=Users,DC=DRIVERS,DC=...

ALLS 用户 CN=ALLS,CN=Users,DC=DRIVERS,DC=...

Set-QADUser:不明确的身份:AMAB。

在行:3 字符:12

  • 设置-QADUser <<<< $_.sAMAccountName.Replace(' ',"").Replace("\t","")
    • CategoryInfo : NotSpecified: (:) [Set-QADUser], IdentityException
    • FullyQualifiedErrorId : Quest.ActiveRoles.ArsPowerShellSnapIn.BusinessLogic.IdentityException,Quest.ActiveRoles.ArsPowerShellSnapIn.Powershell.Cmdlets
      .SetUserCmdlet
4

2 回答 2

1

尝试查看 .Trim() 而不是替换

例子:

import-csv "mycsv" | foreach-object {get-qaduser -sAMAccountName $_.sAMAccountName | set qaduser -sAMAccountName $_.sAMAccountName.Trim()}

我没有测试过,但值得一看。

于 2013-10-31T20:59:05.833 回答
1

忽略格式,这只是为了证明 String.Trim() 从字符串中删除最后一个空格并将其导出到另一个 CSV 以进行验证。

$array = @()
Foreach ($item in Import-Csv 'C:\CSVFileName')
{
    $obj = New-Object PsObject
    $obj | Add-Member -Name samAccountName -MemberType NoteProperty -Value $item.samAccountName.Trim() #Value is the name of the column with your samAccountNames
    $array += $obj
}
$array | Export-Csv C:\NewCSVFile.Csv -NoTypeInformation
于 2013-11-01T19:58:04.673 回答