如何动态设置 PowerShell 变量的类型?

2024-04-25

是否可以从字符串中获取 System.Type,然后将其应用于变量?

以下是我尝试转换以使其更安全的函数(即不涉及调用字符串):

Function ParseLine($Type, $VariableName, $Value){
    Invoke-Expression "[$Type] `$$VariableName = $Value"
}

我在看New-Variable and Set-Variable,但定义中没有与类型设置相关的参数。

我期望如下所示的内容,但我找不到参数Type或同等学历:

Function ParseLine($Type, $VariableName, $Value){
    New-Variable -Name $VariableName -Value $Value -Type ([type] $Type)
}

Context:我正在尝试创建一个简单的解析器定义,如下所示:

$ResponseLogFormat = New-InputFormat {
    ParseLine -Type int -VariableName RecordLength
    RepeatedSection -RepeatCount $RecordLength {
        ParseLine string +ComputerName
        ParseLine double +AverageResponse
    }
}

$ResponseLogFormat.Parse( $FilePath )

您可以使用以下命令将变量转换为特定类型-as操作员:

Function ParseLine($Type, $VariableName, $Value){
    Set-Variable $VariableName -Scope 1 -Value ($Value -as ($Type -as [type]))
}

那将使用-as创建一个类型$Type字符串,然后用它来强制转换$Value.

我不确定您对变量的意图,但如果您想在函数完成后保留它,则需要在父作用域中设置它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何动态设置 PowerShell 变量的类型? 的相关文章

随机推荐