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 = "https://blogs.msdn.com/giuliov/rss.aspx" $blog = [xml](new-object System.Net.WebClient).DownloadString($rssUrl) $blog.rss.channel.item | select title -first 8 |
Gli 8 post più recenti del mio blog.
$url = "https://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.
Comments
- Anonymous
December 31, 2007
PingBack from http://music.247blogging.info/?p=2122