如何在Exchange Online的Powershell代码中将字符串转换为布尔值?

时间:2013-06-07 12:11:04

标签: powershell exchange-server

我的代码是:

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

如何进行必要的转换?

感谢。

2 个答案:

答案 0 :(得分:5)

小心-as。它仅在字符串为01时才有效。

("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])