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
- 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. - Creació del Directori de Còpia de Seguretat: Si el directori de còpia de seguretat no existeix, es crea amb
New-Item
. - Còpia dels Fitxers: Es copien els fitxers del directori d'origen al directori de còpia de seguretat amb
Copy-Item
. - 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
- Definició del Camí del Script: Es defineix la variable
$scriptPath
amb el camí del script de còpia de seguretat. - Creació de l'Acció: Es crea una acció amb
New-ScheduledTaskAction
per executarPowerShell.exe
amb l'argument del camí del script. - Creació del Desencadenador: Es crea un desencadenador amb
New-ScheduledTaskTrigger
per executar la tasca diàriament a les 2:00 AM. - 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
- 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