当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 运行远程命令

作者:精品下载站 日期:2024-12-14 02:58:30 浏览:15 分类:玩电脑

运行远程命令


您可以使用单个 PowerShell 命令在一台或数百台计算机上运行命令。 Windows PowerShell 支持使用各种技术的远程计算,包括 WMI、RPC 和 WS-Management。

PowerShell 支持 WMI、WS-Management 和 SSH 远程处理。在 PowerShell 7 及更高版本中,仅 Windows 支持 RPC。

有关 PowerShell 中远程处理的更多信息,请参阅以下文章:

  • PowerShell 中的 SSH 远程处理
  • PowerShell 中的 WSMan 远程处理

无需配置的 Windows PowerShell 远程处理

许多 Windows PowerShell cmdlet 都具有 ComputerName 参数,使您能够收集数据并更改一台或多台远程计算机上的设置。这些 cmdlet 使用不同的通信协议,并且可以在所有 Windows 操作系统上运行,无需任何特殊配置。

这些 cmdlet 包括:

  • Restart-Computer
  • Test-Connection
  • Clear-EventLog
  • Get-EventLog
  • Get-HotFix
  • Get-Process
  • Get-Service
  • Set-Service
  • Get-WinEvent
  • Get-WmiObject

通常,无需特殊配置即可支持远程处理的 cmdlet 具有 ComputerName 参数,但没有 Session 参数。要在会话中查找这些 cmdlet,请键入:

Get-Command | Where-Object {
    $_.Parameters.Keys -contains "ComputerName" -and
    $_.Parameters.Keys -notcontains "Session"
}

Windows PowerShell 远程处理

使用 WS-Management 协议,Windows PowerShell 远程处理允许您在一台或多台远程计算机上运行任何 Windows PowerShell 命令。您可以在远程计算机上建立持久连接、启动交互式会话以及运行脚本。

要使用 Windows PowerShell 远程处理,必须将远程计算机配置为进行远程管理。有关详细信息(包括说明),请参阅关于远程要求。

配置 Windows PowerShell 远程处理后,您可以使用许多远程处理策略。本文仅列出其中的一些。有关详细信息,请参阅关于远程。

开始互动会话

要启动与单个远程计算机的交互式会话,请使用 Enter-PSSession cmdlet。例如,要启动与 Server01 远程计算机的交互式会话,请键入:

Enter-PSSession Server01

命令提示符更改为显示远程计算机的名称。您在提示符处键入的任何命令都将在远程计算机上运行,并且结果将显示在本地计算机上。

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

Exit-PSSession

有关 Enter-PSSessionExit-PSSession cmdlet 的详细信息,请参阅:

  • 输入-PSSession
  • 退出-PSSession

运行远程命令

要在一台或多台计算机上运行命令,请使用 Invoke-Command cmdlet。例如,要在 Server01 和 Server02 远程计算机上运行 Get-UICulture 命令,请键入:

Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {Get-UICulture}

输出将返回到您的计算机。

LCID    Name     DisplayName               PSComputerName
----    ----     -----------               --------------
1033    en-US    English (United States)   server01.corp.fabrikam.com
1033    en-US    English (United States)   server02.corp.fabrikam.com

运行脚本

要在一台或多台远程计算机上运行脚本,请使用 Invoke-Command cmdlet 的 FilePath 参数。该脚本必须位于本地计算机上或可由本地计算机访问。结果将返回到您的本地计算机。

例如,以下命令在远程计算机 Server01 和 Server02 上运行 DiskCollect.ps1 脚本。

Invoke-Command -ComputerName Server01, Server02 -FilePath c:\Scripts\DiskCollect.ps1

建立持久连接

使用 New-PSSession cmdlet 在远程计算机上创建持久会话。以下示例在 Server01 和 Server02 上创建远程会话。会话对象存储在 $s 变量中。

$s = New-PSSession -ComputerName Server01, Server02

现在会话已建立,您可以在其中运行任何命令。由于会话是持久的,因此您可以从一个命令收集数据并在另一命令中使用它。

例如,以下命令在 $s 变量的会话中运行 Get-HotFix 命令,并将结果保存在 $h 中多变的。 $h 变量在 $s 的每个会话中创建,但在本地会话中不存在。

Invoke-Command -Session $s {$h = Get-HotFix}

现在,您可以将 $h 变量中的数据与同一会话中的其他命令一起使用。结果显示在本地计算机上。例如:

Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NT AUTHORITY\SYSTEM"}}

高级远程处理

PowerShell 包含的 cmdlet 允许您:

  • 从本地和远程端配置和创建远程会话
  • 创建自定义和受限会话
  • 从远程会话导入实际在远程会话上隐式运行的命令
  • 配置远程会话的安全性

Windows 上的 PowerShell 包含 WSMan 提供程序。该提供程序创建一个 WSMAN: 驱动器,让您可以在本地计算机和远程计算机上的配置设置层次结构中导航。

有关 WSMan 提供程序的详细信息,请参阅 WSMan 提供程序和关于 WS-Management Cmdlet,或者在 Windows PowerShell 控制台中键入 Get-Help wsman

有关更多信息,请参阅:

  • PowerShell 远程处理常见问题解答
  • 注册-PSSessionConfiguration
  • 导入-PSSession

有关远程处理错误的帮助,请参阅 about_Remote_Troubleshooting。

参见

  • about_Remote
  • about_Remote_Requirements
  • about_Remote_故障排除
  • about_PSSessions
  • about_WS-管理_Cmdlet
  • Invoke-Command
  • 导入-PSSession
  • 新 PS 会话
  • 注册-PSSessionConfiguration
  • WSMan 提供商

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯