次のスニペットを実行しようとするとエラーが発生します。
$Users = Import-Csv -Path $Path
foreach ($User in $Users)
{
$Domain = "Domain.lan"
$DefaultPassword = 'Password123'
$Parms = @{'Name'= "$($User.Lastname), $($User.Firstname) $($User.middleinitial)";
'DisplayName' = "$($User.Firstname) $($User.Middleinitial) $($User.LastName)";
'samAccountName' = "$($User.Firstname[0])$($User.middleinitial)$($User.Lastname)".ToLower();
'UserPrincipalName' = "$($User.Firstname[0])$($User.middleinitial)$($User.Lastname)@domain.lan".ToLower();
'GivenName' = $User.Firstname;
'Surname' = $User.LastName;
'Initials' = $User.middleinitial;
'EmailAddress' = $User.EmailAddress;
'AccountPassword' = (ConvertTo-SecureString $DefaultPassword -AsPlainText -Force);
'Enabled' = $true;
'Path' = "OU=Users,DC=domain,DC=lan";
'ChangePasswordAtLogon' = $True;
'PasswordNeverExpires' = $false
}
if (Get-ADObject -Filter { samAccountName -eq "$($Parms.samAccountName)"})
{
Write-Error "The user $($Parms.SAMAccountName) is already a user in $Domain"
}
else
{
$Account = New-ADUser $Parms -PassThru
}
私が得るエラーは次のとおりです。
New-ADUser : The name provided is not a properly formed account name
At C:\Tools\Scripts\Add-BatchUsers.ps1:34 char:9
+ New-ADUser $Parms
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (CN=System.Colle...DC=Domain,DC=lan:String) [New-ADUser], ADException
+ FullyQualifiedErrorId : ActiveDirectoryServer:1315,Microsoft.ActiveDirectory.Management.Commands.NewADUser
ただし、各パラメーターを指定すると同じ$ Parmsを使用すると、コマンドは期待どおりに機能します。誰かがこの振る舞いを説明できますか?
スプラットするときは、呼び出しサイトで@Params
ではなく$Params
として変数を表現する必要があります。