Storicamente, l'utilità di linea di cummanda in i sistemi Unix sò più sviluppate chè in WindowsEppuru, cù l'avventu di una nova suluzione, a situazione hè cambiata.
Windows PowerShell permette à l'amministratori di sistema di automatizà a maiò parte di i travaglii di rutina. Pò esse adupratu per cambià i paràmetri, piantà è avvià i servizii, è mantene a maiò parte di l'applicazioni installate. Trattà a finestra blu cum'è un altru interprete di cumandamenti seria ingannevule. Questu approcciu ùn cattura micca l'essenza di l'innuvazioni di Microsoft. In realtà, e capacità Windows PowerShell hè assai più largu: in questa breve seria d'articuli, pruveremu à capisce cumu a suluzione di Microsoft hè diversa da l'arnesi chì cunniscimu megliu.
Funzioni chjave
Benintesa Windows PowerShell hè principalmente una shell di cumandamenti cù un linguaghju di scripting, inizialmente custruita nantu à .NET Framework è dopu nantu à .NET Core. À u cuntrariu di e shell chì accettanu è restituiscenu dati di testu, Windows PowerShell funziona cù e classi .NET, chì anu proprietà è metudi. PowerShell vi permette di eseguisce cumandamenti regulari è furnisce ancu accessu à l'uggetti COM, WMI è ADSI. Utilizza diverse risorse di almacenamentu, cum'è u sistema di fugliali è u registru. Windows, chì sò accessibili per mezu di i cosiddetti fornitori. Vale a pena nutà a capacità di integrà cumpunenti eseguibili PowerShell in altre applicazioni per eseguisce diverse operazioni, ancu per mezu di una interfaccia grafica. U cuntrariu hè ancu veru: parechje applicazioni per Windows furnisce accessu à e so interfacce di gestione via PowerShell.
Windows PowerShell vi permette di:
- Cambia i paràmetri di u sistema operatore;
- Gestisce servizii è prucessi;
- Configurate roli è cumpunenti di u servitore;
- Installa u software;
- Gestisce u software installatu attraversu interfacce speciali;
- Incrustà cumpunenti eseguibili in prugrammi di terzu;
- Crea scripts per automatizà e attività amministrative;
- Travaglià cù u sistema di fugliali, u registru Windows, almacenamentu di certificati, ecc.
Shell è ambiente di sviluppu
Ci hè Windows PowerShell vene in duie forme: in più di l'emulatore di cunsola è di a shell di cumanda, ci hè ancu un Ambiente di Scripting Integratu (ISE). Per accede à l'interfaccia di linea di cumanda, basta à selezziunà a scurciatoia adatta da u menu. Windows O lanciate powershell.exe da u menu Eseguisce. Apparirà una finestra blu, notevolmente diversa in capacità da l'anticu cmd.exe. Hà l'autocompletamentu è altre funzioni familiari à l'utilizatori di shell di cumanda Unix.

Per travaglià cù a cunchiglia, avete bisognu di ricurdà alcune scurciate di tastiera:
- E frecce su è giù scorri à traversu a storia per ripetiri cumandamenti digitati prima;
- A freccia diritta à a fine di a linea riscrive u caratteru di cumanda precedente per caratteru;
- Ctrl + Home elimina u testu digitatu da a pusizione di u cursore à u principiu di a linea;
- Ctrl+End elimina u testu da u cursore à a fine di a linea.
F7 mostra una finestra cù i cumandamenti inseriti è permette di selezziunà unu di elli. A cunsola travaglia ancu cù a selezzione di testu cù u mouse, copia-incolla, posizionamentu di u cursore, eliminazione, backspace - tuttu ciò chì ci piace.

Windows PowerShell ISE hè un ambiente di sviluppu cumpletu cù un editore di codice à tabulazioni cù evidenziazione di sintassi, un designer di cumandamenti, un debugger integratu è altre delizie di prugrammazione. Se scrivite un trattinu dopu à u nome di un cumandamentu in l'editore IDE, viderete una lista a tendina di tutti i parametri dispunibili, inseme cù u so tipu. Pudete lancià PowerShell ISE sia per mezu di una scurciatoia in u menu di sistema sia eseguendu l'eseguibile powershell_ise.exe.

Cmdlets
В Windows PowerShell include avà i cosiddetti cmdlets. Si tratta di classi .NET specializate chì implementanu una varietà di funzionalità. Sò chjamate aduprendu u principiu Action-Object (o Verb-Noun, sè preferite), è l'accoppiamentu cù trattini s'assumiglia à u predicatu è u sughjettu in e frasi in lingua naturale. Per esempiu, Get-Help significa letteralmente "Get-Help" o, in u cuntestu di PowerShell, "Show-Help". Essenzialmente, hè l'equivalente di u cumandamentu man in i sistemi Unix, è i manuali in PowerShell devenu esse accessibili in questu modu, invece di invucà i cmdlets cù l'interruttore --help o /?. Ùn vi scurdate di a ducumentazione in linea di PowerShell: Microsoft ne hà una abbastanza dettagliata.
In più di Get, i cmdlets utilizanu altri verbi per denotà l'azzioni (è micca solu verbi, strettamente). In a lista sottu, damu alcuni esempi:
Add - aghjunghje;
Clear - chjaru;
Enable - accende;
Disable - spegne;
New - crià;
Remove - sguassà;
Set - dumandà;
Start - corre;
Stop - ferma;
Export - esportazione;
Import - impurtà.
Ci sò cmdlets di sistema, d'utilizatori è opzionali: cum'è u risultatu di l'esekzione, tutti tornanu un ughjettu o un array d'uggetti. Ùn sò micca sensible à u casu, i.e. Da u puntu di vista di l'interprete di cumandamentu, ùn ci hè micca differenza trà Get-Help è get-help. U simbulu ';' hè utilizatu per a separazione, ma hè necessariu solu se parechji cmdlets sò eseguiti nantu à una linea.
Cmdlets Windows PowerShell hè raggruppatu in moduli (NetTCPIP, Hyper-V, ecc.), è u cmdlet Get-Command hè adupratu per circà oggetti è azzioni. Pudete visualizà l'aiutu per questu cusì:
Get-Help Get-Command 
Per automaticamente, u cumandimu mostra aiutu brevi, ma i paràmetri (argumenti) sò passati à i cmdlets quantu necessariu. Cù u so aiutu, pudete, per esempiu, uttene aiutu detallatu (parametru -Detailed) o cumpletu (parametru -Full), è ancu esempi di visualizazione (parametru -Examples):
Get-Help Get-Command -ExamplesAiutu in Windows PowerShell hè aghjurnatu cù u cmdlet Update-Help. Sè una linea di cumanda diventa troppu longa, l'argumenti di u cmdlet ponu esse spustati à a linea dopu scrivendu u simbulu "`" è appughjendu Enter - ùn pudete micca simpricimenti finisce di scrive un cumandamentu nantu à una linea è cuntinuà nantu à un'altra.
Eccu alcuni esempi di cmdlets cumuni:
Get-Process - mostra i prucessi in esecuzione in u sistema;
Get-Service - mostra servizii è u so statutu;
Get-Content - mostra u cuntenutu di u schedariu.
Per i cmdlet è l'utilità esterne aduprati spessu in Windows PowerShell hà sinonimi corti chjamati alias. Per esempiu, dir hè un alias per Get-ChildItem. A lista di sinonimi include ancu cumandamenti di tipu Unix (ls, ps, ecc.), è u cmdlet Get-Help hè invucatu da u cumandamentu help. A lista cumpleta di sinonimi pò esse vista cù u cmdlet Get-Alias:

Scripts, Funzioni, Moduli, è a Lingua PowerShell
Scripts Windows I script PowerShell sò almacenati cum'è fugliali di testu pianu cù l'estensione .ps1. Ùn ponu micca esse lanciati cù un doppiu clic; duvete cliccà cù u dirittu per apre u menu cuntestuale è selezziunà "Eseguisce cù PowerShell". Da a cunsola, duverete specificà u percorsu cumpletu di u script o navigà in u cartulare adattatu è scrive u nome di u fugliale. L'esecuzione di script hè ancu limitata da a pulitica di sistema. Per verificà i paràmetri attuali, pudete aduprà u cmdlet Get-ExecutionPolicy, chì restituirà unu di i seguenti valori:
Restricted - lanciari scripts hè disattivatu (per default);
AllSigned - solu scripts firmati da un sviluppatore di fiducia sò permessi di eseguisce;
RemoteSigned - permessu di eseguisce script firmati è propiu;
Unrestricted - permessu di eseguisce qualsiasi script.
L'amministratore hà duie opzioni. A più sicura implica a firma di script, ma questu hè una sorceria abbastanza seria - l'avemu da trattà in l'articuli seguenti. Avà pigliamu a strada di a minima resistenza è cambià a pulitica:
Set-ExecutionPolicy RemoteSigned 
Per fà questu, duverete eseguisce PowerShell cum'è amministratore, ancu se pudete aduprà un paràmetru speciale per cambià a pulitica per l'utilizatore attuale.
I scripts sò scritti in un linguaghju di prugrammazione orientatu à l'ughjettu, i cumandamenti di u quale sò chjamati secondu u listessu principiu cum'è i cmdlets discritti prima: "Action-Object" ("Verb-Noun"). U so scopu principale hè di automatizà i travaglii amministrativi, ma hè un linguaghju interpretatu cumpletu chì include tutti i custrutti necessarii: rami cundiziunali, cicli, variabili, array, ughjetti, gestione di l'errori, ecc. Qualsiasi editore di testu hè adattatu per scrive scripts, ma hè più cunveniente da eseguisce Windows PowerShell ISE.
Pudete passà parametri à u script, rende li ubligatorii, è ancu stabilisce valori predefiniti. Inoltre, Windows PowerShell vi permette di creà funzioni è di chjamà li cum'è cmdlets, aduprendu a custruzzione Function è parentesi graffe. Un script chì cuntene funzioni hè chjamatu modulu è hà una estensione .psm1. I moduli devenu esse almacenati in cartulari definiti in variabili d'ambiente PowerShell. Pudete vede li aduprendu u cumandamentu seguente:
Get-ChildItem Env:PSModulePath | Format-Table -AutoSizeTrasportatori
In l'ultimu esempiu, avemu utilizatu una custruzzione familiare à l'utilizatori di shell Unix. Windows A barra verticale di PowerShell permette ancu di trasmette l'output di un cumandamentu à l'input di un altru, ma ci hè una differenza significativa in l'implementazione di u pipeline: ùn hè più una stringa di caratteri o testu. I cmdlet integrati è e funzioni definite da l'utente restituiscenu oggetti o array di oggetti è ponu ancu riceveli cum'è input. Cum'è a shell Bourne è i so numerosi successori, PowerShell usa u pipeline per simplificà i travaglii cumplessi.
L'esempiu di pipeline più simplice hè cusì:
Get-Service | Sort-Object -property Status 
Prima, u cmdlet Get-Service hè eseguitu, è dopu tutti i servizii ricivuti da ellu sò passati à u cmdlet Sort-Object per sorte per a pruprietà Status. Quale argumentu u risultatu di a sezione precedente di u pipeline hè passatu dipende da u so tipu - di solitu hè InputObject. Stu prublema serà discutitu in più detail in un articulu dedicatu à a lingua di prugrammazione PowerShell.
Sè vulete, a catena pò esse allargata è u risultatu di Sort-Object pò esse passatu à un altru cmdlet (seranu eseguiti da manca à diritta). À propositu, l'utilizatori Windows A custruzzione di paginazione, familiare à tutti l'utilizatori Unix, hè ancu dispunibile:
Get-Service | Sort-Object -property Status | moreEseguisce i travaglii in fondo
Assai spessu hè necessariu eseguisce un certu cumandamentu in u sfondate, per ùn aspittà u risultatu di a so esecuzione in a sessione di shell. Windows PowerShell hà parechji cmdlets per questu casu:
Start-Job - lanciari un compitu di fondo;
Stop-Job - ferma u travagliu di fondo;
Get-Job - vede a lista di i travaglii di fondo;
Receive-Job - vede u risultatu di l'esekzione di u travagliu di fondo;
Remove-Job - sguassà un compitu di fondo;
Wait-Job - trasferendu u travagliu di fondo torna à a cunsola.
Per inizià una attività di fondo, usemu u cmdlet Start-Job è specificà un cumandamentu o un set di cumandamenti in curly braces:
Start-Job {Get-Service} 
Compiti di fondu in Windows PowerShell pò esse manipulatu sapendu i so nomi. Cuminciamu per amparà cumu visualizalli:
Get-Job 
Avà mustramu u risultatu di Job1:
Receive-Job Job1 | more 
Tuttu hè abbastanza simplice.
Esecuzione di cumandamenti remoti
Windows PowerShell vi permette di eseguisce cumandamenti è script micca solu nantu à l'urdinatore lucale, ma ancu nantu à urdinatori remoti è ancu in gruppi interi di macchine. Ci sò parechji modi per fà questu:
- Parechji cmdlets anu un paràmetru
-ComputerName, ma in questu modu ùn hà micca travagliatu, per esempiu, per creà un trasportatore; - Cmdlet
Enter-PSSessionpermette di creà una sessione interattiva nantu à una macchina remota; - Utilizà un cmdlet
Invoke-Commandpudete eseguisce cumandamenti o script in unu o più computer remoti.
Versioni di PowerShell
PowerShell hà evolutu significativamente dapoi a so liberazione iniziale in u 2006. Hè dispunibule per una larga gamma di sistemi chì funzionanu nantu à diverse piattaforme hardware (x86, x86-64, Itanium, ARM): Windows xp, Windows Server 2003, Windows vede, Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU/Linux è OS X. L'ultima versione, 6.2, hè stata publicata u 10 di ghjennaghju di u 2018. I script scritti per e versioni precedenti anu prubabilmente da funziunà in e versioni successive, ma u backporting pò esse problematicu, postu chì PowerShell hà aghjustatu un gran numeru di novi cmdlet annantu à l'anni. Pudete truvà a versione di a shell di cumanda installata nant'à u vostru urdinatore aduprendu a pruprietà PSVersion di a variabile $PSVersionTable integrata:
$PSVersionTable.PSVersion 
Pudete ancu aduprà u cmdlet:
Get-Variable -Name PSVersionTable –ValueOnly 
U listessu hè fattu cù u cmdlet Get-Host. In fatti, ci sò parechje opzioni, ma per aduprà, avete bisognu di amparà a lingua di prugrammazione PowerShell, chì faremu in .
Risultati
Microsoft hà creatu una shell di cumanda veramente putente cù un ambiente integratu convenientu per u sviluppu di script. Ciò chì a distingue da l'arnesi à i quali simu abituati in u mondu Unix hè a so profonda integrazione cù i sistemi operativi di a famiglia. Windows, è ancu u software per elli è a piattaforma .NET Core. PowerShell pò esse chjamatu una shell orientata à l'ughjettu perchè i cmdlet è e funzioni definite da l'utente restituiscenu oggetti o array d'ughjetti è ponu riceveli cum'è input. Credemu chì questu strumentu hè indispensabile per tutti l'amministratori di servitori. Windows: hè passatu u tempu quandu si pudianu fà senza a linea di cummanda. Una shell di cunsola avanzata hè particularmente necessaria , ma hè una storia completamente diversa.
Solu l'utilizatori registrati ponu participà à l'indagine. , per piacè.
Chì temi deve esse trattatu prima in i prossimi articuli in a serie?
53,2%Programmazione in PowerShell123
42,4%PowerShell98 Funzioni è Moduli
22,1%Cumu firmà i vostri scritti?51
12,1%U travagliu cù i repositori per mezu di i fornituri (prestatori)28
57,6%Automatizà l'amministrazione di l'informatica cù PowerShell133
30,7%Gestisce u software è incrustà eseguibili PowerShell in prudutti di terzu71
231 utilizatori anu vutatu. 37 utilizatori si sò astenuti.
Source: www.habr.com
