Aceasta este o listă de elemente pe care colegii mei și cu mine le-am găsit utile în munca noastră. Nu se dorește a fi enciclopedică, ci mai degrabă un loc pentru a înregistra lucruri pe care un începător le-ar găsi utile, în special lucruri care ar putea dura mult timp pentru a le înțelege.
Această pagină a fost începută înainte ca O’Reilly să publice Windows PowerShell Cookbook de Lee Holmes. Recomand cartea lui O’Reilly, dar această pagină nu are legătură cu ea.
Vezi și PowerShell gotchas.
- Schemă
- Noțiuni de bază/instalație
- Instalați PowerShell
- Instalarea bibliotecii Community Extensions
- Scăpați de mesajul „execuția scripturilor este dezactivată”
- Configurați-vă „scripturile:” locația unității PowerShell
- Configurați promptul de comandă
- Sarcini diverse
- Scrieți pe ecran
- Invitați utilizatorul la intrare
- Manipulează datele
- Send email
- Sleep
- Listează un director (recursiv)
- Testați dacă există un fișier
- Citiți liniile unui fișier într-un array
- Scrieți într-un fișier
- Redenumiți un fișier
- Ștergeți un fișier
- Lucrați cu expresii regulate
- Despărțiți și uniți șiruri de caractere
- Prindeți o pagină web
- Citire și scriere în registru
- Înțelegerea ghilimelelor
- Cronometrează o comandă
- Text to speech
- Accesați clipboard-ul Windows
- Încărcați un ansamblu .NET
- Executarea codului creat în timp de execuție
- Executarea unui program cu un spațiu în calea sa
Schemă
- Noțiuni de bază/instalație
- Instalați PowerShell
- Instalați biblioteca Community Extensions
- Scăpați de mesajul „executarea scripturilor este dezactivată”
- Pregătiți-vă „scripturile”:
- . PowerShell locația unității PowerShell
- Configurați-vă promptul de comandă
- Sarcini diverse
- Scrieți pe ecran
- Promiteți utilizatorului să introducă date
- Manipulați date
- Întoarceți e-mailul
- Sleep
- Înumeră un director (recursiv)
- Testă dacă un fișier există
- Citește liniile unui fișier într-un fișier array
- Scrieți într-un fișier
- Renumiți un fișier
- Ștergeți un fișier
- Lucrați cu expresii regulate
- Spargeți și uniți șiruri de caractere
- Căutați un web pagină web
- Citește și scrie în registru
- Înțelege ghilimelele
- Cronometrează o comandă
- Text to speech
- Accesează clipboard-ul Windows
- Încarcă un fișier .NET assembly
- Executați codul creat în timpul execuției
- Executați un program cu un spațiu în calea sa
.
Noțiuni de bază/instalație
Instalați PowerShell
Puteți obține PowerShell de la:
https://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx
top
Instalarea bibliotecii Community Extensions
Biblioteca PowerShell Community Extensions (PSCX) este disponibilă aici:
https://www.codeplex.com/Wiki/View.aspx?ProjectName=PowerShellCX
Este o colecție utilă de cmdlet-uri și funcții. Instalează un meniu contextual „PowerShell Here” în WindowsExplorer care deschide o fereastră de comandă PowerShell în dosarul pe care faceți clic dreapta. De asemenea, PSCX oferă o mostră de fișier Profile.ps1
.
După ce PSCX este instalat, tastați man about_pscx
pentru a vedea o prezentare generală a cmdlet-urilor, furnizorilor, etc. care vin cu PSCX.
top
Scăpați de mesajul „execuția scripturilor este dezactivată”
Prima problemă pe care este posibil să o întâmpinați atunci când executați scripturi PowerShell este ceva de genul acesta:
PSH> .\myScript.ps1File D:\myScript.ps1 cannot be loaded. The fileD:\myScript.ps1 is not digitally signed. The script will not execute on thesystem. Please see "get-help about_signing" for more details..
At line:1 char:13 + .\myScript.ps1 <<<<
Acest lucru se datorează setării de securitate implicite din PowerShell care interzice rularea scripturilor malițioase.
Puteți modifica acest comportament procedând astfel:
PSH> set-executionPolicy RemoteSigned
Acum numai scripturile care provin din surse de la distanță vor necesita semnare digitală.
top
Configurați-vă „scripturile:” locația unității PowerShell
După ce ați scris un număr de scripturi PowerShell, s-ar putea să vi se pară util să le adunați într-un singur loc și să creați o unitate PSDrive numită scripts:
pentru a le găsi rapid. Ați putea adăuga următoarele la profilul dvs. PSCX pentru a crea un astfel de PSDrive.
New-PSdrive -name scripts -PSprovider filesystem -root C:\bin\PowerShellScripts
top
Configurați promptul de comandă
Pentru a configura promptul de comandă, creați pur și simplu o funcție numită prompt
și puneți-o în profilul dvs. De exemplu, următoarele vor determina afișarea directorului de lucru.
function prompt { "$pwd> " }
Rețineți că puteți pune orice cod doriți în interiorul funcției prompt
și acel cod se va executa de fiecare dată când apăsați return.
top
Sarcini diverse
Scrieți pe ecran
Utilizați Write-Host
pentru a scrie ieșirea. Puteți specifica opțional -foregroundcolor
pentru a colora ieșirea. De exemplu, erorile și avertismentele pot fi evidențiate cu roșu.
Exemplu:
Write-Host "Hello world" -foregroundcolor red
top
Invitați utilizatorul la intrare
Utilizați Read-Host
.
Exemplu:
$a = Read-Host "Enter your name"Write-Host "Hello" $a
top
Manipulează datele
Cmodelul get-date
returnează un obiect DateTime
. Fără niciun argument, acesta returnează ora și data curentă. Cu un argument de tip șir de caractere, nu este nevoie de ghilimele, analizează șirul într-o dată.
Exemplu: Aflați numărul de zile și ore scurse de la bicentenarul SUA.
(get-date) - (get-date 7/4/1976)
De asemenea, puteți transforma șirurile de caractere în obiecte DateTime
folosind cast .
top
Send email
Utilizați cmdlet Send-SmtpMail
din PowerShell Community Extensions.
Exemplu:
Send-SmtpMail -SmtpHost wotan.mdacc.tmc.edu -from [email protected] -to [email protected] -body "hello world"
top
Sleep
Utilizați cmdlet Start-Sleep
. Durează câteva secunde în mod implicit, dar are o opțiune -milliseconds
.
Exemplu:
Write-Host "hello"; Start-Sleep 5; Write-Host "world"
top
Listează un director (recursiv)
Puteți utiliza comanda dir
, care este de fapt un alias pentru Get-ChildItem
. Pentru a lista un director în mod recursiv, trebuie doar să adăugați opțiunea -recurse
.
Exemplu:
dir f:\bin -recurse
top
Testați dacă există un fișier
Utilizați test-path
.
top
Citiți liniile unui fișier într-un array
Utilizați get-content
.
Exemplu:
$a = (get-content foo.txt)
top
Scrieți într-un fișier
Utilizați Out-File
. Dacă nu doriți o ieșire Unicode, specificați -encoding ASCII
Exemplu:
$foo | out-file -encoding ASCII foo.txt
top
Redenumiți un fișier
Utilizați Rename-Item
sau aliasul său ren
.
top
Ștergeți un fișier
Utilizați Delete-Item
sau aliasul său del
.
top
Lucrați cu expresii regulate
Vezi Expresii regulate în PowerShell și Perl.
top
Despărțiți și uniți șiruri de caractere
Cirurile de caractere au o metodă split
. Argumentul pentru split()
este un șir de caractere care conține caracterele pe care se împarte. Funcția ::split
este mai generală. Primul său argument este șirul de despărțit, iar al doilea argument este o expresie regulată pe care să se facă despărțirea.
Exemplu:
$a.split("`t ")
va despărți șirul $a
într-o matrice de șiruri, despărțind ori de câte ori există o tabulație sau un spațiu.
Exemplu:
$a = "123,456,apple"; ::split($a, ",(?!\d)")
va despărți $a
pe virgule care nu sunt urmate de cifre. Astfel, divizarea ar returna „123,456” și „măr”.
Dacă șirul pe care îl divizați este o cale Windows, este posibil să doriți să utilizați comanda specializată Split-Path.
Pentru a uni un array într-un singur șir, utilizați metoda ::join
. Primul argument este caracterul de separare, iar al doilea este matricea.
Exemplu:
$a = 1, 2, 3;#note: this is an array, not a string$b = ::join("*", $a)
Acum $b
conține „1*2*3”.
top
Prindeți o pagină web
Utilizați fie Get-Url
din PSCX, fie obiectul net.webclient
din .NET. Primul este mai succint, dar cel de-al doilea permite mai multe opțiuni.
Exemplu:
$w = Get-Url "https://www.w3.org"
$w = (new-object net.webclient).DownloadString("https://www.w3.org")
Codul (new-object net.webclient)
creează un obiect .NET WebClient
cu multe metode utile. De exemplu, puteți apela DownladFile
pentru a salva direct pe disc, mai degrabă decât pe un șir de caractere. Există, de asemenea, metodele UploadData
și UploadFile
.
top
Citire și scriere în registru
Puteți naviga în registru așa cum ați face-o în sistemul de fișiere, deși există câteva detalii care trebuie cunoscute.
Care hive din registru este ca o unitate de disc. Astfel, de exemplu, pentru a explora HKEY_CURRENT_USER
, puteți cd HKCU:
și apoi folosi cd
pentru a coborî în arbore. Folosiți Get-ItemProperty
pentru a citi și Set-ItemProperty
pentru a scrie. De asemenea, puteți folosi Remove-ItemProperty
pentru a șterge.
Exemplu:
Comenzile de mai jos vor lista conținutul nodului de registru care configurează shell-ul cmd.exe
. Prin setarea CompletionChar
la 9, activăm completarea tabulației.
cd HKCU:\Software\Microsoft\Command ProcessorGet-ItemProperty .Set-ItemProperty . -name CompletionChar -Value 9
Acest articol TechNet intră în mai multe detalii.
top
Înțelegerea ghilimelelor
PowerShell are patru tipuri de ghilimele: ghilimele simple și duble obișnuite, și ghilimele simple și duble here-strings. În interiorul ghilimelelor duble și al șirurilor duble here-strings, numele variabilelor sunt înlocuite cu valorile lor și sunt interpretate secvențele de evacuare PowerShell. În ghilimelele simple și în here-strings simple, numele variabilelor nu sunt extinse, iar secvențele de evacuare nu sunt interpretate. De exemplu, fragmentul de cod
$a = "bar" 'foo`t$a', "foo`t$a"
va produce ieșirea
foo`t$a foo bar
pentru că în interiorul ghilimelelor duble, `t
se extinde la o tabulație și $a
se extinde la „bar”.
PowerShell here-strings sunt ca și here-documents în Perl. În interiorul unui here-string, ghilimelele duble și simple nu sunt speciale, ci sunt citate literal. De asemenea, salturile de linie sunt păstrate.
Un here-string începe fie cu @"
, fie cu @'
și se termină cu aceleași simboluri în ordine inversă. Trebuie să existe o linie nouă după markerul de deschidere și înainte de markerul de închidere.
Exemplu
$a = "bar" $b = @" foo "baz" 'qux' $a "@ $b
produce
foo "baz" 'qux' bar
și
$a = "bar" $b = @' foo "baz" 'qux' $a '@ $b
produce
foo "baz" 'qux' $a
Rețineți că nu trebuie să existe spațiu alb după ghilimelele care deschid un here-string. În caz contrar, veți primi mesajul „Unrecognized token in source text.”
Deși au un aspect asemănător, sirurile here-strings din PowerShell și sirurile verbatim din C# sunt destul de diferite. Tabelul următor rezumă diferențele.
C# verbatim strings | PowerShell here-.strings |
---|---|
Poate conține întreruperi de linie | Trebuie să conțină întreruperi de linie |
Doar varianta cu ghilimele duble | Variantele cu ghilimele simple și duble |
Începe cu @” | Începe cu @” (sau @’) plus o pauză de linie |
Se termină cu „ | Se termină cu o pauză de linie urmată de „@ (sau ‘@’) |
Nu poate conține un-.scăpate ghilimele duble | Poate conține ghilimele |
Dezactivează secvențele de scăpare C# | ‘@ dezactivează secvențele de scăpare PowerShell, dar „@ nu |
top
Cronometrează o comandă
Utilizați Measure-Command
pentru a cronometra cât timp durează finalizarea unei sarcini.
top
Text to speech
Utilizați Out-Speech
din PSCX.
top
Accesați clipboard-ul Windows
Utilizați cmdlet-urile PSCX Get-Clipboard
și Out-Clipboard
pentru a citi din și a scrie în clipboard.
top
Încărcați un ansamblu .NET
Puteți apela LoadWithPartialName
. De exemplu, pentru a încărca ansamblul pentru Team Foundation Server API, veți executa
::LoadWithPartialName("Microsoft.TeamFoundation.Client")
Vezi și Resolve-Assembly
din PSCX.
top
Executarea codului creat în timp de execuție
Comanda Invoke-Expression
este analogă cu eval
în Perl sau JavaScript. Invoke-Expression $str
execută codul conținut în șirul de caractere $str
.
top
Executarea unui program cu un spațiu în calea sa
Puneți ghilimele în jurul căii de acces și puneți o ampersandă în față. De exemplu,
& "C:\Program Files\WinEdt Team\WinEdt\WinEdt.exe"
va lansa executabilul WinEdt.exe
care are două spații în calea sa completă.
Rețineți că nu puteți omite ampersand-ul. Spre deosebire de cmd.exe
, PowerShell nu presupune că toate șirurile de caractere sunt comenzi. Fără ampersandă, o cale citată este doar un șir de caractere.
top
.