Powershell - 可以通过右键单击 "run with powershell"来确定脚本是否运行吗?

标签 powershell command-line

背景: 我为我们的一级技术支持编写了一个小脚本,它执行一些验证(命名约定/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/

相关文章:

function - 将 F 键传递到 Powershell (TCP) 中的模拟 Telnet session

Powershell Get-ChildItem -recurse不能获取所有项目

Powershell - 监控文件夹内容

java 命令行,包括 .jar

powershell - 在 windows 10 中从 powershell 启动通用 windows 应用程序 (UWA)

powershell - Powershell命令-用多行值替换

php - 如何使用命令行访问linux服务器上的php.ini

javascript - 为命令行创建 JavaScript 应用程序

python - 使用 Python 从 linux 命令行读取

c - 是否可以将两个以上的标准流连接到 Linux 中的终端?