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-Command
的 ComputerName 参数的值中键入所有计算机名称。 用逗号分隔名称。
例如,以下命令在三台计算机上运行 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-Command
的 FilePath 参数。 无需复制任何文件。 例如,以下命令将在 S1 和 S2 计算机上运行 Sample.ps1
脚本:
Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1
PowerShell 会将脚本的结果返回到本地计算机。
如何停止远程命令
若要中断命令,请按 Ctrl+c。 PowerShell 会将中断请求传递给终止远程命令的远程计算机。
详细信息
有关远程处理系统要求的信息,请参阅 about_Remote_Requirements。
有关设置远程输出格式的帮助,请参阅 about_Remote_Output。
有关远程处理的工作原理、如何管理远程数据、特殊配置、安全问题和其他常见问题的信息,请参阅 PowerShell 远程处理常见问题解答。
有关解决远程处理错误的帮助,请参阅 about_Remote_Troubleshooting。
有关 PSSessions 和永久连接的信息,请参阅 about_PSSessions。
有关 PowerShell 后台作业的信息,请参阅 about_Jobs。