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

[玩转系统] 远程PowerShell |在 PowerShell 中连接远程系统的步骤

作者:精品下载站 日期:2024-12-14 04:47:24 浏览:15 分类:玩电脑

远程PowerShell |在 PowerShell 中连接远程系统的步骤


[玩转系统] 远程PowerShell |在 PowerShell 中连接远程系统的步骤

远程 PowerShell 简介

PowerShell 不仅可以帮助管理员在本地系统或服务器上运行命令来管理环境,还允许用户连接到远程服务器或计算机。 PowerShell 的主要优势之一在于其使用各种技术的远程计算能力。 PowerShell 远程处理允许用户使用远程连接在任何 Windows 系统上执行 PowerShell cmdlet 或执行脚本或执行任何其他操作。 PowerShell 核心支持并使用 Windows Management Instrumentation (WMI)、Secure Shell (SSH) 或 WS- Management 等技术在远程系统中执行任务。本文将详细介绍如何使用 PowerShell 在远程系统中执行命令以及建立与远程计算机的连接的各种方式。

连接到远程系统涉及的步骤

连接到远程系统的第一步是在目标计算机上启用 PowerShell 远程工具。上述内容是通过在管理模式下打开 Windows PowerShell 并运行以下 cmdlet 来实现的。

启用-PSRemoting-Force

上述 cmdlet 启动 WinRM 服务。这将允许传入系统的连接并创建防火墙规则来实现此目的。如果您不想在执行每个步骤时收到提示,请运行带有force参数的cmdlet。

如果源计算机和目标计算机位于同一域中,则仅需要执行上述步骤。

如果系统未连接到同一域,则需要执行更多步骤。在此之前,必须在源将连接的计算机上启用远程处理。

为了使 PowerShell 远程处理功能发挥作用,必须确保网络必须是专用网络而不是公共网络。

然后必须使用计算机上的受信任主机设置建立计算机(源和目标)之间的信任

上述步骤可以使用以下cmdlet来实现

Set-Item wsman:\localhost\client\trustedhosts

在受信任的主机旁边,我们应该指定需要以逗号分隔的方式列出连接的计算机的 IP 地址。如果您想允许所有计算机连接,则应使用通配符“*”。运行上述 cmdlet 后,必须重新启动 WinRM 服务才能使设置生效。可以使用以下 cmdlet 来实现

重新启动服务WinRM

  • 这两个 cmdelt 都必须在所有源计算机和目标计算机上运行。
  • 配置完成后,可以通过运行以下 cmdlet 来验证与远程计算机的连接:
Test-WsMan <RemoteCOMPUTERName>
  • 指定必须在上述 cmdlet 中建立连接的计算机名称
  • 如果连接成功,则返回目标系统的WiRM服务的状态。

在没有启用远程处理配置的情况下,很少有 cmdlet 可以在远程计算机上执行。这是因为这些 cmdlet 将计算机名称作为参数。这些类型的 cmdlet 具有特定的通信协议并且适用于所有 Windows 计算机。

以下是上述类型的一些 cmdlet

  • Restart-Computer
  • Get-WmiObject
  • Get-WinEvent
  • Test-Connection

要在我们的会话中查找此类 cmdlet,可以使用以下 cmdlet

代码:

Get-Command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}

输出:

[玩转系统] 远程PowerShell |在 PowerShell 中连接远程系统的步骤

测试连接

要测试远程配置的状态,我们可以尝试使用以下 cmdlet 连接到远程计算机。 test-was man cmdlet 可用于检查 WinRM 服务是否正在目标计算机上运行。如果启用该服务,则会显示成功消息以及目标计算机详细信息,否则会引发错误消息。该 cmdlet 可以与目标系统的名称或 IP 地址一起使用。要测试本地 WinRM 服务的状态,可以使用 Test-WSMan。

测试-WSMan 10.20.20.22

[玩转系统] 远程PowerShell |在 PowerShell 中连接远程系统的步骤

测试-WSMan

[玩转系统] 远程PowerShell |在 PowerShell 中连接远程系统的步骤

连接和结束会话

要启动与远程计算机的会话,需要建立会话。建立会话后,命令提示符显示名称将更改为建立会话的计算机的显示名称。之后本地运行的命令将在远程计算机上执行,并将结果显示在本地计算机上。

输入-PSSession TestComputer。

要结束会话,请使用以下 cmdlet

退出-PSSession

在远程计算机上运行命令

在某些情况下,可能需要在多个远程系统上运行相同的命令。为每个会话建立一个会话并执行它们会很乏味。在这种情况下,可以使用 invoke-command cmdlet。此 cmdlet 可以将多个计算机名称或 IP 地址作为输入参数并执行这些命令并显示输出。

代码:

Invoke-Command -ComputerName testserver1, testserver2 -ScriptBlock {Get-UICulture}

输出:

[玩转系统] 远程PowerShell |在 PowerShell 中连接远程系统的步骤

运行脚本

还可以从本地系统在远程计算机上执行脚本。可以使用相同的调用命令来执行相同的操作。该脚本应该位于运行命令的本地系统上,也可以位于网络驱动器上。

Invoke-Command -ComputerName testServer01, testServer02 -FilePath c:\Scripts\test.ps1

在上面的命令中,脚本在提到的两台服务器上运行。

如果会话对象存储在变量中,则可以在它们上运行任何命令。由于会话被保存,因此一个命令的输入可以传递到另一命令。在这种情况下,会话不在本地计算机上。

$test=New-PSSession -ComputerName testServer01, testServer02
Invoke-Command -Session $test {$test1 = Get-HotFix}

可以使用 WSMan Provider 建立高级远程处理。

代码:

Write-Host "Welcome to the example of remoting in PowerShell"
Write-Host "The following cmdlet will be executed on two servers"
Invoke-Command -ComputerName testserver1,testeserver2 -ScriptBlock {Write-Host "Local system name is" $localhost}
Write-Host "Executing a script on remote server"
Invoke-Command -ComputerName Server01, Server02 -FilePath c:\Scripts\DiskCollect.ps1
Write-Host "script executed successfully"
Write-Host "Creating session example"
$cr=Get-Credential
$se = New-PSSession -Credential $cr -ComputerName testserver1,testserver2
Enter-PSSession $se
Write-Host "Session created"
Exit-PSSession
Remove-PSSession $sess
write-host "Session is closed"

输出:

[玩转系统] 远程PowerShell |在 PowerShell 中连接远程系统的步骤

结论

因此,本文详细介绍了 PowerShell 中的远程处理。它解释了如何建立连接以及连接到远程计算机之前需要完成的先决条件。它还通过各种示例解释了如何在远程系统上运行命令、如何执行脚本等。要详细了解更多信息,建议使用示例脚本。

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

取消回复欢迎 发表评论:

关灯