【问题标题】:Powershell apply verbosity at a global levelPowershell 在全局级别应用详细程度
【发布时间】:2015-04-30 02:01:54
【问题描述】:

想象一下,如果您有一个包含单行代码的脚本,例如

ni -type file foobar.txt

-verbose 标志不提供给 ni 命令。如果我要运行此脚本来强制详细程度,有没有办法在全局 PSSession 级别设置详细程度?我问的原因是我有一组大约 60 个相互依赖的脚本,并且这些脚本都不会对它们发出的任何命令提供详细信息,我希望在调用主入口点 powershell 脚本时看到整个输出。

【问题讨论】:

  • $VerbosePreference='Continue' help about_Preference_Variables

标签: powershell verbose


【解决方案1】:

使用$PSDefaultParameterValues:

$PSDefaultParameterValues['New-Item:Verbose'] = $true

在全局范围内设置它,然后 New-Item cmdlet 的 -Verbose 的默认值将是 $True。

您可以对要影响的 cmdlet 使用通配符:

$PSDefaultParameterValues['New-*:Verbose'] = $true

将为所有 New-* cmdlet 设置它。

$PSDefaultParameterValues['*:Verbose'] = $true

将为所有 cmdlet 设置它。

【讨论】:

  • 我之前没有听说过 $PSDefaultParameterValues,这绝对适用于 New-Item。问题是我必须为 powershell 中可用的每个命令添加这样的规则,以涵盖在这 60 个脚本中调用的那些以及任何未来的编辑
  • 不正确。您可以使用通配符来设置要设置的 cmdlet。用一个例子更新了答案。
  • 我发现自己被正在使用的 powershell 版本所阻碍。知道如何在 powershell 版本 2 中实现相同的功能吗? stackoverflow.com/questions/28808908/…
【解决方案2】:

你也可以这样做:

$global:VerbosePreference = 'continue'

比 PSDefaultParameters 工作得更好,因为它可以容忍没有详细参数的函数。

【讨论】:

    猜你喜欢
    • 2021-04-04
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 2012-10-27
    • 2020-06-10
    • 1970-01-01
    • 2021-08-06
    相关资源
    最近更新 更多