«

遠程登錄 Powershell

Paladin 发布于 阅读:8 Windows


使用PowerShell Remoting,您可以在远程Windows系统上运行PowerShell命令或访问完整的PowerShell会话。 它类似于SSH,用于访问其他操作系统上的远程终端。

默认情况下,PowerShell处于锁定状态,因此您必须先启用PowerShell Remoting。 如果您使用工作组而不是域(例如,在家庭网络中),则此设置过程会更加复杂,但是我们将逐步指导您。

在要远程访问的PC上启用PowerShell远程处理 (Enable PowerShell Remoting on the PC You Want to Access Remotely)

第一步是在要建立远程连接的PC上启用PowerShell Remoting。 在该PC上,您需要使用管理权限打开PowerShell。

在Windows 10中,按Windows + X,然后从“高级用户”菜单中选择PowerShell(Admin)。

在Windows 7或8中,单击“开始”,然后键入“ powershell”。 右键单击结果,然后选择“以管理员身份运行”。

在PowerShell窗口中,键入以下cmdlet(命令的PowerShell名称),然后按Enter:

Enable-PSRemoting -Force

此命令启动WinRM服务,将其设置为与系统一起自动启动,并创建允许传入连接的防火墙规则。 cmdlet的-Force部分告诉PowerShell执行这些操作,而不提示您执行每个步骤。

如果您的PC是域的一部分,那就是您要做的所有设置。 您可以跳过以测试您的连接。 如果您的计算机是工作组的一部分(它们可能位于家庭或小型企业网络中),则您还有更多的设置工作要做。

注意:在域环境中成功设置远程处理完全取决于网络的设置。 远程处理可能会被管理员配置的组策略自动禁用,甚至启用。 您可能也没有以管理员身份运行PowerShell所需的权限。 与往常一样,在尝试这种操作之前,请先咨询管理员。 他们可能有充分的理由不允许这样做,或者他们可能愿意为您进行设置。

设置工作组 (Set Up Your Workgroup)

如果您的计算机不在域中,则需要执行一些其他步骤来进行设置。 如上一节所述,您应该已经在要连接的PC上启用了远程处理。

注意:为了使PowerShell Remoting在工作组环境中工作,您必须将网络配置为私有而不是公共网络。 有关差异的更多信息,以及如何在已建立公共网络的情况下更改为专用网络的信息,请查看我们的专用和公共网络指南。

接下来,您需要在要连接的PC和要从其连接的PC上都配置TrustedHosts设置,以便计算机之间可以相互信任。 您可以通过以下两种方式之一来执行此操作。

如果您要在家庭网络上继续前进并信任任何PC进行远程连接,则可以在PowerShell中键入以下cmdlet(同样,您需要以管理员身份运行它)。

Set-Item wsman:\localhost\client\trustedhosts *

星号是所有PC的通配符。 相反,如果您想限制可以连接的计算机,则可以用逗号分隔的IP地址列表或认可的PC的计算机名称替换星号。

运行该命令后,您需要重新启动WinRM服务,以便新设置生效。 键入以下cmdlet,然后按Enter:

Restart-Service WinRM

请记住,您需要在要连接的PC以及要从其连接的任何PC上运行这两个cmdlet。

测试连接 (Test the Connection)

现在您已经为PowerShell Remoting设置了PC,现在该测试连接了。 在要从其访问远程系统的PC上,在PowerShell中键入以下cmdlet(将“ COMPUTER”替换为远程PC的名称或IP地址),然后按Enter:

Test-WsMan COMPUTER

这个简单的命令测试WinRM服务是否在远程PC上运行。 如果成功完成,您将在窗口中看到有关远程计算机的WinRM服务的信息-表示已启用WinRM并且您的PC可以通信。 如果命令失败,则会显示一条错误消息。

执行一个远程命令 (Execute a Single Remote Command)
To run a command on the remote system, use the Invoke-Command cmdlet using the following syntax:

若要在远程系统上运行命令,请使用以下语法使用Invoke-Command cmdlet:

Invoke-Command -ComputerName COMPUTER -ScriptBlock { COMMAND } -credential USERNAME

“计算机”代表远程PC的名称或IP地址。 “ COMMAND”是您要运行的命令。 “ USERNAME”是您要在远程计算机上运行命令的用户名。 系统将提示您输入用户名的密码。

这是一个例子。 我想查看IP地址为10.0.0.22的远程计算机上C:\目录的内容。 我想使用用户名“ wjgle”,所以我将使用以下命令:

Invoke-Command -ComputerName 10.0.0.22 -ScriptBlock { Get-ChildItem C:\ } -credential wjgle

开始远程会话 (Start a Remote Session)

如果您要在远程PC上运行多个cmdlet,而不必重复键入Invoke-Command cmdlet和远程IP地址,则可以启动远程会话。 只需键入以下cmdlet,然后按Enter:

Enter-PSSession -ComputerName COMPUTER -Credential USER

同样,将“ COMPUTER”替换为远程PC的名称或IP地址,并将“ USER”替换为要调用的用户帐户的名称。

提示符更改为指示您连接到的远程计算机,并且可以直接在远程系统上执行任意数量的PowerShell cmdlet。

PowerShell