Esempi PowerShell


Riprendiamo il tema PowerShell e vediamo alcuni esempi chiassosi, roba da poche righe ma d'effetto.









Start-Transcript -Path c:\temp\transcript.ps1


Genera uno script con i comandi che via via si digitano interattivamente.









$user = [ADSI]"WinNT://./Administrator,user"


$user.description


Legge la descrizione dell'utente Administrator mediante ADSI.









(320gb*425)/1000GB


GB e MB son unità di misura predefinite… purtroppo solo queste.









([DateTime]::Now - ([DateTime]"1964-11-24")).Days


Quanti giorni ho oggi?









dir -include *.vbs, *.ps1, *.bat -recurse | Group-Object extension –noelement


Quanti file con script di comando (cioè VBS, PS1 e BAT) ho?









(dir | where {$_.name -like '*.docx'}).count


Quanti file DOCX ci sono in questa cartella?









Get-WmiObject IisWebService -namespace "root\MicrosoftIISv2"


L'oggetto WMI che rappresenta IIS.









Get-ChildItem | Measure-Object -property length -sum -max -min –average


Dimensione dei file nella cartella: compresa somma, minimo, massimo e media.









$rssUrl = "http://blogs.msdn.com/giuliov/rss.aspx"


$blog = (new-object System.Net.WebClient).DownloadString($rssUrl)


$blog.rss.channel.item | select title -first 8


Gli 8 post più recenti del mio blog.









$url = "http://files.skyscrapr.net/users/arcast/ARCast20061113-ScottGu.mp3"


$file = "D:\Downloads\PodCast\ARCast - Scott Guthrie - the man, the myth, the legend.mp3"


$clnt = new-object System.Net.WebClient


$clnt.DownloadFile($url,$file)


Scarica un file da Internet.









gc test.txt | Measure-Object -Character -Word –Line


Word count (wc) sul file test.txt!









cd "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"


New-ItemProperty -Path . -Name ProxyEnable -PropertyType DWord -Value 0 –Force


Disabilita il proxy per Internet Explorer modificando il registry.









cd "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"


New-ItemProperty -Path . -Name ProxyEnable -PropertyType DWord -Value 1 -Force


New-ItemProperty -Path . -Name ProxyServer -PropertyType String -Value "myproxy:80" -Force


New-ItemProperty -Path . -Name ProxyOverride -PropertyType String -Value "*.local;<local>" –Force


Definisce un proxy per Internet Explorer, sempre agendo sul registry.









$a,$b = $b,$a


Scambia il valore di due variabili (swap).









@"


quiet 0 25


normal 26 50


loud 51 75


noisy 75 100


"@ > data.txt


$data = Get-Content data.txt | foreach {


$e=@{}


$e.level, [int] $e.lower, [int] $e.upper = $_.split()


$e


}


Costruisce un dizionario di intervalli.









($data | where { ($_.lower -lt 50) -and ($_.upper -ge 50) }).level


Uso del dizionario per vedere in che intervallo cade il valore 50.









(1,2,3)[-1]


Prende l'ultimo elemento del vettore (-2 è il penultimo, ecc.).









$prop = "length"; "Hello world".$prop


Richiamo di una proprietà per nome.









# capture the output objects in $output and the error objects in $error


$error = $( $output = myScript ) 2>&1


Come catturare in due variabili sia gli oggetti di output che quelli di errore.









myScript > file.txt


# syntactic sugar for


myScript | Out-File –path file.txt


La redirezione dell'output è in effetti un uso convenzionale della pipeline.









$id = [System.Security.Principal.WindowsIdentity]::GetCurrent()


$p = New-Object System.Security.Principal.WindowsPrincipal($id)


if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))


{


    $Host.UI.RawUI.WindowTitle = "Administrator: " + $Host.UI.RawUI.WindowTitle


}


Cambia il titolo della console per indicare se sta girando con i privilegi amministrativi (utile se inserito nel profile script, ad es. Microsoft.PowerShell_profile.ps1).









# disable UAC


cd HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies


Set-ItemProperty -Path . -Name ConsentPromptBehaviorAdmin -Value 0


Disabilita UAC… ovviamente se la shell PS sta girando con i privilegi amministrativi.









Remove-Item Alias:dir


function dir {cmd /c dir $args}


Ripristinare il comando dir originale di CMD.EXE rimuovendo l'alias di PS che esegue il cmdlet Get-ChildItem.

Skip to main content