【问题标题】:List all previously-loaded PowerShell variables列出所有以前加载的 PowerShell 变量
【发布时间】:2012-09-10 01:35:52
【问题描述】:

是否有 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

【问题讨论】:

  • 当你说参数的时候,你到底是什么意思?提供给脚本或函数的所有参数?启动此特定 powershell 会话时使用的参数?可用变量?
  • ls variable:* 应该可以工作(至少对我有用)。您使用的是哪个主机输出错误?
  • 主机?我真的是 PS 新手,什么是主机?
  • powershell 是在一个名为 Sitecore Rocks 的 Visual Studio 插件中执行的,如果你想要的话。
  • 看起来主机只是在这些 PSVariable 对象上执行.ToString(),这会吐出类型名称而不是名称/值信息。在 PowerShell 提示符(主机)中,格式化引擎对对象进行格式化以组成有用的字符串以显示给主机。看起来这台主机比完整的六包少了几罐。 :-)

标签: powershell powershell-2.0


【解决方案1】:

有趣的是,您只需输入variable,也可以!

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

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

【讨论】:

  • 你应该把Get-ChildItem variable:* == 放在开头。
【解决方案2】:

ls variable:* 应该可以工作,或者Get-Variable。如果这些导致输出不良,那是由于主机实现不佳,而不是 powershell 本身。如果您打开标准控制台主机(运行 powershell.exe),您会发现这些都可以正常工作。

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

Get-Variable | Out-String

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

【讨论】:

  • 这很好用,但由于某种原因,它没有显示我希望看到的变量。还是谢谢。
  • 如果您真正想要的是 Windows 环境变量,也就是您在 DOS shell 中使用“Set”命令获得的环境变量,那么您想使用“dir env:\”。 PowerShell 似乎有自己独立的一组环境变量。
猜你喜欢
  • 2020-06-23
  • 2017-06-06
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2016-09-27
  • 2021-11-11
相关资源
最近更新 更多