about_Remote

简短说明

介绍如何在 PowerShell 中运行远程命令。

长说明

可以使用临时连接或永久连接在单个或多台远程计算机上运行远程命令。 也可以使用单个远程计算机启动交互式会话。

注意

若要使用 PowerShell 远程处理,必须配置本地和远程计算机进行远程处理。 有关详细信息,请参阅 about_Remote_Requirements

如何启动交互式会话

运行远程命令的最简单方法是启动与远程计算机的交互式会话。

当会话启动时,你键入的命令将在远程计算机上运行,就像你直接在远程计算机上键入它们一样。 在每个交互式会话中,只能连接到一台计算机。

若要启动交互式会话,请使用 Enter-PSSession cmdlet。 以下命令将启动与 Server01 计算机的交互式会话:

Enter-PSSession Server01

PowerShell 将命令提示符更改为包含远程计算机的名称。

Server01\PS>

现在,可以在 Server01 计算机上键入命令。

若要结束交互会话,请键入:

Exit-PSSession

有关详细信息,请参阅 Enter-PSSession

如何运行远程命令

若要在远程计算机上运行其他命令,请使用 Invoke-Command cmdlet。

若要运行单个命令或几个不相关的命令,请使用 Invoke-Command ComputerName 参数来指定远程计算机。 使用 ScriptBlock 参数指定命令。

例如,以下命令在 Server01 计算机上运行 Get-Culture 命令。

Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}

如何建立永久连接

使用 Invoke-Command cmdlet 的 ComputerName 参数时,PowerShell 会建立与远程计算机的临时连接。 然后,命令完成后,它将关闭该连接。 在此临时会话中定义的任何变量或函数都将丢失。

若要创建与远程计算机的永久连接,请使用 New-PSSession cmdlet。 例如,以下命令将在 Server01 和 Server02 计算机上创建 PSSession,然后将 PSSession 保存在 $s 变量中。

$s = New-PSSession -ComputerName Server01, Server02

如何在 PSSession 中运行命令

通过 PSSession,可以运行一系列共享数据的远程命令,例如函数、别名和变量值。 若要在 PSSession 中运行命令,请使用 Invoke-Command cmdlet 的 Session 参数。

例如,以下命令使用 Invoke-Command cmdlet 在 Server01 和 Server02 计算机上的 PSSessions 中运行 Get-Process 命令。 该命令将进程保存在每个 PSSession 中的 $p 变量中。

Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}

由于 PSSession 使用永久连接,因此可以在使用 $p 变量的同一 PSSession 中运行另一个命令。 以下命令将计算保存在 $p 中的进程数。

Invoke-Command -Session $s -ScriptBlock {$p.count}

如何在多台计算机上运行远程命令

若要在多台计算机上运行远程命令,请在 Invoke-CommandComputerName 参数的值中键入所有计算机名称。 用逗号分隔名称。

例如,以下命令在三台计算机上运行 Get-Culture 命令:

Invoke-Command -ComputerName S1, S2, S3 -ScriptBlock {Get-Culture}

还可以在多个 PSSessions 中运行命令。 以下命令将在 Server01、Server02 和 Server03 计算机上创建 PSSession,然后在每个 PSSessions 中运行 Get-Culture 命令。

$s = New-PSSession -ComputerName S1, S2, S3
Invoke-Command -Session $s -ScriptBlock {Get-Culture}

若要包含本地计算机列表,请键入本地计算机的名称、键入点 (.) 或键入 localhost

Invoke-Command -ComputerName S1, S2, S3, localhost -ScriptBlock {Get-Culture}

如何在远程计算机上运行脚本

若要在远程计算机上运行本地脚本,请使用 Invoke-CommandFilePath 参数。 无需复制任何文件。 例如,以下命令将在 S1 和 S2 计算机上运行 Sample.ps1 脚本:

Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1

PowerShell 会将脚本的结果返回到本地计算机。

如何停止远程命令

若要中断命令,请按 Ctrl+c。 PowerShell 会将中断请求传递给终止远程命令的远程计算机。

详细信息

另请参阅