Des del menú Herramientas → opciones podem canviar aquests paràmetres. Jo deixaré per defecte els colors que ja hi van i la font i mida que ve predefinida.
Obre un terminal de PowerShell i realitza les següents tasques fent servir les Cmdlets corresponents.
Mostra el llistat de totes les tasques o processos:
Get-Process
Mostra el llistat de totes les tasques que comencin el seu nom per un caràcter que escullis:
Llisto tots els processos que el seu nom comenci per s.
Get-Process-ProcessNames*
Inicialitza un procés nou sense gaire repercussió pel sistema i atura’l mitjançant el seu PID
He arrencat OneDrive i he llistat els processos amb:
Get-Process-ProcessNameOneDrive
i he descobert que el seu pid és el 5720. Per a matar-lo, ho faig amb
Stop-Process-Id5720
Mostra el temps de CPU que ha utilitzat un únic procés
Llisto el temps de CPU del procés explorer
Get-Processexplorer|Format-ListTotalProcessorTime
Llista aquells serveis que no estiguin aturats
get-service|where-object{$_.Status-ne'Stopped'}
Llista aquells serveis indicant el nom del teu equip
El meu nom de host és DESKTOP-ET232A1. Per a buscar els serveis que s’executen al meu equip faré
get-service-ComputerNameDESKTOP-ET232A1
Canvia el mode d’arrencada d’un servei d’automàtic a manual (després torna’l al seu valor original). Per poder-ho fer, primer hauràs llistar els serveis amb el mode d’arrencada automàtica
Proveu l’exportació i importació d’àlies i comprova que el teu àlies personalitzat és pot fer servir. Primer haureu d’exportar àlies, tancar la sessió de PS, tornar a obrir PS i importar els àlies.
Creo l’àlies amb
Set-AliasgsGet-Service
Exporto els meus àlies fent
Export-Aliaselsmeusalias.txt
Comprovo que gs fa el mateix que Get-Service:
Tanco la powershell i torno a iniciar. Comprovo que ara l’àlies gs no existeix, importo elsmeusalias.txt i es carrega (els errors són deguts als àlies predefinits que ja existeixen i no es poden “sobreescriure”).
Després, comprovo que gs ja funciona com a Get-Service:
Per fer el nostre primer Script en PS obrirem un editor de texte, com per exemple el NOTEPAD i escriurem una línea amb la següent comanda Write-Host «Hello World” Guardarem aquest arxiu a la nostre carpeta ScriptsPS creada a l’inici amb el nom script1.ps1 i ja podrem executar-ho, simplement posant el nom script1.ps1 al terminal PS.
Una segona forma de fer-ho seria obrint l’entorn POWERSHELL ISE, que ens proporciona una interfície gràfica amb diferents menús d’ajuda per poder crear el nostre Script. Aquestes ajudes ens permeten obtenir la sintaxi exacte de la comanda per a minimitzar errors. Feu el mateix script anterior amb l’ajuda de POWERSHELL ISE.
Llavors des de la consola, puc executar-lo amb ./helloworldise.ps1.
Feu que us demani primer el vostre nom i després la vostra edat. Visualitzeu un missatge per pantalla com aquest: Hola <el vostre nom>, la teva edat és de <vostra_edat> anys
$nom=Read-Host"Com et dius? "$edat=Read-Host"Quants anys tens? "Write-Host"Hola $nom, la teva edat és $edat anys."
Mostra per pantalla els tipus de les dues variables utilitzades a l’exercici anterior.
Afegirem aquestes línies al final de l’script de l’exercici anterior i l’executarem:
$tipusnom=$nom.GetType()$tipusedat=$edat.GetType()Write-Host"La variable nom és del tipus $tipusnom i l'edat és del tipus $tipusedat"..figure::/_static/images/M06UF2/Ps11.png:alt:Veiemeltipusdelesvariables
Experimenta amb PowerShell ISE les diferents opcions que podem fer amb un objecte. Utilitza la consola d’ajuda de ISE i fes proves amb 5 opcions diferents del que podem fer amb una variable de texte.
$string="guillem sola"Write-Host$string.ToUpper()#Transformació a majúsculesWrite-Host$string.Substring(0,7)#Tallar entre la posició 0 i la 7 de la cadenaWrite-Host$string.Replace("sola","boeck")#Substitució de caràcters o substringsWrite-Host$string.Equals("guillem"+" "+"sola")#Comprovar igualtat entre stringsWrite-Host$string.EndsWith("boeck")#Comprovar si la cadena acaba en una altra cadena definida
Fes un script que et demani per pantalla dos números i que et digui després quin és el número més gran.
$num1=Read-Host"Escriu un número: "$num2=Read-Host"Escriu un altre número: "if($num1-gt$num2){Write-Host"El número 1 és més gran"}elseif($num1-eq$num2){Write-Host"Són iguals"}else{Write-Host"El número 2 és més gran"}
Fes un script que et demani per pantalla T’AGRADA PROGRAMAR? Si dius que SI en majúscules o minúscules t’ha de dir per pantalla MOLT BÉ Si dius que NO en majúscules o minúscules t’ha de dir per pantalla UFF!!! En altre cas t’ha de dir per pantalla NO T’ENTENC
Fes un script que et demani per pantalla un número entre el 0 i el 10 i que et digui després per pantalla la teva nota
[float]$nota=Read-Host"Entra un número del 0 al 10"switch($nota){{$_-lt5}{Write-Host"SUSPÈS"}{$_-ge5-and$_-lt7}{Write-Host"APROVAT"}{$_-ge7-and$_-lt9}{Write-Host"NOTABLE"}{$_-ge9-and$_-le10}{Write-Host"EXCEL·LENT"}default{Write-Host"Nota invàlida"}}
Amb una estructura repetitiva fes la taula de multiplicar d’un número demanat per pantalla
[int]$numero=Read-Host"De quin número vols saber-ne la taula de multiplicar?"for($i=0;$i-le10;$i++){$resultat=$numero*$iWrite-Host"$numero x $i = $resultat"}
Crea un cmdlet de powershell que mostri un menú a l’usuari amb cuatre operacions disponibles: crear directori, eliminar directori, mostrar directori i sortir. Una vegada escollida una opció correcta el programa ha de sol·licitar un nom de directori i fer la operació sel·leccionada.
[int]$opcio=0while($opcio-ne4){Write-Host"CMDLET Control de directoris"Write-Host"############################"Write-Host"1. Crear directori"Write-Host"2. Eliminar directori"Write-Host"3. Mostrar directori"Write-Host"4. Sortir"$opcio=Read-Host"Tria una opció:"switch($opcio){1{Clear-Host$dir=Read-Host"Quin directori vols crear?"New-Item-ItemTypedirectory-Path$dir}2{Clear-Host$dir=Read-Host"Quin directori vols eliminar?"Remove-Item-Path$dir}3{Clear-Host$dir=Read-Host"Quin directori vols veure?"Get-ChildItem$dir}4{Clear-HostWrite-Host"Fins aviat!"}default{Clear-HostWrite-Host"Opció incorrecta"}}if($opcio-ne4){Read-Host"Pressiona qualsevol tecla per a continuar"Clear-Host}}
Crea un script de PowerShell que defineixi un array relacional HASH amb usuaris. Els camp de cada usuari han de ser nom_compte, nom_usuari i password. El programa ha de mantenir aquest array amb un menú en el que es pugui:
Afegir usuari
Eliminar usuari
Buscar per nom d’usuari
Mostrar tots els usuaris
[int]$opcio=0$users=@{}while($opcio-ne5){Write-Host"CMDLET Control d'usuaris"Write-Host"############################"Write-Host"1. Afegir usuari"Write-Host"2. Eliminar usuari"Write-Host"3. Buscar usuari per nom"Write-Host"4. Mostrar tots els usuaris"Write-Host"5. Sortir"$opcio=Read-Host"Tria una opció:"switch($opcio){1{Clear-HostWrite-Host"AFEGIR USUARI"$nom_compte=Read-Host"Nom del compte"$nom_usuari=Read-Host"Nom de l'usuari"$password=Read-Host-AsSecureString"Contrasenya"#Fer hash de la contrasenya$md5=new-object-TypeNameSystem.Security.Cryptography.MD5CryptoServiceProvider$utf8=new-object-TypeNameSystem.Text.UTF8Encoding$hash=[System.BitConverter]::ToString($md5.ComputeHash($utf8.GetBytes($password)))#Afegir valors$users.Add("$nom_compte",@("$nom_usuari","$hash"))}2{Clear-HostWrite-Host"ELIMINAR USUARI"$nom_compte=Read-Host"Quin usuari vols eliminar?"$users.Remove("$nom_compte")}3{Clear-HostWrite-Host"CERCA USUARI"$nom_compte=Read-Host"Quin nom d'usuari vols veure?"Write-Host$users[$nom_compte]}4{Clear-HostWrite-Host"LLISTA TOTS ELS USUARIS"$users}5{Clear-HostWrite-Host"Fins aviat!"}default{Clear-HostWrite-Host"Opció incorrecta"}}if($opcio-ne5){Read-Host"Pressiona qualsevol tecla per a continuar"Clear-Host}}
Feu un script PowerShell que demani un caracter por pantalla i us digui després si és un número o una lletra. Aquest exercici s’ha de realitzar obligatòriament utilitzant una funció.
La manera de saber-ho és provar de fer un parsing del caràcter entrat cap a enter. Si la conversió és possible, serà un número; si no és possible fer el parsing, serà una lletra.
functionnumeric_lletra($param){if(([System.Int32]::TryParse($param,[ref]0))){Write-Host"És un número"}else{Write-Host"És una lletra"}}$caracter=Read-Host"Escriu un caràcter"numeric_lletra($caracter)
Afegir el text «Hola, una altra línia» a l’arxiu exercici3.txt creat anteriorment
Add-Content-Pathexercici3.txt-Value"'r'nHola, una altra línia"#Els valors <code>'r'n</code> són els que generen el retorn de carro i la línia nova respectivament
Feu un script que faci les següents tasques seqüencialment:
Mostri els serveis de Windows
Aturi el servei d’AUDIO demanant confirmació
Mostrar els serveis de Windows en mode PowerShell
Mostri els serveis de Windows en mode gràfic
Arrenqui el servei d’AUDIO en mode DEBUG
Entre cada punt hi haurà una pausa de 3 segons
functionretard($segons){Start-Sleep-Seconds$segons}#Llistar serveis com en CMD, suposo.netstartretard(3)#Per defecte no demana confirmació a no ser que defineixi -Confirm com a trueStop-ServiceAudioSrv-Confirm:$trueretard(3)#Mostrar els serveis en "mode powershell"? Quina diferència hi ha entre el punt 1 i el punt 3? Bastanta ambigüitat.Get-Serviceretard(3)Start-Process-FilePath"C:\Windows\System32\services.msc"retard(3)#Per defecte demana confirmació a no ser que defineixi -Confirm com a falseStart-ServiceAudioSrv-Debug-Confirm:$false