Partilhar via


Disable-PSRemoting

Impede que usuários remotos executem comandos no computador local.

Sintaxe

Default (Predefinição)

Disable-PSRemoting
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Description

O cmdlet Disable-PSRemoting impede que usuários em outros computadores executem comandos no computador local.

Disable-PSRemoting bloqueia o acesso remoto a todas as configurações de sessão no computador local. Isso impede que usuários remotos criem sessões temporárias ou persistentes para o computador local. Disable-PSRemoting não impede que os usuários do computador local criem sessões (PSSessions) no computador local ou em computadores remotos.

Para rehabilitar o acesso remoto a todas as configurações de sessão, use o cmdlet Enable-PSRemoting. Para habilitar o acesso remoto a configurações de sessão selecionadas, use o parâmetro AccessMode do cmdlet Set-PSSessionConfiguration. Você também pode usar os cmdlets Enable-PSSessionConfiguration e Disable-PSSessionConfiguration para habilitar e desabilitar configurações de sessão para todos os usuários. Para obter mais informações sobre configurações de sessão, consulte about_Session_Configurations.

No Windows PowerShell 2.0, Disable-PSRemoting impede que todos os usuários criem sessões gerenciadas pelo usuário no computador local. No Windows PowerShell 3.0, Disable-PSRemoting impede que usuários em outros computadores criem sessões gerenciadas pelo usuário no computador local, mas permite que os usuários do computador local criem sessões de loopback gerenciadas pelo usuário.

Para executar esse cmdlet, inicie o Windows PowerShell com a opção Executar como administrador.

CUIDADO: Em sistemas que tenham o Windows PowerShell 3.0 e o mecanismo do Windows PowerShell 2.0, não use o Windows PowerShell 2.0 para executar os cmdlets Enable-PSRemoting e Disable-PSRemoting. Os comandos podem parecer bem-sucedidos, mas a comunicação remota não está configurada corretamente. É provável que os comandos remotos e as tentativas posteriores de ativar e desativar a comunicação remota falhem.

Exemplos

Exemplo 1: Impedir o acesso remoto a todas as configurações de sessão

PS C:\> Disable-PSRemoting

Este comando impede o acesso remoto a todas as configurações de sessão no computador.

Exemplo 2: Impedir o acesso remoto a todas as configurações de sessão sem aviso de confirmação

PS C:\> Disable-PSRemoting -Force

Este comando impede o acesso remoto a todas as configurações de sessão no computador sem avisar.

Exemplo 3: Efeitos da execução deste cmdlet

PS C:\> Disable-PSRemoting -Force


[ADMIN] PS C:\> New-PSSession -ComputerName localhost


Id Name       ComputerName    State    Configuration         Availability
-- ----       ------------    -----    -------------         ------------
1 Session1   Server02...     Opened   Microsoft.PowerShell     Available
# On Server02 remote computer:
PS C:\> New-PSSession -ComputerName Server01

[SERVER01] Connecting to remote server failed with the following error
message : Access is denied. For more information, see the about_Remote_Troubleshooting Help topic.
+ CategoryInfo          : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [], PSRemotingTransportException
+ FullyQualifiedErrorId : PSSessionOpenFailed

Este exemplo mostra o efeito do uso do cmdlet Disable-PSRemoting. Para executar essa sequência de comandos, inicie o Windows PowerShell com a opção Executar como administrador.

O primeiro comando usa o cmdlet Disable-PSRemoting para desabilitar todas as configurações de sessão registradas no computador Server01.

O segundo comando usa o cmdlet New-PSSession para criar uma sessão remota para o computador local (também conhecido como "loopback"). O comando é bem-sucedido.

O terceiro comando é executado no computador remoto Server02. O comando usa o cmdlet New-PSSession para criar uma sessão para o computador remoto Server01. Como o acesso remoto está desativado, o comando falha.

Exemplo 4: Efeitos da execução deste cmdlet e Enable-PSRemoting

PS C:\> Disable-PSRemoting -force

[ADMIN] PS C:\> Get-PSSessionConfiguration | Format-Table -Property Name, Permission -Auto

Name                          Permission
----                          ----------
microsoft.powershell          NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.powershell.workflow NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.powershell32        NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.ServerManager       NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
WithProfile                   NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed


[ADMIN] PS C:\> Enable-PSRemoting -Force
WinRM already is set up to receive requests on this machine.
WinRM already is set up for remote management on this machine.

[ADMIN] PS C:\> Get-PSSessionConfiguration | Format-Table -Property Name, Permission -Auto

Name                          Permission
----                          ----------
microsoft.powershell          BUILTIN\Administrators AccessAllowed
microsoft.powershell.workflow BUILTIN\Administrators AccessAllowed
microsoft.powershell32        BUILTIN\Administrators AccessAllowed
microsoft.ServerManager       BUILTIN\Administrators AccessAllowed
WithProfile                   BUILTIN\Administrators AccessAllowed

Este exemplo mostra o efeito nas configurações de sessão do uso dos cmdlets Disable-PSRemoting e Enable-PSRemoting.

O primeiro comando usa o cmdlet Disable-PSRemoting para desabilitar o acesso remoto a todas as configurações de sessão. O parâmetro Force suprime todos os prompts do usuário.

O segundo comando usa o cmdlet Get-PSSessionConfiguration para exibir as configurações de sessão no computador. O comando usa um operador de pipeline para enviar os resultados para um comando Format-Table, que exibe apenas as propriedades Name e Permission das configurações em uma tabela.

A saída mostra que apenas os usuários remotos têm acesso negado às configurações. Os membros do grupo Administradores no computador local podem usar as configurações de sessão. A saída também mostra que o comando afeta todas as configurações de sessão que incluem a configuração de sessão WithProfile criada pelo usuário.

O terceiro comando usa o cmdlet Enable-PSRemoting para rehabilitar o acesso remoto a todas as configurações de sessão no computador. O comando usa o parâmetro Force para suprimir todos os prompts do usuário e reiniciar o serviço WinRM sem avisar.

O quarto comando usa o Get-PSSessionConfiguration e cmdlets Format-Table para exibir os nomes e permissões das configurações de sessão. Os resultados mostram que os descritores de segurança AccessDenied foram removidos de todas as configurações de sessão.

Exemplo 5: Impedir o acesso remoto a configurações de sessão com descritores de segurança personalizados

PS C:\> Register-PSSessionConfiguration -Name Test -FilePath .\TestEndpoint.pssc -ShowSecurityDescriptorUI

[ADMIN] PS C:\> Get-PSSessionConfiguration | Format-Table -Property Name, Permission -Wrap

Name                          Permission
----                          ----------
microsoft.powershell          BUILTIN\Administrators AccessAllowed
Test                          NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed,
DOMAIN01\User01 AccessAllowed

[ADMIN] PS C:\> Disable-PSRemoting -Force


[ADMIN] PS C:\> Get-PSSessionConfiguration | Format-Table -Property Name, Permission -Wrap

Name                          Permission
----                          ----------
microsoft.powershell          NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
Test                          NT AUTHORITY\NETWORK AccessDenied, NTAUTHORITY\INTERACTIVE AccessAllowed,
BUILTIN\Administrators AccessAllowed, DOMAIN01\User01 AccessAllowed

# Domain01\User01

PS C:\> New-PSSession -ComputerName Server01 -ConfigurationName Test
[Server01] Connecting to remote server failed with the following error message : Access is denied. For more information, see the about_Rem
ote_Troubleshooting Help topic.
+ CategoryInfo          : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [], PSRemotingTransportException
+ FullyQualifiedErrorId : PSSessionOpenFailed

Este exemplo demonstra que o cmdlet Disable-PSRemoting desabilita o acesso remoto a todas as configurações de sessão que incluem configurações de sessão com descritores de segurança personalizados.

O primeiro comando usa o cmdlet Register-PSSessionConfiguration para criar a configuração da sessão de teste. O comando usa o parâmetro FilePath para especificar um arquivo de configuração de sessão que personaliza a sessão e o parâmetro ShowSecurityDescriptorUI para exibir uma caixa de diálogo que define permissões para a configuração da sessão. Na caixa de diálogo Permissões, criamos permissões personalizadas de acesso total para o usuário Domain01\User01.

O segundo comando usa o Get-PSSessionConfiguration e cmdlets Format-Table para exibir as configurações de sessão e suas propriedades. A saída mostra que a configuração da sessão de teste permite acesso interativo e permissões especiais para o usuário Domain01\User01.

O terceiro comando usa o cmdlet Disable-PSRemoting para desabilitar o acesso remoto a todas as configurações de sessão.

O quarto comando usa os cmdlets Get-PSSessionConfiguration e Format-Table para exibir as configurações de sessão e suas propriedades. A saída mostra que um descritor de segurança AccessDenied para todos os usuários da rede é adicionado a todas as configurações de sessão que incluem a configuração de sessão de teste. Embora os outros descritores de segurança não sejam alterados, o descritor de segurança "network_deny_all" tem precedência.

O quinto comando mostra que o comando Disable-PSRemoting impede que até mesmo o usuário Domain01\User01 que tenha permissões especiais para a configuração da sessão de teste use a configuração da sessão de teste para se conectar ao computador remotamente.

Exemplo 6: Reativar o acesso remoto às configurações de sessão selecionadas

PS C:\> Disable-PSRemoting -Force


[ADMIN] PS C:\> Get-PSSessionConfiguration | Format-Table -Property Name, Permission -Auto

Name                          Permission
----                          ----------
microsoft.powershell          NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.powershell.workflow NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.powershell32        NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.ServerManager       NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
WithProfile                   NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed

[ADMIN] PS C:\> Set-PSSessionConfiguration -Name Microsoft.ServerManager -AccessMode Remote -Force

[ADMIN] PS C:\> Get-PSSessionConfiguration | Format-Table -Property Name, Permission -Auto

Name                          Permission
----                          ----------
microsoft.powershell          NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.powershell.workflow NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.powershell32        NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed
microsoft.ServerManager       BUILTIN\Administrators AccessAllowed
WithProfile                   NT AUTHORITY\NETWORK AccessDenied, BUILTIN\Administrators AccessAllowed

Este exemplo mostra como reativar o acesso remoto somente às configurações de sessão selecionadas.

O primeiro comando usa o cmdlet Disable-PSRemoting para desabilitar o acesso remoto a todas as configurações de sessão.

O segundo comando usa o Get-PSSessionConfiguration e cmdlets Format-Table para exibir as configurações de sessão e suas propriedades. A saída mostra que um descritor de segurança AccessDenied para todos os usuários da rede é adicionado a todas as configurações de sessão.

O terceiro comando usa o cmdlet Set-PSSessionConfiguration. O comando usa o parâmetro AccessMode com um valor Remote para habilitar o acesso remoto à configuração de sessão Microsoft.ServerManager. Você também pode usar o parâmetro AccessMode para habilitar o acesso local e desabilitar as configurações de sessão.

O quarto comando usa os cmdlets Get-PSSessionConfiguration e Format-Table para exibir as configurações de sessão e suas propriedades. A saída mostra que o descritor de segurança AccessDenied para todos os usuários da rede foi removido, restaurando assim o acesso remoto à configuração de sessão Microsoft.ServerManager.

Parâmetros

-Confirm

Solicita confirmação antes de executar o cmdlet.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False
Aliases:Cf.

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Force

Força o comando a ser executado sem pedir a confirmação do usuário.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-WhatIf

Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False
Aliases:Wi

Conjuntos de parâmetros

(All)
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

CommonParameters

Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.

Entradas

None

Não é possível canalizar a entrada para este cmdlet.

Saídas

None

Este cmdlet não retorna nenhum objeto.

Notas

  • A desativação das configurações de sessão não desfaz todas as alterações feitas pelos cmdlets Enable-PSRemoting ou Enable-PSSessionConfiguration. Talvez seja necessário desfazer as seguintes alterações manualmente.

Pare e desative o serviço WinRM.

2. Exclua o ouvinte que aceita solicitações em qualquer endereço IP.

3. Desative as exceções de firewall para comunicações WS-Management.

4. Restaure o valor de LocalAccountTokenFilterPolicy para 0, que restringe o acesso remoto aos membros do grupo Administradores no computador.

Uma configuração de sessão é um grupo de configurações que definem o ambiente para uma sessão. Cada sessão que se conecta ao computador deve usar uma das configurações de sessão registradas no computador. Ao negar o acesso remoto a todas as configurações de sessão, você efetivamente impede que usuários remotos estabeleçam sessões que se conectam ao computador.

No Windows PowerShell 2.0, Disable-PSRemoting adiciona uma entrada Deny_All aos descritores de segurança de todas as configurações de sessão. Essa configuração impede que todos os usuários criem sessões gerenciadas pelo usuário no computador local. No Windows PowerShell 3.0, Disable-PSRemoting adiciona uma entrada Network_Deny_All aos descritores de segurança de todas as configurações de sessão. Essa configuração impede que usuários em outros computadores criem sessões gerenciadas pelo usuário no computador local, mas permite que os usuários do computador local criem sessões de loopback gerenciadas pelo usuário.

No Windows PowerShell 2.0, Disable-PSRemoting é o equivalente a Disable-PSSessionConfiguration -Name *. No Windows PowerShell 3.0 e versões posteriores, Disable-PSRemoting é o equivalente a Set-PSSessionConfiguration -Name \<Configuration name\> -AccessMode Local

No Windows PowerShell 2.0, Disable-PSRemoting é uma função. A partir do Windows PowerShell 3.0, é um cmdlet.