Enter-PSSession
Inicia uma sessão interativa com um computador remoto.
Sintaxe
Enter-PSSession
[-ComputerName] <String>
[-EnableNetworkAccess]
[-Credential <PSCredential>]
[-ConfigurationName <String>]
[-Port <Int32>]
[-UseSSL]
[-ApplicationName <String>]
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[<CommonParameters>]
Enter-PSSession
[[-Session] <PSSession>]
[<CommonParameters>]
Enter-PSSession
[[-ConnectionUri] <Uri>]
[-EnableNetworkAccess]
[-Credential <PSCredential>]
[-ConfigurationName <String>]
[-AllowRedirection]
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[<CommonParameters>]
Enter-PSSession
[-InstanceId <Guid>]
[<CommonParameters>]
Enter-PSSession
[[-Id] <Int32>]
[<CommonParameters>]
Enter-PSSession
[-Name <String>]
[<CommonParameters>]
Enter-PSSession
[-VMId] <Guid>
-Credential <PSCredential>
[-ConfigurationName <String>]
[<CommonParameters>]
Enter-PSSession
[-VMName] <String>
-Credential <PSCredential>
[-ConfigurationName <String>]
[<CommonParameters>]
Enter-PSSession
[-ContainerId] <String>
[-ConfigurationName <String>]
[-RunAsAdministrator]
[<CommonParameters>]
Description
O Enter-PSSession
cmdlet inicia uma sessão interativa com um único computador remoto. Durante a sessão, os comandos digitados são executados no computador remoto, como se você estivesse digitando diretamente no computador remoto. Só pode ter uma sessão interativa de cada vez.
Normalmente, você usa o parâmetro ComputerName para especificar o nome do computador remoto.
No entanto, você também pode usar uma sessão criada usando o New-PSSession
cmdlet para a sessão interativa. No entanto, não é possível usar os Disconnect-PSSession
cmdlets , Connect-PSSession
ou Receive-PSSession
para se desconectar ou se reconectar a uma sessão interativa.
Para encerrar a sessão interativa e se desconectar do computador remoto, use o Exit-PSSession
cmdlet ou digite exit
.
Importante
Enter-PSSession
foi concebido para substituir a sessão interativa atual por uma nova sessão remota interativa. Você não deve chamá-lo de dentro de uma função ou script ou passando-o como um comando para o powershell.exe
executável.
Exemplos
Exemplo 1: Iniciar uma sessão interativa
PS C:\> Enter-PSSession
[localhost]: PS C:\>
Este comando inicia uma sessão interativa no computador local. O prompt de comando é alterado para indicar que você está executando comandos em uma sessão diferente.
Os comandos inseridos são executados na nova sessão e os resultados são retornados para a sessão padrão como texto.
Exemplo 2: Trabalhar com uma sessão interativa
O primeiro comando usa o Enter-PSSession
cmdlet para iniciar uma sessão interativa com Server01, um computador remoto. Quando a sessão é iniciada, o prompt de comando muda para incluir o nome do computador.
O segundo comando obtém o processo do PowerShell e redireciona a saída para o Process.txt
arquivo.
O comando é enviado para o computador remoto e o arquivo é salvo no computador remoto.
O terceiro comando usa a palavra-chave Exit para encerrar a sessão interativa e fechar a conexão.
O quarto comando confirma que o arquivo Process.txt está no computador remoto. Um Get-ChildItem
comando ("dir") no computador local não consegue localizar o ficheiro.
PS C:\> Enter-PSSession -ComputerName Server01
[Server01]: PS C:\>
[Server01]: PS C:\> Get-Process PowerShell > C:\ps-test\Process.txt
[Server01]: PS C:\> exit
PS C:\>
PS C:\> dir C:\ps-test\Process.txt
Get-ChildItem : Cannot find path 'C:\ps-test\Process.txt' because it does not exist.
At line:1 char:4
+ dir <<<< c:\ps-test\Process.txt
Este comando mostra como trabalhar em uma sessão interativa com um computador remoto.
Exemplo 3: Usar o parâmetro Session
PS> $s = New-PSSession -ComputerName Server01
PS> Enter-PSSession -Session $s
[Server01]: PS>
Esses comandos usam o parâmetro Session de Enter-PSSession
para executar a sessão interativa em uma sessão existente do PowerShell (PSSession).
Exemplo 4: Iniciar uma sessão interativa e especificar os parâmetros Port e Credential
PS> Enter-PSSession -ComputerName Server01 -Port 90 -Credential Domain01\User01
[Server01]: PS>
Este comando inicia uma sessão interativa com o computador Server01. Ele usa o parâmetro Port para especificar a porta e o parâmetro Credential para especificar a conta de um usuário que tem permissão para se conectar ao computador remoto.
Exemplo 5: Parar uma sessão interativa
PS> Enter-PSSession -ComputerName Server01
[Server01]: PS> Exit-PSSession
PS>
Este exemplo mostra como iniciar e parar uma sessão interativa. O primeiro comando usa o Enter-PSSession
cmdlet para iniciar uma sessão interativa com o computador Server01.
O segundo comando usa o Exit-PSSession
cmdlet para encerrar a sessão. Você também pode usar a palavra-chave Exit para encerrar a sessão interativa. Exit-PSSession
e Exit têm o mesmo efeito.
Parâmetros
-AllowRedirection
Permite o redirecionamento dessa conexão para um URI (Uniform Resource Identifier) alternativo. Por padrão, o redirecionamento não é permitido.
Quando você usa o parâmetro ConnectionURI , o destino remoto pode retornar uma instrução para redirecionar para um URI diferente. Por padrão, o PowerShell não redireciona conexões, mas você pode usar esse parâmetro para permitir que ele redirecione a conexão.
Você também pode limitar o número de vezes que a conexão é redirecionada alterando o valor da opção de sessão MaximumConnectionRedirectionCount . Use o parâmetro MaximumRedirection do New-PSSessionOption
cmdlet ou defina a propriedade MaximumConnectionRedirectionCount da variável de $PSSessionOption
preferência. O valor padrão é 5.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-ApplicationName
Especifica o segmento de nome do aplicativo do URI de conexão. Use esse parâmetro para especificar o nome do aplicativo quando não estiver usando o parâmetro ConnectionURI no comando.
O valor padrão é o valor da variável de $PSSessionApplicationName
preferência no computador local. Se essa variável de preferência não estiver definida, o valor padrão será WSMAN. Esse valor é apropriado para a maioria dos usos. Para obter mais informações, consulte about_Preference_Variables.
O serviço WinRM usa o nome do aplicativo para selecionar um ouvinte para atender à solicitação de conexão. O valor desse parâmetro deve corresponder ao valor da propriedade URLPrefix de um ouvinte no computador remoto.
Tipo: | String |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-Authentication
Especifica o mecanismo usado para autenticar as credenciais do usuário. Os valores aceitáveis para este parâmetro são:
- Predefinido
- Básica
- Credssp
- Resumo
- Kerberos
- Negociar
- NegociarComImplicitCredential
O valor padrão é Default.
A autenticação CredSSP está disponível apenas no Windows Vista, Windows Server 2008 e versões posteriores do sistema operacional Windows.
Para obter mais informações sobre os valores desse parâmetro, consulte AuthenticationMechanism Enum.
Atenção
A autenticação CredSSP (Credential Security Support Provider), na qual as credenciais do usuário são passadas para um computador remoto para ser autenticado, foi projetada para comandos que exigem autenticação em mais de um recurso, como acessar um compartilhamento de rede remoto. Este mecanismo aumenta o risco de segurança da operação remota. Se o computador remoto estiver comprometido, as credenciais que são passadas para ele podem ser usadas para controlar a sessão de rede.
Tipo: | AuthenticationMechanism |
Valores aceites: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-CertificateThumbprint
Especifica o certificado de chave pública digital (X509) de uma conta de usuário que tem permissão para executar essa ação. Insira a impressão digital do certificado.
Os certificados são usados na autenticação baseada em certificado de cliente. Eles podem ser mapeados apenas para contas de usuário locais; eles não funcionam com contas de domínio.
Para obter um certificado, use o Get-Item
comando ou Get-ChildItem
na unidade PowerShell Cert:.
Tipo: | String |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-ComputerName
Especifica um nome de computador. Este cmdlet inicia uma sessão interativa com o computador remoto especificado. Insira apenas um nome de computador. A predefinição é o computador local.
Digite o nome NetBIOS, o endereço IP ou o nome de domínio totalmente qualificado do computador. Você também pode canalizar um nome de computador para Enter-PSSession
.
Para usar um endereço IP no valor do parâmetro ComputerName , o comando deve incluir o parâmetro Credential . Além disso, o computador deve ser configurado para transporte HTTPS ou o endereço IP do computador remoto deve ser incluído na lista WinRM TrustedHosts no computador local. Para obter instruções sobre como adicionar um nome de computador à lista TrustedHosts, consulte "Como adicionar um computador à lista de hosts confiáveis" no about_Remote_Troubleshooting.
Nota
No sistema operacional Windows, para incluir o computador local no valor do parâmetro ComputerName , você deve iniciar o PowerShell com a opção Executar como administrador.
Tipo: | String |
Aliases: | Cn |
Position: | 0 |
Default value: | None |
Necessário: | True |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-ConfigurationName
Especifica a configuração de sessão usada para a sessão interativa.
Insira um nome de configuração ou o URI de recurso totalmente qualificado para uma configuração de sessão. Se você especificar apenas o nome da configuração, o seguinte URI do esquema será precedido: http://schemas.microsoft.com/powershell
.
A configuração da sessão para uma sessão está localizada no computador remoto. Se a configuração de sessão especificada não existir no computador remoto, o comando falhará.
O valor padrão é o valor da variável de $PSSessionConfigurationName
preferência no computador local. Se essa variável de preferência não estiver definida, o padrão será Microsoft.PowerShell. Para obter mais informações, consulte about_Preference_Variables.
Tipo: | String |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-ConnectionUri
Especifica um URI que define o ponto de extremidade de conexão para a sessão. O URI deve ser totalmente qualificado. O formato desta cadeia de caracteres é o seguinte:
<Transport>://<ComputerName>:<Port>/<ApplicationName>
O valor padrão é o seguinte:
http://localhost:5985/WSMAN
Se você não especificar um ConnectionURI, poderá usar os parâmetros UseSSL, ComputerName, Port e ApplicationName para especificar os valores ConnectionURI.
Os valores válidos para o segmento Transport do URI são HTTP e HTTPS. Se você especificar um URI de conexão com um segmento de Transporte, mas não especificar uma porta, a sessão será criada usando portas padrão: 80 para HTTP e 443 para HTTPS. Para usar as portas padrão para comunicação remota do PowerShell, especifique a porta 5985 para HTTP ou 5986 para HTTPS.
Se o computador de destino redireciona a conexão para um URI diferente, o PowerShell impede o redirecionamento, a menos que você use o parâmetro AllowRedirection no comando.
Tipo: | Uri |
Aliases: | URI, CU |
Position: | 1 |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-ContainerId
Especifica a ID de um contêiner.
Tipo: | String |
Position: | 0 |
Default value: | None |
Necessário: | True |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-Credential
Especifica uma conta de usuário que tem permissão para executar essa ação. A predefinição é o utilizador atual.
Digite um nome de usuário, como User01 ou Domain01\User01, ou insira um objeto PSCredential gerado pelo Get-Credential
cmdlet. Se escrever um nome de utilizador, ser-lhe-á pedido que introduza a palavra-passe.
As credenciais são armazenadas em um objeto PSCredential e a senha é armazenada como um SecureString.
Nota
Para obter mais informações sobre a proteção de dados do SecureString , consulte Quão seguro é o SecureString?.
Tipo: | PSCredential |
Position: | 1 |
Default value: | Current user |
Necessário: | False |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-EnableNetworkAccess
Indica que esse cmdlet adiciona um token de segurança interativo às sessões de loopback. O token interativo permite executar comandos na sessão de loopback que obtêm dados de outros computadores. Por exemplo, você pode executar um comando na sessão que copia arquivos XML de um computador remoto para o computador local.
Uma sessão de loopback é uma PSSession que se origina e termina no mesmo computador. Para criar uma sessão de loopback, omita o parâmetro ComputerName ou defina seu valor como . (dot), localhost ou o nome do computador local.
Por padrão, as sessões de loopback são criadas usando um token de rede, que pode não fornecer permissão suficiente para autenticação em computadores remotos.
O parâmetro EnableNetworkAccess é eficaz apenas em sessões de loopback. Se você usar EnableNetworkAccess ao criar uma sessão em um computador remoto, o comando será bem-sucedido, mas o parâmetro será ignorado.
Você também pode permitir o acesso remoto em uma sessão de loopback usando o valor CredSSP do parâmetro Authentication, que delega as credenciais da sessão a outros computadores.
Esse parâmetro foi introduzido no Windows PowerShell 3.0.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-Id
Especifica a ID de uma sessão existente. Enter-PSSession
usa a sessão especificada para a sessão interativa.
Para localizar a ID de uma sessão, use o Get-PSSession
cmdlet.
Tipo: | Int32 |
Position: | 0 |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-InstanceId
Especifica o ID da instância de uma sessão existente. Enter-PSSession
usa a sessão especificada para a sessão interativa.
O ID da instância é um GUID. Para localizar a ID da instância de uma sessão, use o Get-PSSession
cmdlet. Você também pode usar os parâmetros Session, Name ou ID para especificar uma sessão existente. Ou, você pode usar o parâmetro ComputerName para iniciar uma sessão temporária.
Tipo: | Guid |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-Name
Especifica o nome amigável de uma sessão existente. Enter-PSSession
usa a sessão especificada para a sessão interativa.
Se o nome especificado corresponder a mais de uma sessão, o comando falhará. Você também pode usar os parâmetros Session, InstanceID ou ID para especificar uma sessão existente. Ou, você pode usar o parâmetro ComputerName para iniciar uma sessão temporária.
Para estabelecer um nome amigável para uma sessão, use o New-PSSession
parâmetro Name do cmdlet.
Tipo: | String |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-Port
Especifica a porta de rede no computador remoto usada para este comando. Para se conectar a um computador remoto, o computador remoto deve estar escutando na porta que a conexão usa. As portas padrão são 5985, que é a porta WinRM para HTTP, e 5986, que é a porta WinRM para HTTPS.
Antes de usar uma porta alternativa, você deve configurar o ouvinte do WinRM no computador remoto para ouvir nessa porta. Use os seguintes comandos para configurar o ouvinte:
winrm delete winrm/config/listener?Address=*+Transport=HTTP
winrm create winrm/config/listener?Address=*+Transport=HTTP @{Port="\<port-number\>"}
Não use o parâmetro Port, a menos que seja necessário. A configuração de porta no comando se aplica a todos os computadores ou sessões nos quais o comando é executado. Uma configuração de porta alternativa pode impedir que o comando seja executado em todos os computadores.
Tipo: | Int32 |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-RunAsAdministrator
Indica que o PSSession é executado como administrador.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-Session
Especifica uma sessão do PowerShell (PSSession) a ser usada para a sessão interativa. Este parâmetro usa um objeto de sessão. Você também pode usar os parâmetros Name, InstanceID ou ID para especificar uma PSSession.
Insira uma variável que contenha um objeto de sessão ou um comando que crie ou obtenha um objeto de sessão, como um New-PSSession
comando or Get-PSSession
. Você também pode canalizar um objeto de sessão para Enter-PSSession
. Você pode enviar apenas uma PSSession usando esse parâmetro. Se você inserir uma variável que contenha mais de uma PSSession, o comando falhará.
Quando você usa Exit-PSSession
ou a palavra-chave EXIT , a sessão interativa termina, mas a PSSession que você criou permanece aberta e disponível para uso.
Tipo: | PSSession |
Position: | 0 |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-SessionOption
Define opções avançadas para a sessão. Introduza um objeto SessionOption, como o que cria ao utilizar o cmdlet New-PSSessionOption
ou uma tabela hash em que as chaves são nomes de opção de sessão e os valores são valores de opção de sessão.
Os valores padrão para as opções são determinados pelo valor da variável de $PSSessionOption
preferência, se ela estiver definida. Caso contrário, os valores padrão são estabelecidos pelas opções definidas na configuração da sessão.
Os valores de opção de sessão têm precedência sobre os $PSSessionOption
valores padrão para sessões definidas na variável de preferência e na configuração da sessão. No entanto, eles não têm precedência sobre os valores máximos, cotas ou limites definidos na configuração da sessão.
Para obter uma descrição das opções de sessão, incluindo os valores padrão, consulte New-PSSessionOption
.
Para obter informações sobre a variável de $PSSessionOption
preferência, consulte about_Preference_Variables. Para obter mais informações sobre configurações de sessão, consulte about_Session_Configurations.
Tipo: | PSSessionOption |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-UseSSL
Indica que esse cmdlet usa o protocolo SSL (Secure Sockets Layer) para estabelecer uma conexão com o computador remoto. Por padrão, o SSL não é usado.
O WS-Management criptografa todo o conteúdo do PowerShell transmitido pela rede. O parâmetro UseSSL é uma proteção adicional que envia os dados através de uma conexão HTTPS em vez de uma conexão HTTP.
Se você usar esse parâmetro, mas o SSL não estiver disponível na porta usada para o comando, o comando falhará.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-VMId
Especifica a ID de uma máquina virtual.
Tipo: | Guid |
Aliases: | VMGuid |
Position: | 0 |
Default value: | None |
Necessário: | True |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-VMName
Especifica o nome de uma máquina virtual.
Tipo: | String |
Position: | 0 |
Default value: | None |
Necessário: | True |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
Entradas
Você pode canalizar um nome de computador como uma cadeia de caracteres para este cmdlet.
Você pode canalizar um objeto de sessão para esse cmdlet.
Saídas
None
Este cmdlet não retorna nenhuma saída.
Notas
O Windows PowerShell inclui os seguintes aliases para Enter-PSSession
:
etsn
Para se conectar a um computador remoto, você deve ser membro do grupo Administradores no computador remoto. Para iniciar uma sessão interativa no computador local, você deve iniciar o PowerShell com a opção Executar como administrador .
Quando você usa Enter-PSSession
o , seu perfil de usuário no computador remoto é usado para a sessão interativa. Os comandos no perfil de usuário remoto, incluindo comandos para adicionar módulos do PowerShell e alterar o prompt de comando, são executados antes que o prompt remoto seja exibido.
Enter-PSSession
usa a configuração de cultura da interface do usuário no computador local para a sessão interativa. Para localizar a cultura da interface do usuário local, use a $UICulture
variável automática.
Enter-PSSession
requer os Get-Command
cmdlets , Out-Default
e Exit-PSSession
. Se esses cmdlets não estiverem incluídos na configuração da sessão no computador remoto, os Enter-PSSession
comandos falharão.
Ao contrário Invoke-Command
do , que analisa e interpreta os comandos antes de enviá-los para o computador remoto, Enter-PSSession
envia os comandos diretamente para o computador remoto sem interpretação.
Se a sessão que você deseja inserir estiver ocupada processando um comando, pode haver um atraso antes que o Enter-PSSession
PowerShell responda ao comando. Você estará conectado assim que a sessão estiver disponível. Para cancelar o Enter-PSSession
comando, pressione CTRL+C.