Introducció
En aquest tema, aprendrem a crear i utilitzar classes en PowerShell. Les classes són una característica poderosa que permet als desenvolupadors definir tipus de dades personalitzats amb propietats i mètodes. Això facilita la creació de codi més organitzat, modular i reutilitzable.
Conceptes Clau
- Classe: Una plantilla per crear objectes que defineix un conjunt de propietats i mètodes.
- Objecte: Una instància d'una classe.
- Propietat: Una variable dins d'una classe que emmagatzema dades.
- Mètode: Una funció dins d'una classe que defineix un comportament.
Creació d'una Classe
Sintaxi Bàsica
Per crear una classe en PowerShell, utilitzem la paraula clau class
seguida del nom de la classe. Dins del bloc de la classe, definim les propietats i els mètodes.
class Persona { [string]$Nom [int]$Edat Persona([string]$nom, [int]$edat) { $this.Nom = $nom $this.Edat = $edat } [void]Saludar() { Write-Output "Hola, el meu nom és $($this.Nom) i tinc $($this.Edat) anys." } }
Explicació del Codi
- Definició de la Classe:
class Persona { ... }
- Propietats:
[string]$Nom
i[int]$Edat
defineixen les propietats de la classe. - Constructor:
Persona([string]$nom, [int]$edat) { ... }
és un mètode especial que s'executa quan es crea una nova instància de la classe. - Mètode:
[void]Saludar() { ... }
és un mètode que imprimeix un missatge de salutació.
Creació d'Objectes
Per crear un objecte d'una classe, utilitzem l'operador New-Object
o simplement cridem el constructor de la classe.
# Utilitzant el constructor $persona1 = [Persona]::new("Joan", 30) # Utilitzant New-Object $persona2 = New-Object Persona("Maria", 25)
Ús de Propietats i Mètodes
Un cop hem creat un objecte, podem accedir a les seves propietats i mètodes utilitzant la notació de punt.
# Accés a les propietats $persona1.Nom # Retorna "Joan" $persona1.Edat # Retorna 30 # Crida a un mètode $persona1.Saludar() # Imprimeix "Hola, el meu nom és Joan i tinc 30 anys."
Exemple Pràctic
Definició de la Classe
class Cotxe { [string]$Marca [string]$Model [int]$Any Cotxe([string]$marca, [string]$model, [int]$any) { $this.Marca = $marca $this.Model = $model $this.Any = $any } [void]Descripcio() { Write-Output "Aquest cotxe és un $($this.Marca) $($this.Model) de l'any $($this.Any)." } }
Creació d'Objectes i Ús
# Creació d'objectes $cotxe1 = [Cotxe]::new("Toyota", "Corolla", 2020) $cotxe2 = [Cotxe]::new("Ford", "Mustang", 1967) # Accés a les propietats $cotxe1.Marca # Retorna "Toyota" $cotxe2.Any # Retorna 1967 # Crida a un mètode $cotxe1.Descripcio() # Imprimeix "Aquest cotxe és un Toyota Corolla de l'any 2020." $cotxe2.Descripcio() # Imprimeix "Aquest cotxe és un Ford Mustang de l'any 1967."
Exercicis Pràctics
Exercici 1: Crear una Classe de Llibre
- Defineix una classe
Llibre
amb les propietatsTitol
,Autor
iPagines
. - Crea un constructor que inicialitzi aquestes propietats.
- Afegeix un mètode
Descripcio
que imprimeixi una descripció del llibre.
Solució
class Llibre { [string]$Titol [string]$Autor [int]$Pagines Llibre([string]$titol, [string]$autor, [int]$pagines) { $this.Titol = $titol $this.Autor = $autor $this.Pagines = $pagines } [void]Descripcio() { Write-Output "El llibre '$($this.Titol)' de $($this.Autor) té $($this.Pagines) pàgines." } } # Creació d'un objecte de la classe Llibre $llibre1 = [Llibre]::new("1984", "George Orwell", 328) $llibre1.Descripcio() # Imprimeix "El llibre '1984' de George Orwell té 328 pàgines."
Exercici 2: Crear una Classe de Pel·lícula
- Defineix una classe
Pelicula
amb les propietatsTitol
,Director
iDuracio
. - Crea un constructor que inicialitzi aquestes propietats.
- Afegeix un mètode
Descripcio
que imprimeixi una descripció de la pel·lícula.
Solució
class Pelicula { [string]$Titol [string]$Director [int]$Duracio Pelicula([string]$titol, [string]$director, [int]$duracio) { $this.Titol = $titol $this.Director = $director $this.Duracio = $duracio } [void]Descripcio() { Write-Output "La pel·lícula '$($this.Titol)' dirigida per $($this.Director) té una duració de $($this.Duracio) minuts." } } # Creació d'un objecte de la classe Pelicula $pelicula1 = [Pelicula]::new("Inception", "Christopher Nolan", 148) $pelicula1.Descripcio() # Imprimeix "La pel·lícula 'Inception' dirigida per Christopher Nolan té una duració de 148 minuts."
Conclusió
En aquest tema, hem après a crear i utilitzar classes en PowerShell. Les classes ens permeten definir tipus de dades personalitzats amb propietats i mètodes, facilitant la creació de codi més organitzat i modular. Hem vist com definir una classe, crear objectes i accedir a les seves propietats i mètodes. També hem practicat aquests conceptes amb exercicis pràctics. En el proper tema, explorarem com treballar amb XML i JSON en PowerShell.
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