背景: 我为我们的一级技术支持编写了一个小脚本,它执行一些验证(命名约定/IP 地址范围)并更新打印机范围的 DNS 记录。
它从命令行或文件获取输入,如果命令行上没有给出输入,它将从脚本内提示。
最初的问题是,当用户右键单击 update-PrinterDNS.ps1 并“使用 PowerShell 运行”时,脚本刚刚执行并关闭。在脚本末尾添加暂停语句允许用户查看输出。然而,当调用脚本并传递参数时,这会给自动化方面带来麻烦。
我考虑过在命令行中添加 -noPause 开关,或者推出使用 -noExit 调用 PowerShell 的快捷方式,但这些看起来更像是解决方法,而不是解决方案。
问题:) 我想知道是否可以在脚本中确定它是否是由“使用 Windows PowerShell 运行”启动的,以便在最后有条件地暂停。
最佳答案
使用 PowerShell 运行具有以下命令行(默认情况下, future 版本中可能会发生更改等):
powershell.exe "-Command" "if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & '%1'"
您可以在 $MyInspiration
变量中查看您是如何被调用的。
另一种方法是检查执行策略,该策略是在此处明确设置的。除非您使用 -ExecutionPolicy Bypass
启动 PowerShell,否则以下情况仅适用于通过上下文菜单运行脚本的情况:
(Get-ExecutionPolicy -Scope Process) -eq 'Bypass'
就 hacky 解决方法而言,我认为这应该能工作一段时间。但不能保证。
关于Powershell - 可以通过右键单击 "run with powershell"来确定脚本是否运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25041534/