L'automatització és una de les capacitats més poderoses de PowerShell. Permet als administradors de sistemes i desenvolupadors automatitzar tasques repetitives, millorant l'eficiència i reduint la possibilitat d'errors humans. En aquest tema, explorarem els conceptes bàsics de l'automatització amb PowerShell, incloent-hi la creació de scripts automatitzats i l'ús de tasques programades.

Objectius del Tema

  • Comprendre els beneficis de l'automatització.
  • Aprendre a crear scripts automatitzats.
  • Conèixer les tasques programades i com utilitzar-les amb PowerShell.

Beneficis de l'Automatització

L'automatització amb PowerShell ofereix diversos avantatges:

  • Eficiència: Redueix el temps necessari per completar tasques repetitives.
  • Precisió: Minimitza els errors humans.
  • Consistència: Assegura que les tasques es realitzin de la mateixa manera cada vegada.
  • Escalabilitat: Permet gestionar un gran nombre de sistemes de manera eficient.

Creació de Scripts Automatitzats

Exemple de Script Automatitzat

A continuació, es mostra un exemple de script que automatitza la creació d'una còpia de seguretat d'un directori:

# Definim les variables
$sourceDirectory = "C:\Dades"
$backupDirectory = "C:\CòpiesDeSeguretat\Dades"
$date = Get-Date -Format "yyyyMMdd"

# Creem el directori de còpia de seguretat si no existeix
if (-not (Test-Path -Path $backupDirectory)) {
    New-Item -ItemType Directory -Path $backupDirectory
}

# Copiem els fitxers al directori de còpia de seguretat
Copy-Item -Path $sourceDirectory -Destination "$backupDirectory\$date" -Recurse

# Informem l'usuari que la còpia de seguretat s'ha completat
Write-Output "Còpia de seguretat completada: $backupDirectory\$date"

Explicació del Script

  1. Definició de Variables: Es defineixen les variables $sourceDirectory, $backupDirectory i $date per especificar el directori d'origen, el directori de còpia de seguretat i la data actual, respectivament.
  2. Creació del Directori de Còpia de Seguretat: Si el directori de còpia de seguretat no existeix, es crea amb New-Item.
  3. Còpia dels Fitxers: Es copien els fitxers del directori d'origen al directori de còpia de seguretat amb Copy-Item.
  4. Missatge de Confirmació: Es mostra un missatge a l'usuari indicant que la còpia de seguretat s'ha completat.

Tasques Programades

Creació d'una Tasca Programada

PowerShell permet crear i gestionar tasques programades que s'executen automàticament en moments específics. A continuació, es mostra com crear una tasca programada per executar el script de còpia de seguretat diàriament a les 2:00 AM:

# Definim el camí del script
$scriptPath = "C:\Scripts\BackupScript.ps1"

# Creem una acció per executar el script
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File $scriptPath"

# Creem un desencadenador per executar la tasca diàriament a les 2:00 AM
$trigger = New-ScheduledTaskTrigger -Daily -At 2:00AM

# Creem la tasca programada
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "CòpiaDeSeguretatDiària" -Description "Executa el script de còpia de seguretat diàriament a les 2:00 AM"

Explicació de la Creació de la Tasca

  1. Definició del Camí del Script: Es defineix la variable $scriptPath amb el camí del script de còpia de seguretat.
  2. Creació de l'Acció: Es crea una acció amb New-ScheduledTaskAction per executar PowerShell.exe amb l'argument del camí del script.
  3. Creació del Desencadenador: Es crea un desencadenador amb New-ScheduledTaskTrigger per executar la tasca diàriament a les 2:00 AM.
  4. Registre de la Tasca: Es registra la tasca programada amb Register-ScheduledTask, especificant l'acció, el desencadenador, el nom de la tasca i una descripció.

Exercici Pràctic

Exercici

Crea un script que automatitzi la neteja d'un directori temporal eliminant fitxers que tinguin més de 30 dies. Programa aquest script per executar-se setmanalment.

Solució

# Definim les variables
$tempDirectory = "C:\Temp"
$daysOld = 30

# Obtenim els fitxers que tenen més de 30 dies
$oldFiles = Get-ChildItem -Path $tempDirectory -File | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$daysOld) }

# Eliminem els fitxers antics
foreach ($file in $oldFiles) {
    Remove-Item -Path $file.FullName -Force
}

# Informem l'usuari que la neteja s'ha completat
Write-Output "Neteja completada: $($oldFiles.Count) fitxers eliminats"

Programació de la Tasca

# Definim el camí del script
$scriptPath = "C:\Scripts\CleanTempDirectory.ps1"

# Creem una acció per executar el script
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File $scriptPath"

# Creem un desencadenador per executar la tasca setmanalment
$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Sunday -At 3:00AM

# Creem la tasca programada
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "NetejaSetmanalTemp" -Description "Executa el script de neteja del directori temporal setmanalment"

Resum

En aquest tema, hem après els conceptes bàsics de l'automatització amb PowerShell, incloent-hi la creació de scripts automatitzats i l'ús de tasques programades. Hem vist exemples pràctics de com crear un script de còpia de seguretat i com programar-lo per executar-se automàticament. L'automatització és una eina poderosa que pot millorar significativament l'eficiència i la precisió en la gestió de sistemes.

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