脚本执行后保持 PowerShell 控制台打开
如果通过双击或右键单击脚本并选择使用 PowerShell 运行
或使用 Windows PowerShell 打开
来执行脚本,用户将看到 PowerShell 控制台在消失之前短暂出现。出现这种情况是因为脚本自然会自行终止,尤其是在它抛出错误时。
我们将研究一些在脚本运行后保持 PowerShell 控制台打开的选项,我们将在本文中介绍它们。
阻止 PowerShell 退出
方便的是,Windows PowerShell 有一个 switch 参数,我们可以在运行脚本时传递它。该参数称为 -NoExit
参数。
在运行脚本时附加此内容将防止 PowerShell 控制台在出现错误或脚本执行成功完成时终止。
powershell.exe "C:\PS\sample_script.ps1" -NoExit
但是,这只有在你在外部运行或调用脚本时才有可能。如果有一种方法可以在 PowerShell ISE 等代码编辑器中运行和编辑脚本时保持屏幕并防止其终止,该怎么办?
本机可能没有 PowerShell 命令来执行此操作;但是,我们可以发挥创造力并创造方法来实现我们的目标。在我们继续之前,值得注意的是,你可以在运行 PowerShell 脚本时使用旧命令 pause
来保持屏幕。
输出:
Press any key to continue...
可能没有对应的 pause
传统命令,但我们可以使用 Read-Host
PowerShell 命令重新创建它。
示例代码:
Read-Host -Prompt "Press Enter to continue..."
该方法唯一需要注意的是与 pause
命令不同,它不接受任何键盘敲击,而只接受 Enter 键来终止脚本。它可能与 pause
命令不同,但上面的代码段仍将在终止脚本之前保持屏幕。
有一种方法可以通过编辑注册表来永久和持久地阻止脚本退出。由于注册表具有操作系统范围,因此我们所做的任何更改不仅会影响一个特定的脚本,还会影响你将来运行的所有脚本。
因此,在继续之前请记住这一点。
现在,要继续,我们应该先备份注册表。我们将为本文操作 HKEY_CLASSES_ROOT
注册表文件,因此让我们通过打开命令提示符并运行以下命令来备份它。
reg export HKCR C:\Temp\HKCR.Reg /y
现在我们已经成功备份了我们的注册表,我们可以继续进行。复制下面的命令并使用 .reg
扩展名保存文件。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Applications\powershell.exe\shell\open\command]
@="\"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -NoExit \"& \\\"%1\\\"\""
[HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\0\Command]
@="\"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -NoExit \"-Command\" \"if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & \\\"%1\\\"\""
保存后,双击新创建的 reg
文件以使更改生效。上面的命令将更改 PowerShell 的执行策略,并在执行 PowerShell 脚本时默认包含 -NoExit
开关参数。
运行我们创建的脚本时,我们不需要添加 -NoExit
参数。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn