Restart-Computer
重启本地和远程计算机上的操作系统。
语法
Restart-Computer
[-DcomAuthentication <AuthenticationLevel>]
[-Impersonation <ImpersonationLevel>]
[-WsmanAuthentication <String>]
[-Protocol <String>]
[[-ComputerName] <String[]>]
[[-Credential] <PSCredential>]
[-Force]
[-Wait]
[-Timeout <Int32>]
[-For <WaitForServiceTypes>]
[-Delay <Int16>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Restart-Computer
[-AsJob]
[-DcomAuthentication <AuthenticationLevel>]
[-Impersonation <ImpersonationLevel>]
[[-ComputerName] <String[]>]
[[-Credential] <PSCredential>]
[-Force]
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
说明
Restart-Computer
cmdlet 重启本地和远程计算机上的操作系统。
可以使用 Restart-Computer
的参数来运行重启操作作为后台作业、指定身份验证级别和备用凭据、限制同时运行的操作以及强制立即重启。
从 Windows PowerShell 3.0 开始,可以等待重启完成,然后再运行下一个命令。 指定等待超时和查询间隔,并等待特定服务在重启的计算机上可用。 有了上述功能,在脚本和函数中使用 Restart-Computer
便成为切实可行的方法。
可以使用 WS-Management (WSMan) 协议重启计算机,以防分布式组件对象模型 (DCOM) 调用被企业防火墙等功能阻止。 有关详细信息,请参阅 WS-Management 协议。
只有在命令中使用了 AsJob 参数的情况下,此 cmdlet 才需要使用 Windows PowerShell 远程处理功能。
示例
示例 1:重启本地计算机
Restart-Computer
重启本地计算机。
Restart-Computer
示例 2:重启多台计算机
Restart-Computer
可以重启远程计算机和本地计算机。 ComputerName 参数接受计算机名称数组。
Restart-Computer -ComputerName Server01, Server02, localhost
示例 3:作为后台作业重启计算机
这些命令在两台远程计算机上将 Restart-Computer
命令作为后台作业运行,然后获取结果。
由于 AsJob 在本地计算机上创建作业,并将结果自动返回给本地计算机,所以可将 Receive-Job
作为本地命令运行。
$Job = Restart-Computer -ComputerName "Server01", "Server02" -AsJob
$Job | Receive-Job
Restart-Computer
使用 ComputerName 参数指定 Server01 和 Server02。 AsJob 参数将该命令作为后台作业运行。 作业对象存储在 $Job
变量中。 $Job
沿着管道发送到 Receive-Job
cmdlet 以获取结果。
示例 4:重启远程计算机
Restart-Computer
使用自定义模拟和身份验证设置重启远程计算机。
Restart-Computer -ComputerName Server01 -Impersonation Anonymous -DcomAuthentication PacketIntegrity
Restart-Computer
使用 ComputerName 参数指定 Server01。 Impersonation 参数指定 Anonymous 来隐藏请求者的标识。 DcomAuthentication 参数指定 PacketIntegrity 作为连接的身份验证级别。
示例 5:强制重启文本文件中列出的计算机
此示例强制立即重启 Domain01.txt
文件中列出的计算机。 文本文件中的计算机名称存储在变量中。 Force 参数强制立即重启,ThrottleLimit 参数限制并发连接的数量。
$Names = Get-Content -Path C:\Domain01.txt
$Creds = Get-Credential
Restart-Computer -ComputerName $Names -Credential $Creds -Force -ThrottleLimit 10
Get-Content
使用 Path 参数从文本文件 Domain01.txt 中获取计算机名称列表。 计算机名称存储在变量 $Names
中。 Get-Credential
提示输入用户名和密码,并将值存储在变量 $Creds
中。 Restart-Computer
使用 ComputerName 和 Credential 参数及其变量。 Force 参数会导致立即重启每台计算机。 参数将该命令限制在 10 个并发连接范围内。
示例 6:重启远程计算机并等待 PowerShell
Restart-Computer
重启远程计算机,然后在继续操作前最多等待 5 分钟(300 秒),以等待 PowerShell 在重启的计算机上进入可用状态。
Restart-Computer -ComputerName Server01 -Wait -For PowerShell -Timeout 300 -Delay 2
Restart-Computer
使用 ComputerName 参数指定 Server01。 Wait 参数等待重启完成。 For 指定 PowerShell 可以在远程计算机上运行命令。 Timeout 参数指定五分钟等待。 Delay 参数每隔两秒查询远程计算机,以确定它是否已重启。
示例 7:使用 WSMan 协议重启计算机
Restart-Computer
通过使用 WSMan 协议(而不是默认的 DCOM)来重启远程计算机。 Kerberos 身份验证确定当前用户是否有权重启远程计算机。
这些设置适用于遇到以下情况的企业:由于 DCOM 被阻止,基于 DCOM 的重新启动失败。 例如,被防火墙阻止。
Restart-Computer -ComputerName Server01 -Protocol WSMan -WsmanAuthentication Kerberos
Restart-Computer
使用 ComputerName 参数指定远程计算机 Server01。
Protocol 参数指定使用 WSMan 协议。 WsmanAuthentication 参数将身份验证方法指定为 Kerberos。
参数
-AsJob
指示 Restart-Computer
作为后台作业运行。
若要使用此参数,必须为本地和远程计算机配置远程处理。 在 Windows Vista 以及更高版本的 Windows 操作系统上,必须使用“以管理员身份运行”选项打开 PowerShell。 有关详细信息,请参阅 about_Remote_Requirements。
指定 AsJob 参数时,该命令立即返回代表后台作业的对象。 当作业完成时,你可以继续在此会话中工作。 作业在本地计算机上创建,并且来自远程计算机的结果将自动返回本地计算机。 若要管理作业,请使用 Job cmdlet。 若要获取作业结果,请使用 Receive-Job
cmdlet。
有关 Windows PowerShell 后台作业的详细信息,请参阅 about_Jobs 和 about_Remote_Jobs。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-ComputerName
指定一个计算机名称或以逗号分隔的计算机名称数组。 Restart-Computer
接受来自管道或变量的 ComputerName 对象。
键入远程计算机的 NetBIOS 名称、IP 地址或完全限定的域名。 若要指定本地计算机,请键入计算机名称、句点 .
或 localhost。
此参数不依赖于 PowerShell 远程处理。 即使计算机未配置为运行远程命令,也可以使用 ComputerName 参数。
如果未指定 ComputerName 参数,Restart-Computer
会重启本地计算机。
类型: | String[] |
别名: | CN, __SERVER, Server, IPAddress |
Position: | 0 |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-Confirm
在运行 Restart-Computer
之前,提示你进行确认。
类型: | SwitchParameter |
别名: | cf |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Credential
指定有权执行此操作的用户帐户。 默认为当前用户。
键入用户名,如 User01 或 Domain01\User01;或输入 Get-Credential
cmdlet 生成的 PSCredential 对象。 如果键入用户名,系统会提示输入密码。
凭据存储在 PSCredential 对象中,密码存储为 SecureString。
注意
有关 SecureString 数据保护的详细信息,请参阅 SecureString 的安全性如何?。
类型: | PSCredential |
Position: | 1 |
默认值: | Current user |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-DcomAuthentication
指定用于 WMI 连接的身份验证级别。 Restart-Computer
使用 WMI。
有效值为:
- Call:调用级 COM 身份验证
- Connect:连接级 COM 身份验证
- Default:Windows 身份验证
- None:无 COM 身份验证
- Packet:数据包级 COM 身份验证。
- PacketIntegrity:数据包完整性级 COM 身份验证
- PacketPrivacy:数据包隐私级 COM 身份验证。
- Unchanged:身份验证级别与前一个命令相同。
有关详细信息,请参阅 AuthenticationLevel 枚举。
此参数是在 Windows PowerShell 3.0 中引入的。
类型: | AuthenticationLevel |
别名: | Authentication |
接受的值: | Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Delay
指定查询的频率(以秒为单位)。 PowerShell 查询由 For 参数指定的服务,以确定重启计算机后服务是否可用。
此参数只有在与 Wait 和 For 参数一起使用时才有效。
已在 Windows PowerShell 3.0 中引入了此参数。
如果未指定 Delay 参数,则 Restart-Computer
使用 5 秒的延迟。
类型: | Int16 |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-For
指定 PowerShell 的行为,因为它等待指定的服务或功能在计算机重启后变为可用。 此参数仅对 Wait 参数有效。
此参数的可接受值为:
- 默认:等待 PowerShell 重启。
- PowerShell:可以在计算机上的 PowerShell 远程会话中运行命令。
- WMI:接收对计算机的 Win32_ComputerSystem 查询的回复。
- WinRM:可以通过使用 WS-Management 建立与计算机的远程会话。
已在 Windows PowerShell 3.0 中引入了此参数。
类型: | WaitForServiceTypes |
接受的值: | Wmi, WinRM, PowerShell |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Force
强制立即重启计算机。
类型: | SwitchParameter |
别名: | f |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Impersonation
指定此 cmdlet 在调用 WMI 时使用的模拟级别。 Restart-Computer
使用 WMI。
此参数的可接受值为:
- Default:默认模拟。 尽管名称如此,但这不是默认值。
- Anonymous:隐藏调用方的身份。
- Identify:允许对象查询调用方的凭据。
- Impersonate:允许对象使用调用方的凭据。
类型: | ImpersonationLevel |
接受的值: | Default, Anonymous, Identify, Impersonate, Delegate |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Protocol
指定重新启动计算机要使用的协议。 有效值为 WSMan 和 DCOM。
此参数是在 Windows PowerShell 3.0 中引入的。
类型: | String |
接受的值: | DCOM, WSMan |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-ThrottleLimit
指定为运行此命令可建立的并发连接的最大数目。 节流限制仅适用于当前命令,而不适用于会话或计算机。
如果未指定 ThrottleLimit 参数或使用 0 值,Restart-Computer
最多使用 32 个并发连接。
类型: | Int32 |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Timeout
指定等待的持续时间,以秒为单位。 超时时间过后,即使计算机未重启,Restart-Computer
也会返回到命令提示符。
Timeout 参数只有在与 Wait 参数一起使用时才有效。 Timeout 替代 Wait 参数的无限期等待期。
已在 Windows PowerShell 3.0 中引入了此参数。
类型: | Int32 |
别名: | TimeoutSec |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Wait
Restart-Computer
抑制 PowerShell 提示符并阻止管道,直至计算机重启。 可以在脚本中使用此参数来重启计算机,然后在重启完成后继续处理。
Wait 参数无限期等待计算机重启。 可以使用 Timeout 来调整计时以及 For 和 Delay 参数,等待特定服务在重启的计算机上可用。
Wait 参数在重启本地计算机期间无效。 如果 ComputerName 参数的值包含远程计算机的名称和本地计算机的名称,则 Restart-Computer
为本地计算机上的 Wait 生成非终止错误,但等待远程计算机重启。
已在 Windows PowerShell 3.0 中引入了此参数。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-WhatIf
显示在 Restart-Computer
运行的情况下将会发生什么。 Restart-Computer
cmdlet 未运行。
类型: | SwitchParameter |
别名: | wi |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-WsmanAuthentication
指定用于对用户的凭据进行身份验证的机制。 已在 Windows PowerShell 3.0 中引入了此参数。
此参数的可接受值为:Basic、CredSSP、Default、Digest、Kerberos 和 Negotiate。
有关详细信息,请参阅 AuthenticationMechanism。
警告
在凭据安全服务提供程序 (CredSSP) 身份验证中,用户凭据传递到远程计算机中以进行验证,这种验证用于要求对多个资源(例如访问远程网络共享)进行验证的命令。 此机制增加了远程操作的安全风险。 如果远程计算机的安全受到威胁,则传递给该计算机的凭据可用于控制网络会话。
类型: | String |
接受的值: | Basic, CredSSP, Default, Digest, Kerberos, Negotiate |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
可以通过管道将包含计算机名称的字符串传递给此 cmdlet。
输出
None
默认情况下,此 cmdlet 不返回任何输出。
System.Management.Automation.RemotingJob
如果使用 AsJob 参数,则此 cmdlet 返回作业对象。
备注
Restart-Computer
仅适用于运行 Windows 的计算机,并且需要 WinRM 和 WMI 来关闭系统,包括本地系统。Restart-Computer
使用 Windows Management Instrumentation (WMI) Win32_OperatingSystem 类的 Win32Shutdown 方法。 此方法要求为用于重启计算机的用户帐户启用 SeShutdownPrivilege 特权。
在 Windows PowerShell 2.0 中,AsJob 参数在重启/停止远程计算机期间不能可靠地运行。 在 Windows PowerShell 3.0 中,为解决此问题,该实现方式有所更改。