列出所有以前加载的PowerShell变量

时间:2012-09-17 19:36:02

标签: powershell powershell-v2.0

是否有PowerShell命令列出所有先前加载的变量?

我在Visual Studio中运行一些PowerShell脚本,并希望列出当前PowerShell会话中可用的所有变量。

我尝试过命令:

ls variable:*;

但它返回以下内容:

System.Management.Automation.PSVariable
System.Management.Automation.PSVariable
System.Management.Automation.PSVariable
System.Management.Automation.PSVariable
System.Management.Automation.PSVariable
System.Management.Automation.PSVariable
System.Management.Automation.PSVariable
System.Management.Automation.PSVariable
System.Management.Automation.PSVariable
System.Management.Automation.PSVariable

2 个答案:

答案 0 :(得分:47)

ls variable:*应该有效,或Get-Variable。如果这些导致输出不良,则是由于主机实现不佳,而不是PowerShell本身。如果您打开标准控制台主机(运行powershell.exe),您将看到这些工作正常。

如果您需要解决一个糟糕的主机,您可能会更好地将所有内容转储为显式字符串:

Get-Variable | Out-String

Get-Variable |%{ "Name : {0}`r`nValue: {1}`r`n" -f $_.Name,$_.Value }

答案 1 :(得分:5)

有趣的是,您只需键入variable,这也可以。

我认为这是因为我很好奇ls variable:*正在做什么。 Get-Help ls告诉我们它是PowerShell的Get-ChildItem的别名,我知道它将列出一个Object的所有子节点。所以,我只试了variable,瞧!

基于thisthis,似乎ls variable:*正在做的是告诉它使用*进行某种范围/命名空间查找(全部/任何)variable列表中的通配符,在这种情况下,似乎无关紧要(ls variable:* == ls variable: == variable)。