为特定命名的 PowerShell 命令提供警告

Provide warning for specifically named PowerShell commands

是否可以配置一个 PowerShell 会话,以便在我 运行 特别命名为 command/function 时随时警告我?

举个例子(我希望每次使用以 "Set-" 开头的命令时收到警告):

       If I run a Get-foo command, it runs that command without warning.
       If I run a Set-foo command, then it provides a warning about changes being made.

您可以使用 $PSDefaultParameterValues 变量来定义默认值,许多 Set- 命令包含 'Confirm' 参数或 'WhatIf' 参数。你可以这样做:

$PSDefaultParameterValues = @{
    "Set-*:Confirm"=$true
    "Set-*:WhatIf"=$true
}

它的格式是一个哈希表,其中键是“:”,值是您要设置的值。 cmdlet 名称允许使用通配符,因此您可以轻松地将设置应用于所有 Set- cmdlet。

如果你想使用 'WhatIf' 如果你想让命令实际做事而不是仅仅告诉你它会做什么,你只需 运行 带有 -WhatIf:$false 的命令已经完成了。

Get-Item C:\Temp\*.docx | Copy-Item -Dest "$home\desktop" -WhatIf:$false

有关该主题的详细信息,请参阅 this page