我的代码是:
Import-Csv "$env:userprofile\Desktop\ExternalContacts.csv"| foreach {New-MailContact -Name $_.Name -DisplayName $_.Name -ExternalEmailAddress $_.ExternalEmailAddress -FirstName $_.FirstName -LastName $_.LastName | Set-MailContact -Identity $_.Name -HiddenFromAddressListsEnabled $_.HiddenFromAddressListsEnabled}
我得到了:
无法在参数'HiddenFromAddressListsEnabled'上处理参数转换。无法将值“System.String”转换为“System.Boolean”类型,此类型的参数仅接受布尔值或数字,请使用$ true,$ false,1或0代替。
以下是我在记事本中查看的CSV文件的前两行:
Name,FirstName,LastName,ExternalEmailAddress,HiddenFromAddressListsEnabled
Ted Testington,Ted,Testington,ted.testington@blah.com,$true
如何进行必要的转换?
感谢。
答案 0 :(得分:5)
小心-as
。它仅在字符串为0
或1
时才有效。
("FALSE") -as [bool]
和[bool]("FALSE")
都将返回True
!
使用
更好[System.Convert]::ToBoolean("FALSE")
[System.Convert]::ToBoolean("False")
[System.Convert]::ToBoolean(0)
或Parse
[bool]::Parse("FALSE")
[bool]::TryParse("FALSE", $outputVariable) # Will not raise an exception if the parse fails
Parse
仅适用于字符串作为参数。
答案 1 :(得分:1)
您也可以使用-as
运算符
-HiddenFromAddressListsEnabled ($_.HiddenFromAddressListsEnabled -as [bool])