如何等到所有命令都执行完毕,然后才提示您在 powershell 脚本中重新启动您的 PC?

How to wait until all commands are executed and only then have a prompt to restart your PC in powershell script?

我正在编写用于启用某些 Windows 功能的 powershell 脚本。它看起来像这样:

...
Enable-WindowsOptionalFeature -Online -FeatureName "IIS-WebServerRole"
Enable-WindowsOptionalFeature -Online -FeatureName "IIS-WebServer"
Enable-WindowsOptionalFeature -Online -FeatureName "IIS-FTPServer"
...

在此脚本中,有多个命令启用了需要重新启动的 windows 功能。所以我注意到,在 powershell 中它启用了一些东西,然后在我启用需要重新启动的东西的最后 4 行,它不断提示我在 powershell 中重新启动计算机。所以我不得不不断地说“不”,否则它会在执行脚本中的所有命令之前重新启动计算机:

我的问题是,在我的脚本中,如何等到所有命令执行完毕,然后才提示重启我的电脑?我尝试在命令中添加“Wait-Process”和“-Wait”标签,但出现如下错误:

有谁知道我可以等待所有命令执行然后才出现重启提示的方法吗?提前致谢!

Enable-WindowsOptionalFeature 有一个 -NoRestart 开关。 Described as:

Suppresses reboot. If a reboot is not required, this command does nothing. This option will keep the application from prompting for a restart or keep it from restarting automatically.

要在 上构建,请使用 -NoRestart 标志。您可以省略最终功能的 -NoRestart,或者自己执行提示,这样您就可以选择其他逻辑模式来安装所需功能的列表:

'IIS-WebServerRole', 'IIS-WebServer', 'IIS-FTPServer' | ForEach-Object {
  Enable-WindowsOptionalFeature -Online -FeatureName $_ -NoRestart
}

if( ( Read-Host -Prompt "Would you like to reboot to complete feature installation? (y/n)" ) -match '^y' ) {
  Restart-Computer -Force
}

或者如果您想保持简单并且在提示重新启动之前不需要自定义提示文本,只需使用 -Confirm 开关和 Restart-Computer 以获得重新启动提示:

'IIS-WebServerRole', 'IIS-WebServer', 'IIS-FTPServer' | ForEach-Object {
  Enable-WindowsOptionalFeature -Online -FeatureName $_ -NoRestart
}

Restart-Computer -Confirm -Force