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.

  1. 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:

  1. Obrir PowerShell com a Administrador.
  2. Executar el següent comandament:
    Enable-PSRemoting -Force
    
    Aquest comandament configura el servei WinRM i ajusta les regles del tallafocs per permetre la comunicació remota.

  1. Configuració del Servei WinRM

Verificar l'estat del servei WinRM:

Get-Service -Name WinRM

Aquest comandament mostra l'estat del servei WinRM. Si no està en funcionament, cal iniciar-lo.

Iniciar el servei WinRM:

Start-Service -Name 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.

  1. 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.

  1. Creació de Sessions Remotes

Crear una sessió remota:

$session = New-PSSession -ComputerName "NomDelEquipRemot" -Credential (Get-Credential)

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:

Invoke-Command -Session $session -ScriptBlock { Get-Process }

Aquest comandament executa el bloc de codi especificat en l'equip remot i retorna els resultats.

Tancar la sessió remota:

Remove-PSSession -Session $session

Aquest comandament tanca la sessió remota i allibera els recursos associats.

  1. Configuració Addicional

Configurar WinRM per HTTPS:

Per una comunicació més segura, es pot configurar WinRM per utilitzar HTTPS.

  1. Crear un certificat SSL (si no en teniu un):

    New-SelfSignedCertificate -DnsName "NomDelEquip" -CertStoreLocation "cert:\LocalMachine\My"
    
  2. Configurar WinRM per utilitzar el certificat SSL:

    winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="NomDelEquip"; CertificateThumbprint="EmpremtaDelCertificat"}
    
  3. 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

  1. Obre PowerShell com a administrador.
  2. Executa Enable-PSRemoting -Force.
  3. Verifica l'estat del servei WinRM amb Get-Service -Name WinRM.

Exercici 2: Crear i utilitzar una sessió remota

  1. Crea una sessió remota amb un equip de la teva xarxa.
  2. Executa un comandament remot per obtenir la llista de processos.
  3. Tanca la sessió remota.

Solucions

Solució a l'Exercici 1:

Enable-PSRemoting -Force
Get-Service -Name WinRM

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

Mòdul 2: Scripting Bàsic

Mòdul 3: Treballant amb Objectes

Mòdul 4: Tècniques Avançades de Scripting

Mòdul 5: Automatització i Programació de Tasques

Mòdul 6: Remotització amb PowerShell

Mòdul 7: Funcions Avançades de PowerShell

Mòdul 8: PowerShell i DevOps

Mòdul 9: Millors Pràctiques i Consells Avançats

© Copyright 2024. Tots els drets reservats