1

Windows 2012 Server システムでユーザーを一括作成しようとしています。このシステムは、ALM ソリューションを検証できるようにすることのみを目的としており、寿命が非常に短いため、セキュリティについては今のところ気にしていません。以下のスクリプトを実行すると、シェルは Exception calling "SetInfo" with "0" argument(s): "The specified username is invalid." を報告します。入力ファイルの各行。ただし、ループ内の行を手動で実行すると、ユーザーが適切に作成されます。

# Work on the local system
$Computer =[ADSI]"WinNT://$env:ComputerName,Computer"
$UsersFilePath = "C:\users\Administrator\Downloads\ActiveUsers.txt"
$Group=[ADSI]"WinNT://WORKGROUP/./Developers,Group"

Get-Content $UsersFilePath | % {

$_ # Debug only line, remove it when done
$LocalUser=$Computer.Create("User", $_ )
$LocalUser.SetPassword( $_ )
$LocalUser # Debug only line, remove it when done
$LocalUser.SetInfo()
} 

ループはどのように記述すればよいでしょうか。

[mjolinor が示唆するように、これが答えです。主な変更点は、ファイルから読み取った名前のトリミングです]

# Work on the local system
$Computer =[ADSI]"WinNT://$env:ComputerName,Computer"
$UsersFilePath = "C:\users\Administrator\Downloads\ActiveUsers1.txt"
$Group=[ADSI]"WinNT://WORKGROUP/./Developers,Group"

Get-Content $UsersFilePath | % {

$_ # Debug only line, remove it when done
$UserName = $_.Trim()
$LocalUser=$Computer.Create("User", $UserName)
$LocalUser.SetPassword( $UserName )
#$LocalUser.put("userPrincipalName", "${name}@svr-tfs2013" )
$LocalUser # Debug only line, remove it when done
$LocalUser.SetInfo()
$Group.Add($LocalUser.path)
}
4

1 に答える 1