首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell -如何使用import-csv for SwitchParameter

Powershell -如何使用import-csv for SwitchParameter
EN

Stack Overflow用户
提问于 2013-05-20 17:52:56
回答 1查看 2.2K关注 0票数 3

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

我已经尝试了True,False,0,1,在CSV中带引号和不带引号,但是它们似乎不起作用,我的代码中总是出现false

代码语言:javascript
复制
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName=true)]
public SwitchParameter Enable { get; set; }

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

代码语言:javascript
复制
Import-Csv c:\data.csv | Add-MyData
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-20 18:14:03

使用Import-CSV时,所有属性都是string-objects。因此,如果您使用01,则需要将其强制转换为int,并将转换为bool。例如:

test.csv

代码语言:javascript
复制
Name,Enabled
"Hey",1
"Lol",0

脚本:

代码语言:javascript
复制
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

然后您可以将其传递给您的交换机,如下所示:

代码语言:javascript
复制
#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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16646855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档