New-MsolUser脚本存为.ps1运行报ParameterBindingException错误求解
错误产生原因
脚本里–Password和–UsageLocation两个参数前的破折号为全角长破折号,不符合PowerShell语法要求的半角减号-规范。
直接粘贴到终端运行时,多数终端自带的输入优化逻辑会自动将全角破折号转换为半角减号,参数可以被正常识别,因此脚本运行无报错。当内容保存为.ps1文件后,PowerShell会直接解析文件原始字符,不会自动转换全角符号,导致引擎无法识别对应参数,最终抛出ParameterBindingException参数绑定错误。
部分场景下也可能和.ps1文件的编码有关,若使用无BOM的UTF-8、GBK等编码保存,也可能导致特殊字符解析异常触发同类错误。
修复方法
- 第一步:把脚本中所有参数前的全角破折号替换为半角减号
-,修正后的执行语句如下:
Import-CSV "C:\Users\Admin\Documents\users.csv" | ForEach-Object { New-MsolUser -UserPrincipalName $_.UserPrincipalName -FirstName $_.FirstName -LastName $_.LastName -DisplayName "$($_.FirstName) $($_.LastName)" -Password $_.Password -UsageLocation "US" -ForceChangePassword ([System.Convert]::ToBoolean($_.ForceChangePassword))}
- 第二步:在.ps1文件开头添加MSOnline模块导入语句,避免运行上下文未加载模块导致的其他报错,有需要也可以提前加上登录命令:
# 导入MSOnline模块 Import-Module MSOnline # 按需添加登录语句,运行时会弹出Microsoft 365账号登录窗口 # Connect-MsolService
- 第三步:将.ps1文件编码修改为UTF-8带BOM格式,避免编码导致的字符解析异常。
内容的提问来源于stack exchange,提问作者Bernke
相关产品推荐
相关产品推荐

