当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 有关 PowerShell PSDefaultParameterValues 的更多信息

作者:精品下载站 日期:2024-12-14 08:02:43 浏览:14 分类:玩电脑

有关 PowerShell PSDefaultParameterValues 的更多信息


[玩转系统] 有关 PowerShell PSDefaultParameterValues 的更多信息

上周我分享了一些关于通过使用内置变量 $PSDefaultParameterValues 让 PowerShell 的生活变得更轻松的小知识。这是一个特殊的哈希表,您可以在其中定义任何 PowerShell 命令的默认参数值。这意味着任何已定义参数并使用 [cmdletbinding()] 的 PowerShell 脚本或函数。如果您有一个仅使用 Param() 块的简单函数,则 $PSDefaultParameterValues 将不适用于该函数。我建议所有 PowerShell 函数都使用 [cmdletbinding()],因此希望这不会成为问题。由于我收到了一些关于上一篇文章的积极反馈和一些问题,我认为可能需要快速跟进。

不持久

首先,您在 $PSDefaultParameterValues 中输入的任何内容都不会在 PowerShell 会话中保持不变。这只不过是另一种类型的变量。您应该知道,变量仅在 PowerShell 会话期间存在。或者在 PowerShell 范围的持续时间内添加更多技术点。如果您希望始终使用参数默认值,请将定义语句放入 PowerShell 配置文件脚本中。您可以使用任何这些语法。

$PSDefaultParameterValues["get-ciminstance:classname"]="win32_bios"
$PSDefaultParameterValues.Add("get-ciminstance:Verbose",$True)
$PSDefaultParameterValues."Export-Clixml:Encoding" = "UTF8"

导出和导入

您可能考虑的另一个与配置文件相关的选项是定义所需的所有默认值,然后将 $PSDefaultParameterValues 导出到文件。

$PSDefaultParameterValues | Export-Clixml c:\work\psdefaults.xml

我建议使用 Export-Clixml,因为它可以捕获最多的信息,并且可以非常轻松地导入到新会话中。

[玩转系统] 有关 PowerShell PSDefaultParameterValues 的更多信息

我绝对不会使用 CSV 文件,因为某些默认值可能是嵌套对象或数组。 JSON 可能会好一点,但您需要从中重建 $PSDefaultParameterValues。它可能不会处理像 SecureStrings 或凭证这样的值。在 Windows 平台上,Export-Clixml 将轻松、安全地存储此类数据。当然,您仍然需要采取足够的预防措施来保护文件。

使用和不使用

我之前运行的命令设置了一对默认参数值。

[玩转系统] 有关 PowerShell PSDefaultParameterValues 的更多信息

我不需要做任何事情。您始终可以指定其他参数或行为。

[玩转系统] 有关 PowerShell PSDefaultParameterValues 的更多信息

正如我所提到的,$PSDefaultParameterValues 很特殊。您可以通过添加禁用键来暂时禁用它。

$PSDefaultParameterValues.disabled = $True

[玩转系统] 有关 PowerShell PSDefaultParameterValues 的更多信息

该变量仍在我的会话中定义,但被忽略。当我将“Disabled”设置为 $False 时,将再次使用默认值。您也可以完全清除该变量。

[玩转系统] 有关 PowerShell PSDefaultParameterValues 的更多信息

我强烈建议您阅读 about_parameters_default_values 帮助主题以了解更多信息。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯