我有一个非常短的 PowerShell 脚本,它连接到服务器并导入 AD 模块。我想通过双击来运行脚本,但恐怕窗口会在最后一行之后立即关闭。
我该如何解决这个问题?
我有一个非常短的 PowerShell 脚本,它连接到服务器并导入 AD 模块。我想通过双击来运行脚本,但恐怕窗口会在最后一行之后立即关闭。
我该如何解决这个问题?
您基本上有 3 个选项来阻止 PowerShell 控制台窗口关闭,我在我的博客文章中对此进行了更详细的描述。
PowerShell -NoExit "C:\SomeFolder\SomeScript.ps1"
Read-Host -Prompt "Press Enter to exit"
-NoExit
以便在脚本完成运行后始终保持 PowerShell 控制台窗口打开。Registry Key: HKEY_CLASSES_ROOT\Applications\powershell.exe\shell\open\command
Description: Key used when you right-click a .ps1 file and choose Open With -> Windows PowerShell.
Default Value: "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "%1"
Desired Value: "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "& \"%1\""
Registry Key: HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\0\Command
Description: Key used when you right-click a .ps1 file and choose Run with PowerShell (shows up depending on which Windows OS and Updates you have installed).
Default Value: "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "-Command" "if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & '%1'"
Desired Value: "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoExit "-Command" "if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & \"%1\""
请参阅我的博客以获取更多信息和下载脚本,该脚本将为您更改注册表。
Errr ...我应该知道:
powershell -noexit <path\script>
这就是它的全部内容:)
以下解决方案可防止脚本在运行 Powershell ISE 时关闭,并允许脚本在其他情况下关闭。
# If running in the console, wait for input before closing.
if ($Host.Name -eq "ConsoleHost")
{
Write-Host "Press any key to continue..."
$Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp") > $null
}
在我自己的情况下,我想将 powershell 添加到 Windows 7 上的上下文菜单中。即右键单击文件夹或文件夹内以获取菜单以启动 Powershell 窗口,而不会在启动后关闭它。这里的答案帮助我做到了这一点,我想在这里分享它,以防它帮助别人。
要使右键单击在文件夹内工作,这意味着右键单击文件夹内的空白区域,请重复这些步骤,但这一次,注册表位置是:
HKEY_CLASSES_ROOT\Directory\shell
命令为:
C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell.exe -noexit
在 Windows 7 Ultimate sp1 上测试,但我想我也可能适用于更高版本的 Windows
只需在脚本底部的新行上添加暂停,就像在批处理文件中一样。
pause
如果您只想让窗口保持打开状态,您可以在脚本末尾添加,或者powershell
如果您希望之后能够运行命令,您可以添加(如果其他人会使用您的代码,显然不要执行第二个选项) .