从 Powershell 文件运行命令

从 Powershell 文件运行命令

我收到以下错误。通过从 Powershell 文件复制来运行命令时,我在记事本中打开了此文件,然后我通过复制并粘贴在 Powershell 提示符中来运行此命令。 在此处输入图片描述

如果我在 powershell 提示窗口中复制此文件时出现错误,请告诉我。以下是 Powershell 文件屏幕截图。 在此处输入图片描述

问候,Param

$Users = Import-Csv -Path "C:\Userlist-sn.csv"            
foreach ($User in $Users)            
{            
    $Displayname = $User.Firstname + " " + $User.Lastname            
    $UserFirstname = $User.Firstname            
    $UserLastname = $User.Lastname            
    $OU = "$User.OU"            
    $SAM = $User.SAM            
    $UPN = $User.Firstname + "." + $User.Lastname + "@" + $User.Maildomain            
    $Description = $User.Description            
    $Password = $User.Password            
    New-ADUser -Name "$Displayname" -DisplayName "$Displayname" -SamAccountName $SAM -UserPrincipalName $UPN -GivenName "$UserFirstname" -Surname "$UserLastname" -Description "$Description" -AccountPassword (ConvertTo-SecureString $Password -AsPlainText -Force) -Enabled $true -Path "$OU" -ChangePasswordAtLogon $true –PasswordNeverExpires $false -server "corp.abc.com"            
}

答案1

您需要一些调试输出。我还可以建议您用“-f”格式替换字符串构建代码,就像其他语言中的 sprintf() 一样。它使阅读/调试/修改变得更容易,例如:

$Displayname = $User.Firstname + " " + $User.Lastname 

...变成:

$DisplayName = ( "{0} {1}" -f $User.Firstname, $User.Lastname );

看起来您的错误与“name”属性有关。我相信这会映射到 AD 中的“CN”属性,但我可能错了。添加一些类似下面的调试会有所帮助:

Write-Host -Object ( "Attempting to create user with name ""{0}"" and display name ""{0}""" -f $DisplayName );

最后,您可以在实际的 New-ADUser 调用中丢失引号。原因是您正在传递变量,而不是要求 PowerShell 解释您的代码。

如果您可以发布一些调试输出,那将非常有用......

相关内容