3

我的代码是:

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

如何进行必要的转换?

谢谢。

4

2 回答 2

7

小心-as。它仅在字符串为0or时有效1

两者都("FALSE") -as [bool][bool]("FALSE") 返回True

最好用

[System.Convert]::ToBoolean("FALSE")
[System.Convert]::ToBoolean("False")
[System.Convert]::ToBoolean(0)

或解析

[bool]::Parse("FALSE")
[bool]::TryParse("FALSE", $outputVariable) # Will not raise an exception if the parse fails

Parse仅适用于字符串作为参数。

于 2015-04-10T11:23:28.977 回答
1

您也可以使用-as运算符

-HiddenFromAddressListsEnabled ($_.HiddenFromAddressListsEnabled -as [bool])
于 2013-06-07T12:18:35.850 回答