【发布时间】:2016-10-25 04:28:02
【问题描述】:
我试图了解 $? 和 $lastexitcode 变量与 Powershell cmdlet 中的 -Confirm 标志之间的关系。
比如说你用-confirm运行一个命令,它会相应地提示你采取行动:
PS C:\temp> rm .\foo.txt -confirm
Confirm
Are you sure you want to perform this action?
Performing the operation "Remove Directory" on target "C:\temp\foo.txt".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):n
PS C:\temp> $?
True
我知道从技术上讲该命令运行成功,但如果用户选择“否”,则该命令不会运行。
我的问题是如何获得用户对-Confirm 标志的回答?
【问题讨论】:
-
问题标题询问如何使用-Confirm,而实际问题是如何从-Confirm获取用户输入。对于像我一样只是在寻找如何使用确认的人,请考虑使用
[cmdletbinding(SupportsShouldProcess)]以及围绕相关逻辑的if 块if ($PSCmdlet.ShouldProcess("The Item" , "The Change")) {。这是一种巧妙的内置方式来添加确认,前提是您不需要获取用户的答案。如需参考,请参阅sqldbawithabeard.com/2018/01/25/…
标签: powershell