PowerShell 技能连载 - 研究 ConfirmImpact(第 1 部分:用户视角)

在 PowerShell 中,默认情况下,$ConfimPreference 变量设置为 “High“。这个设置控制什么?

1
2
PS> $ConfirmPreference
High

任何 PowerShell 命令(二进制 cmdlet 或函数)都可以设置自己的 “ConfirmImpact“:允许的值为 NoneLowMediumHighConfirmImpact 是一个评估 cmdlet 效果的关键性程度。

默认情况下,当 $ConfirmImpact 设置为 “High“ 时,PowerShell 将在你运行设置了 ConfirmImpactHigh 的cmdlet 或函数时自动要求确认(所以你只会在运行像 AD 账户这样不能轻易恢复的东西的 cmdlets 时看到确认对话框弹出)。

作为用户,您可以调整这个风险缓解系统。如果你在一个十分敏感的生产系统上工作,你可能想把 $ConfirmPreference 降低到 Medium 或甚至 Low,以在运行 PowerShell 命令或脚本时获得更多的确认。当设置为 “Low“时,即使创建一个新文件夹也会触发自动确认:

1
2
3
4
5
6
7
8
9
10
PS> $ConfirmPreference = 'Low'

PS> New-Item -Path c:\testfolder

Confirm
Are you sure you want to perform this action?
Performing the operation "Create File" on target "Destination:
C:\testfolder".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):

同样地,如果你想运行一个脚本而不被自动确认对话框打断,你可以把 $ConfirmPreference 设置为 “None“,从而关闭这个风险缓解系统。这比为脚本中可能触发确认的每个命令添加 -Confirm:$false 参数来手动覆盖自动确认要高效得多。

$ConfirmPreference 的任何更改都会在关闭当前 PowerShell 会话时恢复为默认值。它们不会自动持久化。如果您想永久更改这些设置,请创建一个配置文件脚本并将所有永久更改添加到这个脚本中。当 PowerShell 启动时,它会自动启动。

这样的配置文件脚本的路径可以在这里找到:

1
2
PS> $profile.CurrentUserAllHosts
C:\Users\USERNAME\OneDrive\Documents\WindowsPowerShell\profile.ps1

PowerShell 技能连载 - 研究 ConfirmImpact(第 1 部分:用户视角)

http://blog.vichamp.com/2023/02/22/investigating-confirmimpact-part-1-user-perspective/

作者

吴波

发布于

2023-02-22

更新于

2024-03-29

许可协议

评论