Powershell:使用Get-Variable后检索变量类型

时间:2018-04-10 18:17:55

标签: powershell variables

在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将返回一个它旨在返回的对象。

我的问题是如何获取原始类型?

另外,我是否应该考虑采用另一种方法来收集所有用户变量?

2 个答案:

答案 0 :(得分:1)

Get-Variable自己返回底层变量对象。要获取值,请使用Get-Variable -value

答案 1 :(得分:1)

我有办法做到这一点,但我会说要求本身很糟糕。

$var1 = (get-Date)
$gottenVar = (get-variable -name var1)
$gottenVar.Value.GetType().Name