在PowerShell中,我有一个ScriptBlock变量:
$my_scriptblock = {
....
}
如果我$my_scriptblock.GetType().Name
,我会正确地将类型设为ScriptBlock
。
但我正在使用Get-Variable
来收集所有用户变量(我出于某种原因需要它)。但是当我使用Get-Variable
收集变量时,它们会转换为PSVariable
类型。
如何获取Get-Variable
返回的变量/对象的变量类型?
修改:更多信息
$my_scriptblock_var = Get-Variable | Where-Object { ('my_scriptblock' -Contains $_.name) }
现在,如果您执行$my_scriptblock_var.GetType().Name
,我会将类型设为PSVariable
。哪个是正确的,Get-Variable
将返回一个它旨在返回的对象。
我的问题是如何获取原始类型?
另外,我是否应该考虑采用另一种方法来收集所有用户变量?
答案 0 :(得分:1)
Get-Variable
自己返回底层变量对象。要获取值,请使用Get-Variable -value
。
答案 1 :(得分:1)
我有办法做到这一点,但我会说要求本身很糟糕。
$var1 = (get-Date)
$gottenVar = (get-variable -name var1)
$gottenVar.Value.GetType().Name