Restart-Computer

在本地和远程计算机上重启作系统。

语法

DefaultSet (默认值)

Restart-Computer
    [[-ComputerName] <String[]>]
    [[-Credential] <PSCredential>]
    [-DcomAuthentication <AuthenticationLevel>]
    [-Impersonation <ImpersonationLevel>]
    [-WsmanAuthentication <String>]
    [-Protocol <String>]
    [-Force]
    [-Wait]
    [-Timeout <Int32>]
    [-For <WaitForServiceTypes>]
    [-Delay <Int16>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

AsJobSet

Restart-Computer
    [[-ComputerName] <String[]>]
    [[-Credential] <PSCredential>]
    [-AsJob]
    [-DcomAuthentication <AuthenticationLevel>]
    [-Impersonation <ImpersonationLevel>]
    [-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 参数指定 Server01Server02AsJob 参数将命令作为后台作业运行。 作业对象存储在 $Job 变量中。 $Job 将管道向下发送到获取结果的 Receive-Job cmdlet。

示例 4:重启远程计算机

Restart-Computer 重启具有自定义模拟和身份验证设置的远程计算机。

Restart-Computer -ComputerName Server01 -Impersonation Anonymous -DcomAuthentication PacketIntegrity

Restart-Computer 使用 ComputerName 参数来指定 Server01模拟 参数指定匿名以隐藏请求者的标识。 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 参数会导致立即重启每台计算机。 ThrottleLimit 参数将命令限制为 10 个并发连接。

示例 6:重启远程计算机并等待 PowerShell

Restart-Computer 重启远程计算机,然后等待最多 5 分钟(300 秒)让 PowerShell 在重启的计算机上可用,然后再继续。

Restart-Computer -ComputerName Server01 -Wait -For PowerShell -Timeout 300 -Delay 2

Restart-Computer 使用 ComputerName 参数来指定 Server01Wait 参数等待重启完成。 For 指定 PowerShell 可以在远程计算机上运行命令。 Timeout 参数指定五分钟的等待。 Delay 参数每隔两秒查询远程计算机,以确定它是否已重启。

示例 7:使用 WSMan 协议重启计算机

Restart-Computer 使用 WSMan 协议而不是默认的 DCOM 重启远程计算机。 Kerberos 身份验证确定当前用户是否有权重启远程计算机。

这些设置专为基于 DCOM 的重启失败的企业设计,因为 DCOM 被阻止。 例如,防火墙。

Restart-Computer -ComputerName Server01 -Protocol WSMan -WsmanAuthentication Kerberos

Restart-Computer 使用 ComputerName 参数来指定远程计算机,Server01Protocol 参数指定使用 WSMan 协议。 WsmanAuthentication 参数将身份验证方法指定为 Kerberos

参数

-AsJob

指示 Restart-Computer 作为后台作业运行。

若要使用此参数,必须配置本地计算机和远程计算机进行远程处理。 在 Windows Vista 和更高版本的 Windows 操作系统上,必须使用 以管理员身份运行 选项打开 PowerShell。 有关详细信息,请参阅 about_Remote_Requirements

指定 AsJob 参数时,该命令将立即返回表示后台作业的对象。 作业完成后,可以继续在会话中工作。 作业在本地计算机上创建,远程计算机的结果会自动返回到本地计算机。 若要管理作业,请使用 作业 cmdlet。 若要获取作业结果,请使用 Receive-Job cmdlet。

有关 Windows PowerShell 后台作业的详细信息,请参阅 about_Jobsabout_Remote_Jobs

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

AsJobSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ComputerName

指定一个计算机名称或以逗号分隔的计算机名称数组。 Restart-Computer 接受管道或变量中的 ComputerName 对象。

键入远程计算机的 NetBIOS 名称、IP 地址或完全限定的域名。 若要指定本地计算机,请键入计算机名称、点 .或 localhost。

此参数不依赖于 PowerShell 远程处理。 即使计算机未配置为运行远程命令,也可以使用 ComputerName 参数。

如果未指定 ComputerName 参数,Restart-Computer 重启本地计算机。

参数属性

类型:

String[]

默认值:None
支持通配符:False
不显示:False
别名:中国区, __服务器, 服务器, IP地址

参数集

(All)
Position:0
必需:False
来自管道的值:True
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Confirm

在运行 Restart-Computer之前,提示你进行确认。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False
别名:cf

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Credential

指定有权执行此作的用户帐户。 默认值为当前用户。

键入用户名(如 User01Domain01\User01),或输入由 cmdlet 生成的 Get-Credential 对象。 如果键入用户名,系统会提示输入密码。

凭据存储在 PSCredential 对象中,密码存储为 SecureString

注释

有关 SecureString 数据保护的详细信息,请参阅 SecureString 的安全性如何?

参数属性

类型:PSCredential
默认值:Current user
支持通配符:False
不显示:False

参数集

(All)
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-DcomAuthentication

指定用于 WMI 连接的身份验证级别。 Restart-Computer 使用 WMI。

有效值为:

  • 呼叫:呼叫级 COM 身份验证
  • 连接:连接级 COM 身份验证
  • 默认:Windows 身份验证
  • :无 COM 身份验证
  • 数据包:数据包级 COM 身份验证。
  • PacketIntegrity:数据包完整性级 COM 身份验证
  • PacketPrivacy:数据包隐私级 COM 身份验证。
  • 未更改:身份验证级别与上一个命令相同。

有关详细信息,请参阅 AuthenticationLevel 枚举

此参数在 Windows PowerShell 3.0 中引入。

参数属性

类型:AuthenticationLevel
默认值:None
接受的值:Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged
支持通配符:False
不显示:False
别名:身份验证

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Delay

指定查询的频率(以秒为单位)。 PowerShell 查询由 For 参数指定的服务,以确定计算机重启后服务是否可用。

此参数仅与 WaitFor 参数一起有效。

此参数是在 Windows PowerShell 3.0 中引入的。

如果未指定 Delay 参数,则 Restart-Computer 使用 5 秒的延迟。

参数属性

类型:Int16
默认值:None
支持通配符:False
不显示:False

参数集

DefaultSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-For

指定 PowerShell 的行为,因为它等待指定的服务或功能在计算机重启后变为可用。 此参数仅对 Wait 参数有效。

此参数的可接受值为:

  • 默认:等待 PowerShell 重启。
  • PowerShell:可以在计算机上的 PowerShell 远程会话中运行命令。
  • WMI:接收对计算机的 Win32_ComputerSystem 查询的答复。
  • WinRM:可以使用 WS-Management 与计算机建立远程会话。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:WaitForServiceTypes
默认值:None
接受的值:Wmi, WinRM, PowerShell
支持通配符:False
不显示:False

参数集

DefaultSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Force

强制立即重启计算机。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False
别名:f

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Impersonation

指定此 cmdlet 用于调用 WMI 的模拟级别。 Restart-Computer 使用 WMI。 此参数的可接受值为:

  • 默认:默认模拟。 尽管名称如此,但这不是默认值。
  • 匿名:隐藏调用方的身份。
  • 标识:允许对象查询调用方凭据。
  • 模拟:允许对象使用调用方凭据。

参数属性

类型:ImpersonationLevel
默认值:None
接受的值:Default, Anonymous, Identify, Impersonate, Delegate
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Protocol

指定用于重新启动计算机的协议。 有效值为 WSManDCOM

此参数在 Windows PowerShell 3.0 中引入。

参数属性

类型:String
默认值:None
接受的值:DCOM, WSMan
支持通配符:False
不显示:False

参数集

DefaultSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ThrottleLimit

指定可建立以运行此命令的最大并发连接数。 限制限制仅适用于当前命令,不适用于会话或计算机。

如果未指定 ThrottleLimit 参数或使用值 0,Restart-Computer 最多使用 32 个并发连接。

参数属性

类型:Int32
默认值:None
支持通配符:False
不显示:False

参数集

AsJobSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Timeout

指定等待的持续时间(以秒为单位)。 超时时间过后,即使计算机未重启,Restart-Computer 也会返回到命令提示符。

Timeout 参数仅对 Wait 参数有效。 Timeout 替代 Wait 参数的无限等待期。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:Int32
默认值:None
支持通配符:False
不显示:False
别名:TimeoutSec

参数集

DefaultSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Wait

Restart-Computer 禁止显示 PowerShell 提示符,并阻止管道,直到计算机重启。 可以在脚本中使用此参数来重新启动计算机,然后在重启完成后继续处理。

Wait 参数无限期等待计算机重启。 可以使用 超时 来调整时间设置,并使用 For延迟 参数来等待特定服务在已重启的计算机上变得可用。

重新启动本地计算机时,Wait 参数无效。 如果 ComputerName 参数的值包含本地计算机和远程计算机的名称,Restart-Computer 会在本地计算机上为 Wait 生成一个非终止错误,但仍会等待远程计算机重启。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

DefaultSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-WhatIf

显示 Restart-Computer 运行时会发生什么情况。 Restart-Computer cmdlet 未运行。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False
别名:无线

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-WsmanAuthentication

指定用于对用户凭据进行身份验证的机制。 此参数是在 Windows PowerShell 3.0 中引入的。

此参数的可接受值为:BasicCredSSPDefaultDigestKerberosNegotiate

有关详细信息,请参阅 AuthenticationMechanism

警告

凭据安全服务提供程序(CredSSP)身份验证(其中用户凭据传递到要进行身份验证的远程计算机)旨在用于需要对多个资源进行身份验证的命令,例如访问远程网络共享。 此机制会增加远程操作的安全风险。 如果远程计算机遭到入侵,则传递给它的凭据可用于控制网络会话。

参数属性

类型:String
默认值:None
接受的值:Basic, CredSSP, Default, Digest, Kerberos, Negotiate
支持通配符:False
不显示:False

参数集

DefaultSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters

输入

String

可以通过管道将包含计算机名称的字符串传递给此 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 中,实现已更改以解决此问题。