脚本执行后保持 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
参数。
相关文章
在 PowerShell 中管理服务
发布时间:2024/02/08 浏览次数:116 分类:编程语言
-
本文将讨论 PowerShell 服务 cmdlet、如何使用它们,并开发我们的脚本以在本地或远程管理多台计算机上的服务。
使用 PowerShell 获取 Windows 服务的启动类型
发布时间:2024/02/08 浏览次数:127 分类:编程语言
-
本教程将教你使用 PowerShell 获取启动类型的 Windows 服务。
PowerShell 中的属性 Property 与 ExpandProperty
发布时间:2024/02/08 浏览次数:198 分类:编程语言
-
本文将讨论什么是属性并将它们与扩展属性区分开来。Windows PowerShell 主要集中在显示和生成对象。这些对象由称为属性的特定细节支持。
PowerShell 中的 ExecutionPolicy Bypass 和 Unrestricted
发布时间:2024/02/08 浏览次数:137 分类:编程语言
-
提供了 PowerShell 执行策略作为安全措施。Bypass 和 Unrestricted 是两个重要的策略,可用于跳过几乎所有的安全检查并运行任何脚本。
使用 PowerShell 将文件从 Windows 复制到 Linux
发布时间:2024/02/08 浏览次数:125 分类:编程语言
-
本教程将教你使用 PowerShell 将文件从 Windows 复制到 Linux。
在 PowerShell 中将字符串转换为日期时间
发布时间:2024/02/08 浏览次数:89 分类:编程语言
-
本教程将教你在 PowerShell 中将字符串转换为 DateTime。String 和 DateTime 是 PowerShell 中的两种不同的数据类型。