La remotització en PowerShell permet executar comandes i scripts en equips remots, facilitant l'administració i automatització de tasques en múltiples sistemes. En aquest tema, aprendrem a configurar la remotització en PowerShell, incloent la configuració del servei WinRM (Windows Remote Management) i la creació de sessions remotes.
- Introducció a WinRM
WinRM és el servei de Microsoft que permet la comunicació remota entre equips. És essencial per a la remotització en PowerShell.
Passos per habilitar WinRM:
- Obrir PowerShell com a Administrador.
- Executar el següent comandament:
Aquest comandament configura el servei WinRM i ajusta les regles del tallafocs per permetre la comunicació remota.Enable-PSRemoting -Force
- Configuració del Servei WinRM
Verificar l'estat del servei WinRM:
Aquest comandament mostra l'estat del servei WinRM. Si no està en funcionament, cal iniciar-lo.
Iniciar el servei WinRM:
Configurar WinRM per acceptar connexions remotes:
Set-Item -Path WSMan:\localhost\Service\AllowUnencrypted -Value $true Set-Item -Path WSMan:\localhost\Service\Auth\Basic -Value $true
Aquestes configuracions permeten connexions no xifrades i l'autenticació bàsica. Nota: És recomanable utilitzar aquestes configuracions només en entorns segurs o de prova.
- Configuració del Tallafocs
Per permetre la remotització, cal ajustar les regles del tallafocs.
Afegir una regla al tallafocs per permetre WinRM:
New-NetFirewallRule -Name "WinRM-HTTP" -DisplayName "WinRM over HTTP" -Protocol TCP -LocalPort 5985 -Action Allow
Aquest comandament crea una regla que permet el trànsit HTTP a través del port 5985, utilitzat per WinRM.
- Creació de Sessions Remotes
Crear una sessió remota:
Aquest comandament crea una sessió remota amb l'equip especificat. Se sol·licitaran les credencials per autenticar-se a l'equip remot.
Executar comandes en una sessió remota:
Aquest comandament executa el bloc de codi especificat en l'equip remot i retorna els resultats.
Tancar la sessió remota:
Aquest comandament tanca la sessió remota i allibera els recursos associats.
- Configuració Addicional
Configurar WinRM per HTTPS:
Per una comunicació més segura, es pot configurar WinRM per utilitzar HTTPS.
-
Crear un certificat SSL (si no en teniu un):
New-SelfSignedCertificate -DnsName "NomDelEquip" -CertStoreLocation "cert:\LocalMachine\My"
-
Configurar WinRM per utilitzar el certificat SSL:
winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="NomDelEquip"; CertificateThumbprint="EmpremtaDelCertificat"}
-
Afegir una regla al tallafocs per HTTPS:
New-NetFirewallRule -Name "WinRM-HTTPS" -DisplayName "WinRM over HTTPS" -Protocol TCP -LocalPort 5986 -Action Allow
Exercicis Pràctics
Exercici 1: Habilitar la remotització en un equip local
- Obre PowerShell com a administrador.
- Executa
Enable-PSRemoting -Force
. - Verifica l'estat del servei WinRM amb
Get-Service -Name WinRM
.
Exercici 2: Crear i utilitzar una sessió remota
- Crea una sessió remota amb un equip de la teva xarxa.
- Executa un comandament remot per obtenir la llista de processos.
- Tanca la sessió remota.
Solucions
Solució a l'Exercici 1:
Solució a l'Exercici 2:
$session = New-PSSession -ComputerName "NomDelEquipRemot" -Credential (Get-Credential) Invoke-Command -Session $session -ScriptBlock { Get-Process } Remove-PSSession -Session $session
Resum
En aquesta secció, hem après a configurar la remotització en PowerShell, incloent la configuració del servei WinRM, l'ajust del tallafocs i la creació de sessions remotes. Aquestes habilitats són fonamentals per administrar equips de manera remota i automatitzar tasques en entorns distribuïts. En el proper tema, explorarem l'ús del comandament Invoke-Command
per executar scripts en equips remots.
Curs de PowerShell
Mòdul 1: Introducció a PowerShell
- Què és PowerShell?
- Instal·lació i Configuració de PowerShell
- Consola i ISE de PowerShell
- Comandes i Sintaxi Bàsiques
- Sistema d'Ajuda en PowerShell
Mòdul 2: Scripting Bàsic
- Variables i Tipus de Dades
- Operadors en PowerShell
- Sentències Condicionals
- Bucles en PowerShell
- Funcions i Scripts
Mòdul 3: Treballant amb Objectes
- Comprensió dels Objectes
- Propietats i Mètodes dels Objectes
- Pipelines i Manipulació d'Objectes
- Filtratge i Selecció d'Objectes
- Ordenació i Agrupació d'Objectes
Mòdul 4: Tècniques Avançades de Scripting
- Gestió d'Errors
- Depuració de Scripts
- Expressions Regulars
- Treballant amb Fitxers i Directoris
- Ús de Mòduls i Snap-ins
Mòdul 5: Automatització i Programació de Tasques
- Introducció a l'Automatització
- Creació de Tasques Programades
- Ús de PowerShell per a l'Administració del Sistema
- Automatització de Tasques d'Active Directory
- Automatització de Tasques de Xarxa
Mòdul 6: Remotització amb PowerShell
- Introducció a la Remotització
- Configuració de la Remotització
- Ús d'Invoke-Command
- Gestió de Sessions
- Consideracions de Seguretat
Mòdul 7: Funcions Avançades de PowerShell
- Perfils de PowerShell
- Personalització de l'Entorn de PowerShell
- Creació i Ús de Classes
- Treballant amb XML i JSON
- Ús de PowerShell amb REST APIs
Mòdul 8: PowerShell i DevOps
- Introducció a DevOps
- Ús de PowerShell amb Pipelines CI/CD
- Infraestructura com a Codi (IaC)
- Gestió de Recursos al Núvol amb PowerShell
- PowerShell i Docker