PowerShell导入CSV时如何将$true/$false字符串转为布尔值创建AD用户
报错原因
[System.Convert]::ToBoolean()是.NET框架提供的方法,仅能识别不含$前缀的True/False类字符串(不区分大小写),你的CSV中存储的是带$的$true/$false格式字符串,不符合方法的解析规则,所以抛出格式错误。
最优解决方法
直接修改布尔值转换的两行代码即可,方案兼容你提到的仅$true/$false的取值场景,同时支持大小写、带前后空格等常见异常情况:
# 替换原来的两行[System.Convert]::ToBoolean转换代码 $Enabled = $User.Enabled.Trim() -in '$true', 'true' $ChangePasswordAtLogon = $User.mustChangePassword.Trim() -in '$true', 'true'
该方案通过PowerShell原生的集合匹配逻辑实现转换:只要对应列的值是$true或者true(自动忽略前后空格、不区分大小写)就返回$true,其余情况返回$false,完全不会出现解析报错。
额外注意
你当前代码中New-ADUser的参数写法不符合PowerShell语法规范,参数名和参数值之间不需要加等号,需要把所有参数行的=删除,否则布尔值问题解决后仍会触发参数错误,修正后的代码片段如下:
New-ADUser ` -Name $Name ` -Surname $SurName ` -GivenName $GivenName ` -EmailAddress $Email ` -SamAccountName $SamAccountName ` -Path $Path ` -AccountPassword (ConvertTo-SecureString $Password -AsPlainText -Force) ` -Enabled $Enabled ` -ChangePasswordAtLogon $ChangePasswordAtLogon ` -Description $Description
内容的提问来源于stack exchange,提问作者Thijsk1
相关产品推荐
相关产品推荐

