【问题标题】:Powershell - How to use import-csv for SwitchParameterPowershell - 如何将 import-csv 用于 SwitchParameter
【发布时间】:2013-05-20 18:21:50
【问题描述】:

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

我尝试过 True、False、0、1,在 CSV 中带引号和不带引号,但它们似乎不起作用,我的代码中总是出现错误

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

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

Import-Csv c:\data.csv | Add-MyData

【问题讨论】:

    标签: powershell


    【解决方案1】:

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

    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
    

    【讨论】:

    • 当然我可以解析所有内容,但我没有办法 powershell 自动进行转换吗?我只是想发出 Import-Csv c:\data.csv |添加-MyData
    • 就像我说的那样。 Import-CSV 将每个值导入为字符串,因此如果您需要特定类型,则需要转换这些值。如果你真的想使用上面的命令,那么在你的 add-myData cmdlet 中进行转换
    • 我希望我的 cmdlet 接受 switchparameter,所以我不愿意让它成为 import-csv 工作的字符串。鉴于签名仍然是开关参数,我还有哪些其他选择?创建另一个以字符串格式获取相同信息的可选参数会令人困惑,那么还有什么呢?手动解析我的用户是唯一的选择吗?
    • 为什么不创建一个帮助 cmdlet?前任。 Convert-myData 进行转换。前任。 Import-Csv c:\data.csv | convert-myData | add-MyData 。或者您可以创建一个帮助 cmdlet,为您转换和调用 add-mydata。前任。 Import-csv c:\data.csv | Import-myData 。这几乎就是MS在PS中的做法。 Export-CSVConvertTo-CSV 使用相同的辅助类来完成工作转换。唯一的区别是Export-Csv 也将 csv 存储为文件。
    猜你喜欢
    • 2021-09-22
    • 2013-04-26
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 2012-06-22
    相关资源
    最近更新 更多