Você está na página 1de 10

Liberando PowerShell Remoto por HTTPS em um

Windows Server
Sumário

Configurando Servidor
Configurando o Acesso Remoto do PowerShell no Server
Autorizando o usuário Autoseg a utilizar o PowerShell local do servidor
Instalando o módulo MSOnline no powershell
Acessar o PowerShell do Server pelo Client
Enviar comandos ao PowerShell do Server pelo Client

Exemplo

Solução de Problemas
Servidor
Cliente

Guias
Configurando Servidor

Antes de tudo conecte na interface gráfica do servidor e abra uma janela do PowerShell
como Administrador.

Configurando o Acesso Remoto do PowerShell no Server

Habilitar serviço de PowerShell Remoto (PSRemote)


>> Enable-PSRemoting​ -SkipNetworkProfileCheck -Force

Verifique se o PSRemote está habilitado rodando o comando de novo


>> Enable-PSRemoting​ -SkipNetworkProfileCheck -Force
WinRM is already set up to receive requests on this computer.
WinRM is already set up for remote management on this computer.

Criar um certificado auto assinado adicionando a lista local de certificados confiáveis


>> $Cert​ = New-SelfSignedCertificate -CertstoreLocation
Cert:\LocalMachine\My -DnsName (hostname) -NotAfter
(Get-Date).AddYears(10) -FriendlyName 'Remote PowerShell Cert'
* Caso tenha um Microsoft certification server e prefira emitir o próprio certificado, faça conforme esse guia:
https://support.microsoft.com/en-us/help/2019527/how-to-configure-winrm-for-https

Criar escuta do protocolo HTTPS na porta 5986 linkando ao thumbprint do CA criado


New-Item​ -Path WSMan:\LocalHost\Listener -Transport HTTPS -Address *
-CertificateThumbPrint ​$Cert​.Thumbprint -Force

Criar regra no firewall para liberar a porta 5986 apenas para o IP do servidor
New-NetFirewallRule -DisplayName ​"Windows Remote Management (HTTPS-In)"
-Name ​"Windows Remote Management (HTTPS-In)"​ -Profile Any -LocalPort
5986 -Protocol TCP -RemoteAddress IPSERVIDORAUTOSEG
* Especificando o RemoteAddress, essa regra vai permitir apenas esse IP acessar a porta.

Habilitar autenticação básica do PSRemote


winrm set winrm/config/Service/Auth ​'@{Basic= "true"}'

(opcional)​ Remover escuta do protocolo HTTP da porta 5985 (criada pelo PSRemote)
>> Get-ChildItem​ WSMan:\Localhost\listener | Where -Property Keys -eq
"Transport=HTTP"​ | ​Remove-Item​ -Recurse
(opcional)​ Remover regra de firewall sobre a porta 5985 (criada pelo PSRemote)
>> Disable-NetFirewallRule -DisplayName ​"Windows Remote Management
(HTTP-In)"

Autorizando o usuário Autoseg a utilizar o PowerShell local do servidor

(opcional)​ Crie um grupo local para os usuários que poderão utilizar o PowerShell remoto
>> net localgroup "PowerShell Session Users" /add
>> net localgroup "PowerShell Session Users" USUARIO /add
* Verifique se esse é o usuário com domínio correto

Abra a interface de permissões do PowerShell


>> Set-PSSessionConfiguration microsoft.powershell
-ShowSecurityDescriptorUI
Clique em ​Add​ e adicione o usuário da ​Autoseg​ ou o grupo em que ele foi adicionado,
adicione as permissões de ​Read​ e ​Execute​ e aplique elas.
Instalando o módulo MSOnline no powershell

Para que o PowerShell consiga executar os comandos do Office365 ele precisa ter
instalado o módulo MSOnline (o qual não é compatível com Linux)

É necessário uma conexão com a internet nesse passo.

Instale o módulo MSOnline


>> Install-Module MSOnline

Verifique se o módulo foi instalado


>> Get-InstalledModule MSOnline
Acessar o PowerShell do Server pelo Client

Criar objeto com as credenciais


$cred​ = (​Get-Credential​)

Acessar como uma nova sessão


Enter-PSSession​ -ComputerName IPSERVIDOR -Credential ​$cred
-Authentication Basic -UseSSL

Enviar comandos ao PowerShell do Server pelo Client

Criar objeto com as credenciais


$cred​ = (​Get-Credential​)

Criar objeto com a sessão do PowerShell criada ao conectar


$Session​ = New-PSSession -ComputerName IPSERVIDOR -Credential ​$cred
-Authentication Basic -UseSSL

Executar o comando no servidor usando a sessão criada


Invoke-Command​ -Session ​$Session​ -ScriptBlock { echo ​"TEXTO TESTE"​ >
teste.txt }
Exemplo

Abrir o PowerShell
[root@lxpnhhseg01 deployer]$ pwsh
PowerShell 6.1.1
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/pscore6-docs
Type ​'help'​ to get help.
PS /home/deployer>

Criar a credencial no PowerShell e inserir o usuário e senha (credencial no passmonki)


PS /home/deployer> ​$cred​ = ​get-credential

PowerShell credential request


Enter your credentials.
User: USUARIO
Password ​for​ user USUARIO@DOMINIO: *********

Criar uma sessão


PS /home/deployer> ​$Session​ = ​New-PSSession​ -ConfigurationName
Microsoft.Exchange -ComputerName​ SERVIDOR ​-Credential ​$cred
-Authentication ​Basic​ -AllowRedirection

Validar se a sessão foi criada


PS /home/deployer> ​Get-PSSession

Id Name Transport ComputerName ComputerType State


ConfigurationName Availability
-- ---- --------- ------------ ------------ -----
----------------- ------------
1 Runspace1 WSMan w12pnhhexc01... RemoteMachine Opened
Microsoft.Exchange Available
Ativar a caixa de e-mail de um usuário
PS /home/deployer> ​Invoke-Command​ -Session ​$Session​ -ScriptBlock {
Enable-Mailbox -Identity:​'PINEHML.COM.BR/Matriz
Pine/Contabilidade/Usuarios/Teste Autoseg'​ -Alias:​'Teste Autoseg'
-Database: ​'DBW12PNHHEXC01'​ }

Solução de Problemas

Servidor

re,,Verificar os protocolos/portas que o serviço PSRemote está ouvindo


dir wsman:\localhost\listener
Get-ChildItem WSMan:\localhost\Listener\*\*

Verificar configurações do PSRemote


winrm get winrm/config
winrm get winrm/config/listener

Client

Verificar se a porta 5986 está aberta no servidor (nmap é um programa de scan de portas)
nmap -Pn IPSERVIDOR -p 5986 # a respostas esperada é OPEN
* nmap não vêm por padrão no Ubuntu e centOS

Guias

New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri


"https://w12pnhhexc01.pinehml.com.br/PowerShell/“ -Credential $cred -Authentication
"Basic" -AllowRedirection
https://practical365.com/exchange-server/powershell-function-to-connect-to-exchange-on-pr
emises/

Você também pode gostar