materials

PowerShell


1. Introducció a PowerShell

Què és PowerShell?

PowerShell és una eina de línia de comandes avançada desenvolupada per Microsoft que substitueix l’antiga CMD (Command Prompt). A diferència d’altres intèrprets de comandes que treballen amb text, PowerShell treballa amb objectes, la qual cosa el fa molt més potent i flexible.

Característiques principals

Com obrir PowerShell?

  1. Prem Win + X i selecciona “Windows PowerShell”
  2. Cerca “PowerShell” al menú inici
  3. Per executar-lo com a Administrador, fes clic dret i selecciona “Executar com a administrador”

💡 Nota important: Algunes comandes requereixen privilegis d’administrador. Quan vegis un error de permisos, intenta executar PowerShell com a Administrador.


2. Conceptes bàsics de PowerShell

2.1. Què són els Cmdlets?

Les comandes en PowerShell s’anomenen cmdlets (es pronuncia “command-lets”). Tots els cmdlets segueixen una estructura molt clara:

Verb-Nom

Per exemple:

Verbs comuns

Verb Significat
Get Obtenir/consultar informació
Set Establir/modificar alguna cosa
New Crear alguna cosa nova
Remove Eliminar/esborrar
Start Iniciar/arrencar
Stop Aturar/parar
Enable Activar/habilitar
Disable Desactivar/deshabilitar

2.2. Àlies: Dreceres per a cmdlets

PowerShell permet usar àlies (noms curts) per als cmdlets. Això és útil per a escriure més ràpid, especialment si vens de CMD o Linux.

Exemples d’àlies comuns:

Cmdlet complet Àlies Equivalent a (CMD/Linux)
Get-ChildItem dir, ls, gci dir (CMD), ls (Linux)
Set-Location cd, sl cd
Get-Location pwd, gl pwd
Copy-Item copy, cp copy, cp
Remove-Item del, rm del, rm
Move-Item move, mv move, mv

Veure tots els àlies d’un cmdlet:

Get-Alias -Definition Get-ChildItem

2.3. Obtenir ajuda

Un dels recursos més útils és el sistema d’ajuda integrat:

Get-Help <nom-del-cmdlet>

Per exemple:

Get-Help Get-ChildItem

Opcions útils de Get-Help:

💡 Consell: La primera vegada que usis Get-Help, PowerShell et demanarà actualitzar l’ajuda. Executa Update-Help des d’una consola d’Administrador per descarregar tota la documentació.

2.4. L’operador pipe (|)

L’operador pipe ( ) és un dels més potents de PowerShell. Permet connectar comandes de manera que l’eixida d’una es converteix en l’entrada de la següent:
Comanda1 | Comanda2 | Comanda3

Exemple pràctic:

Get-Process | Where-Object {$_.CPU -gt 10} | Sort-Object CPU -Descending

Aquest comando:

  1. Obté tots els processos (Get-Process)
  2. Filtra els que usen més del 10% de CPU (Where-Object)
  3. Els ordena de major a menor ús de CPU (Sort-Object)

3. Comandes per a directoris i arxius

3.1. Navegar per directoris

Canviar de directori: Set-Location (àlies: cd)

Set-Location C:\Windows
cd C:\Users
cd ..           # Pujar al directori pare
cd ~            # Anar al directori home de l'usuari

Veure el directori actual: Get-Location (àlies: pwd)

Get-Location

3.2. Llistar contingut

Veure contingut del directori: Get-ChildItem (àlies: dir, ls)

Get-ChildItem                    # Contingut del directori actual
Get-ChildItem C:\Windows         # Contingut de C:\Windows
Get-ChildItem -Force             # Inclou arxius ocults
Get-ChildItem -Recurse           # Inclou subdirectoris recursivament

Filtrar arxius:

Get-ChildItem *.txt              # Només arxius .txt
Get-ChildItem -Filter *.pdf      # Alternativa per filtrar
Get-ChildItem -Include *.jpg,*.png  # Diversos tipus d'arxiu

3.3. Crear elements

Crear directori: New-Item (àlies: mkdir)

New-Item -Path "ElsMeusDocuments" -ItemType Directory
mkdir Projectes
New-Item -Path "C:\Temp\Prova" -ItemType Directory

Crear arxiu buit:

New-Item -Path "arxiu.txt" -ItemType File
New-Item "C:\Temp\notes.txt" -ItemType File

3.4. Copiar, moure i eliminar

Copiar: Copy-Item (àlies: copy, cp)

Copy-Item arxiu.txt C:\Backup\
Copy-Item *.pdf D:\Documents\
Copy-Item Carpeta D:\Backup\ -Recurse  # Copiar carpeta amb contingut

Moure: Move-Item (àlies: move, mv)

Move-Item arxiu.txt C:\Temp\
Move-Item *.log D:\Logs\

Reanomenar: Rename-Item (àlies: ren)

Rename-Item arxiu.txt nou_nom.txt
Rename-Item Carpeta NovaCarpeta

Eliminar: Remove-Item (àlies: del, rm)

Remove-Item arxiu.txt
Remove-Item *.tmp                        # Elimina tots els .tmp
Remove-Item Carpeta -Recurse             # Elimina carpeta i contingut
Remove-Item Carpeta -Recurse -Force      # Sense demanar confirmació

⚠️ Precaució: El paràmetre -Force elimina arxius sense demanar confirmació. Usa’l amb cura, especialment amb -Recurse.


4. Treballar amb el contingut d’arxius

Veure contingut: Get-Content (àlies: cat, type)

Get-Content arxiu.txt
Get-Content C:\Windows\System32\drivers\etc\hosts
cat log.txt | Select-Object -First 10   # Primeres 10 línies

Buscar en arxius de text:

Get-Content arxiu.txt | Where-Object {$_ -match "error"}
Get-Content log.txt | Select-String "WARNING"

Crear arxiu amb contingut:

"Hola món" | Out-File hola.txt
"Primera línia" | Set-Content arxiu.txt
"Segona línia" | Add-Content arxiu.txt  # Afegir al final

Treballar amb arxius CSV:

Import-Csv dades.csv -Delimiter ";"
Import-Csv alumnes.csv | Where-Object {$_.Nota -gt 5}
Import-Csv dades.csv | Sort-Object Cognom | Export-Csv ordenat.csv

5. Gestió de processos i serveis

5.1. Processos

Veure processos: Get-Process

Get-Process
Get-Process -Name chrome*
Get-Process | Where-Object {$_.CPU -gt 100}  # Processos amb alta CPU

Iniciar procés: Start-Process

Start-Process notepad
Start-Process chrome https://www.google.com

Aturar procés: Stop-Process

Stop-Process -Name notepad
Stop-Process -Id 1234
Get-Process chrome | Stop-Process  # Tancar tots els Chrome

5.2. Serveis de Windows

Veure serveis: Get-Service

Get-Service
Get-Service -Name wuauserv
Get-Service | Where-Object {$_.Status -eq "Running"}

Gestionar serveis:

Start-Service -Name wuauserv
Stop-Service -Name wuauserv
Restart-Service -Name wuauserv
Set-Service -Name wuauserv -StartupType Disabled

💡 Nota: La gestió de serveis normalment requereix privilegis d’administrador.


6. Gestió d’usuaris i grups

PowerShell permet gestionar usuaris locals i d’Active Directory. Per a usuaris d’Active Directory necessites instal·lar el mòdul corresponent.

6.1. Usuaris locals

Veure usuaris:

Get-LocalUser
Get-LocalUser -Name joan

Crear usuari:

New-LocalUser "usuari1" -NoPassword
New-LocalUser "usuari2" -Password (ConvertTo-SecureString "Pass123!" -AsPlainText -Force)

Modificar usuari:

Set-LocalUser -Name usuari1 -Description "Usuari de prova"
Disable-LocalUser -Name usuari1
Enable-LocalUser -Name usuari1

Eliminar usuari:

Remove-LocalUser -Name usuari1

6.2. Grups locals

Veure grups:

Get-LocalGroup
Get-LocalGroupMember -Group "Administradors"

Crear grup:

New-LocalGroup -Name "Desenvolupadors" -Description "Equip de desenvolupament"

Gestionar membres:

Add-LocalGroupMember -Group "Desenvolupadors" -Member "usuari1"
Remove-LocalGroupMember -Group "Desenvolupadors" -Member "usuari1"

7. Gestió de xarxa

Veure configuració de xarxa:

Get-NetAdapter
Get-NetIPAddress
Get-NetIPConfiguration
Get-NetRoute

Gestionar adaptadors:

Enable-NetAdapter -Name "Ethernet"
Disable-NetAdapter -Name "Ethernet"
Rename-NetAdapter -Name "Ethernet" -NewName "LAN"

Configurar IP estàtica:

Remove-NetIPAddress -InterfaceAlias "Ethernet"
Remove-NetRoute -InterfaceAlias "Ethernet"
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 192.168.1.50 `
    -PrefixLength 24 -DefaultGateway 192.168.1.1
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" `
    -ServerAddresses 8.8.8.8,8.8.4.4

Eines de diagnòstic:

Test-NetConnection google.com
Test-NetConnection 192.168.1.1 -TraceRoute
Resolve-DnsName google.com
Get-NetTCPConnection -State Established