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