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

[玩转系统] 启用 PSRemoting (Microsoft.PowerShell.Core)

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

启用 PSRemoting (Microsoft.PowerShell.Core)


启用 PSRemoting

模块 :Microsoft.PowerShell.Core

配置计算机以接收远程命令。

句法

Enable-PSRemoting
      [-Force]
      [-SkipNetworkProfileCheck]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

描述

此 cmdlet 仅适用于 Windows 平台。

Enable-PSRemoting cmdlet 将计算机配置为接收使用 WS-Management 技术发送的 PowerShell 远程命令。基于 WS-Management 的 PowerShell 远程处理当前仅在 Windows 平台上受支持。

Windows Server 平台上默认启用 PowerShell 远程处理。您可以使用 Enable-PSRemoting 在其他受支持的 Windows 版本上启用 PowerShell 远程处理,并在远程处理被禁用时重新启用它。

您只需在每台将接收命令的计算机上运行此命令一次。您不必在仅发送命令的计算机上运行它。由于该配置启动侦听器来接受远程连接,因此谨慎的做法是仅在需要时运行它。

当计算机位于公共网络上时,通常不允许在 Windows 客户端版本上启用 PowerShell 远程处理,但您可以使用 SkipNetworkProfileCheck 参数跳过此限制。有关详细信息,请参阅 SkipNetworkProfileCheck 参数的说明。

多个 PowerShell 安装可以并排存在于一台计算机上。运行 Enable-PSRemoting 将为您运行 cmdlet 的特定安装版本配置远程处理端点。因此,如果您在运行 PowerShell 6.2 时运行 Enable-PSRemoting,远程处理端点将配置运行 PowerShell 6.2 的端点。如果您在运行 PowerShell 7 预览版时运行 Enable-PSRemoting,则将配置运行 PowerShell 7 预览版的远程处理端点。

Enable-PSRemoting 根据需要创建两个远程处理端点配置。如果端点配置已经存在,则只需确保启用它们即可。创建的配置相同,但名称不同。将有一个与托管会话的 PowerShell 版本相对应的简单名称。另一个配置名称包含有关托管会话的 PowerShell 版本的更多详细信息。例如,在 PowerShell 6.2 中运行 Enable-PSRemoting 时,您将获得两个名为 PowerShell.6PowerShell.6.2.2 的已配置端点。这允许您使用简单名称 PowerShell.6 创建与最新 PowerShell 6 主机版本的连接。或者,您可以使用较长的名称 PowerShell.6.2.2 连接到特定的 PowerShell 主机版本。

要使用新启用的远程处理端点,您必须在使用 Invoke-CommandNew-PSSessionConfigurationName 参数按名称指定它们/code>,Enter-PSSession cmdlet。有关更多信息,请参见示例 4。

Enable-PSRemoting cmdlet 执行以下操作:

  • 运行 Set-WSManQuickConfig cmdlet,该命令执行以下任务:

    • 启动 WinRM 服务。
  • 将 WinRM 服务的启动类型设置为自动。
  • 创建一个侦听器来接受任何 IP 地址上的请求。
  • 为 WS-Management 通信启用防火墙例外。
  • 如果需要,创建简单且长名称的会话端点配置。
  • 启用所有会话配置。
  • 更改所有会话配置的安全描述符以允许远程访问。
  • 重新启动 WinRM 服务以使上述更改生效。
  • 要在 Windows 平台上运行此 cmdlet,请使用“以管理员身份运行”选项启动 PowerShell。此 cmdlet 在 Linux 或 MacOS 版本的 PowerShell 上不可用。

    警告

    此 cmdlet 不会影响 Windows PowerShell 创建的远程端点配置。它仅影响使用 PowerShell 版本 6 及更高版本创建的端点。要启用和禁用 Windows PowerShell 托管的 PowerShell 远程处理端点,请从 Windows PowerShell 会话中运行 Enable-PSRemoting cmdlet。

    示例

    示例 1:配置计算机以接收远程命令

    此命令将计算机配置为接收远程命令。

    Enable-PSRemoting
    
    WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
    does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
    PowerShell to affect all PowerShell remoting configurations.

    示例 2:将计算机配置为接收远程命令而不显示确认提示

    此命令将计算机配置为接收远程命令。 Force 参数抑制用户提示。

    Enable-PSRemoting -Force
    
    WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
    does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
    PowerShell to affect all PowerShell remoting configurations.

    示例 3:允许客户端远程访问

    此示例演示如何允许在 Windows 操作系统客户端版本上从公共网络进行远程访问。对于不同版本的 Windows,防火墙规则的名称可能不同。使用 Get-NetFirewallRule 查看规则列表。在启用防火墙规则之前,请查看规则中的安全设置以验证配置是否适合您的环境。

    Get-NetFirewallRule -Name 'WINRM*' | Select-Object -Property Name
    
    Name
    ----
    WINRM-HTTP-In-TCP-NoScope
    WINRM-HTTP-In-TCP
    WINRM-HTTP-Compat-In-TCP-NoScope
    WINRM-HTTP-Compat-In-TCP
    
    Enable-PSRemoting -SkipNetworkProfileCheck -Force
    Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any

    默认情况下,Enable-PSRemoting 创建允许从专用网络和域网络进行远程访问的网络规则。该命令使用 SkipNetworkProfileCheck 参数允许从同一本地子网中的公共网络进行远程访问。该命令指定Force参数来抑制确认消息。

    SkipNetworkProfileCheck 参数不会影响 Windows 操作系统的服务器版本,默认情况下允许从同一本地子网中的公共网络进行远程访问。

    NetSecurity 模块中的 Set-NetFirewallRule cmdlet 添加了一条防火墙规则,允许从任何远程位置从公共网络进行远程访问。这包括不同子网中的位置。

    示例 4:创建与新启用的端点配置的远程会话

    此示例演示如何在计算机上启用 PowerShell 远程处理、查找配置的端点名称以及创建到其中一个端点的远程会话。

    第一个命令在计算机上启用 PowerShell 远程处理。

    第二个命令列出端点配置。

    第三个命令创建到同一台计算机的远程 PowerShell 会话,并按名称指定 PowerShell.7 端点。远程会话将使用最新的 PowerShell 7 版本 (7.3.0) 托管。

    最后一个命令访问远程会话中的 $PSVersionTable 变量以显示托管该会话的 PowerShell 版本。

    Enable-PSRemoting -Force
    
    Get-PSSessionConfiguration
    
    $session = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
    
    Invoke-Command -Session $session -ScriptBlock { $PSVersionTable }
    
    WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
    does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
    PowerShell to affect all PowerShell remoting configurations.
    
    Name          : PowerShell.7
    PSVersion     : 7.3
    StartupScript :
    RunAsUser     :
    Permission    : NT AUTHORITY\INTERACTIVE AccessAllowed,
                    BUILTIN\Administrators AccessAllowed,
                    BUILTIN\Remote Management Users AccessAllowed
    
    Name          : PowerShell.7.3.0
    PSVersion     : 7.3
    StartupScript :
    RunAsUser     :
    Permission    : NT AUTHORITY\INTERACTIVE AccessAllowed,
                    BUILTIN\Administrators AccessAllowed,
                    BUILTIN\Remote Management Users AccessAllowed
    
    Name                           Value
    ----                           -----
    PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
    PSEdition                      Core
    PSRemotingProtocolVersion      2.3
    Platform                       Win32NT
    SerializationVersion           1.1.0.1
    GitCommitId                    6.2.2
    WSManStackVersion              3.0
    PSVersion                      6.2.2
    OS                             Microsoft Windows 10.0.18363

    笔记

    防火墙规则的名称可能会有所不同,具体取决于 Windows 版本。使用 Get-NetFirewallRule cmdlet 列出系统上的规则名称。

    参数

    -Confirm

    在运行 cmdlet 之前提示您进行确认。

    类型 :

    SwitchParameter

    别名:

    cf

    位置:

    命名

    默认值:

    False

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -Force

    强制运行命令而不要求用户确认。

    类型 :

    SwitchParameter

    位置:

    命名

    默认值:

    None

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -SkipNetworkProfileCheck

    指示当计算机位于公共网络上时,此 cmdlet 在 Windows 操作系统的客户端版本上启用远程处理。此参数为公共网络启用防火墙规则,仅允许来自同一本地子网中的计算机进行远程访问。

    此参数不会影响 Windows 操作系统的服务器版本,默认情况下,Windows 操作系统具有针对公共网络的本地子网防火墙规则。如果在服务器版本上禁用本地子网防火墙规则,Enable-PSRemoting 会重新启用它,无论此参数的值是什么。

    要删除本地子网限制并启用从公共网络上所有位置的远程访问,请使用 NetSecurity 模块中的 Set-NetFirewallRule cmdlet。

    此参数是在 PowerShell 3.0 中引入的。

    类型 :

    SwitchParameter

    位置:

    命名

    默认值:

    None

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -WhatIf

    显示 cmdlet 运行时会发生什么情况。该 cmdlet 未运行。

    类型 :

    SwitchParameter

    别名:

    wi

    位置:

    命名

    默认值:

    False

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    输入

    您无法通过管道将对象传递到此 cmdlet。

    输出

    字符串

    此 cmdlet 返回描述其结果的字符串。

    笔记

    此 cmdlet 仅在 Windows 平台上可用。

    在 Windows 操作系统的服务器版本上,Enable-PSRemoting 为允许远程访问的专用网络和域网络创建防火墙规则,并为公共网络创建仅允许从同一网络中的计算机进行远程访问的防火墙规则。本地子网。

    在 Windows 操作系统的客户端版本上,Enable-PSRemoting 为允许不受限制的远程访问的专用网络和域网络创建防火墙规则。要为公共网络创建允许从同一本地子网进行远程访问的防火墙规则,请使用 SkipNetworkProfileCheck 参数。

    在 Windows 操作系统的客户端或服务器版本上,要为公共网络创建防火墙规则以删除本地子网限制并允许远程访问,请使用 NetSecurity 模块中的 Set-NetFirewallRule cmdlet 来运行以下命令:Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

    Enable-PSRemoting 通过将所有会话配置的 Enabled 属性值设置为 $True 来启用所有会话配置。

    Enable-PSRemoting 删除 Deny_AllNetwork_Deny_All 设置。这提供了对保留供本地使用的会话配置的远程访问。

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

    取消回复欢迎 发表评论:

    关灯