加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 具有Splatting错误的新ADUser

发布时间:2020-12-14 00:04:11 所属栏目:Windows 来源:网络整理
导读:我在尝试运行以下代码段时遇到错误. $Users = Import-Csv -Path $Path foreach ($User in $Users) { $Domain = "Domain.lan" $DefaultPassword = 'Password123' $Parms = @{'Name'= "$($User.Lastname),$($User.Firstname) $($User.middleinitial)"; 'Displa
我在尝试运行以下代码段时遇到错误.
$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:ToolsScriptsAdd-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命令按预期工作.谁能解释这种行为?

当你splat你必须在呼叫站点表达变量@Params,而不是$Params

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读