Powershell - 如何使用import-csv for SwitchParameter

时间:2013-05-20 09:52:56

标签: powershell

我有一个用C#编写的自定义cmdlet,它将SwitchParameter作为其参数之一,我想使用import-csv执行我的cmdlet,我应该如何编写我的csv以便能够传递正确的{ {1}}值?

我在CSV中尝试过True,False,0,1,有和没有引号但是它们似乎不起作用,我的代码总是假的

SwitchParameter

我正在运行Powershell 2.0版,我要执行的命令是:

[Parameter(Mandatory = false, ValueFromPipelineByPropertyName=true)]
public SwitchParameter Enable { get; set; }

1 个答案:

答案 0 :(得分:2)

使用Import-CSV时,所有属性都是string - 对象。因此,如果您使用01,则需要将其投放到intbool。例如:

test.csv

Name,Enabled
"Hey",1
"Lol",0

脚本:

Import-Csv .\test.csv | % { $_.Enabled = [bool]($_.Enabled -as [int]); $_ }
#You could also cast it with [bool]([int]$_.Enabled), I just like to mix it up :)

Name Enabled
---- -------
Hey    True
Lol    False

然后您可以将其传递给您的开关,例如:

#My test-func
function testfunc ($Name, [switch]$Enabled) {
    "$Name has switchvalue $Enabled"
    }

Import-Csv .\test.csv | % { 
    $_.Enabled = [bool]($_.Enabled -as [int])
    testfunc -Name $_.Name -Enabled:$_.Enabled 
    }

Hey has switchvalue True
Lol has switchvalue False