Skip to content

Executando o PowerShell remotamente

Daniel Donda edited this page Mar 23, 2018 · 1 revision

Em muitas situações você não estará interativamente logado no computador que você deseja administrar e nesse caso você pode fazer o uso de sessões remotas do PowerShell. Você pode iniciar sessões remotas de diversas maneiras como será descrito adiante.
Remoting PowerShell é construído sobre WinRM para fornecer acesso remoto a máquinas usando os Enter-PSSession e o Invoke-Command. Sempre que um usuário se conecta a um computador remoto usando uma dessas cmdlets, o serviço cria WinRM uma nova instância de um processo para sediar a sessão.

Sessões Persistentes

o fazer execuções de comandos do PS remotamente você está sujeito a interrupções causadas for falhas na rede. O PowerShell suporta sessões persistentes ou resilientes (PSSessions). Uma sessão persiste permite criar e salvar uma sessão em um computador remoto e você pode desconectar a sessão e então reconectar quando necessário. O diferencial desse recurso é os comandos do PowerShell continuarão em execução no computador remoto, mesmo quando você não estiver conectado na sessão o que antes do PS 3.0 não podia ser feito. As sessões persistentes são criadas com o cmdlet New-PSSession

Solicitando credenciais

Quando estiver trabalhando com scripts e ou executando comandos em ambiente de domínio, você pode solicitar credenciais especificas para execução de determinadas tarefas, principalmente aquelas que exigem privilégios administrativos.
$cred = Get-Credential
Ou você pode especificar ao conta para facilitar ainda mais...
$admin = Get-Credential contoso\administrator

Você pode criar scripts que não solicitam a senha, mas tenha em mente que isso pode não estar em conformidade com certos padrões de segurança.

Invocando comandos

O cmdlet Invoke-Command executa os comandos em computadores remotos e exibe o resultado no seu console. Isso é extremamente útil em ambientes com vários servidores ou computadores e você deseja executar comandos remotamente.

Invoke-Command -ComputerName osiris -ScriptBlock {Get-WmiObject Win32_Bios}
Você pode criar uma lista de servidores em um arquivo de TXT.
Invoke-Command -ComputerName (Get-Content Servers.txt) -ScriptBlock {GetProcess Notepad}

Use o cmdlet Get-ADComputer para criar uma lista de servidores

Invoke-Command -ComputerName (Get-Content Servers.txt) -ScriptBlock {Get-Process Notepad}