是否可以从字符串中获取System.Type,然后将其应用于变量?
以下是我试图转换为使其更安全的功能(即不涉及调用字符串):
Function ParseLine($Type, $VariableName, $Value){
Invoke-Expression "[$Type] `$$VariableName = $Value"
}
我查看了New-Variable
和Set-Variable
,但定义中没有与类型设置相关的参数。
我期待下面的内容,但我找不到参数Type
或等价物:
Function ParseLine($Type, $VariableName, $Value){
New-Variable -Name $VariableName -Value $Value -Type ([type] $Type)
}
上下文:我正在尝试创建一个简单的解析器定义,如下所示:
$ResponseLogFormat = New-InputFormat {
ParseLine -Type int -VariableName RecordLength
RepeatedSection -RepeatCount $RecordLength {
ParseLine string +ComputerName
ParseLine double +AverageResponse
}
}
$ResponseLogFormat.Parse( $FilePath )
答案 0 :(得分:9)
您可以使用-as
运算符将变量转换为特定类型:
Function ParseLine($Type, $VariableName, $Value){
Set-Variable $VariableName -Scope 1 -Value ($Value -as ($Type -as [type]))
}
这将使用-as
从$Type
字符串创建一个类型,然后使用它来投射$Value
。
我不确定你对变量的意图,但是如果你想在函数完成后继续它,你需要在父范围内设置它。