Cosa hè Windows PowerShell è ciò chì si manghja? Parte 1: Funzioni chjave

Stòricamente, l'utilità di linea di cumanda in i sistemi Unix sò megliu sviluppati chì in Windows, ma cù l'avventu di una nova suluzione, a situazione hà cambiatu.

Windows PowerShell permette à l'amministratori di sistema di automatizà a maiò parte di e attività di rutina. Cù u so aiutu, pudete cambià i paràmetri, piantà è inizià i servizii, è ancu fà u mantenimentu di a maiò parte di l'applicazioni installate. Saria sbagliatu per percive a finestra blu cum'è un altru interprete di cumandamentu. Stu approcciu ùn riflette micca l'essenza di l'innuvazioni pruposte da Microsoft. In fatti, e pussibulità di Windows PowerShell sò assai più larghe: in una breve serie di articuli, pruvaremu à capisce cumu a suluzione Microsoft difiere di l'arnesi chì avemu più familiarizatu.

Cosa hè Windows PowerShell è ciò chì si manghja? Parte 1: Funzioni chjave

Funzioni chjave 

Di sicuru, Windows PowerShell hè principalmente una shell di scripting, originariamente custruitu nantu à .NET Framework è più tardi in .NET Core. A cuntrariu di cunchiglia chì accettanu è rinviate dati di testu, Windows PowerShell travaglia cù classi .NET chì anu pruprietà è metudi. PowerShell permette di eseguisce cumandamenti cumuni è dà ancu accessu à l'uggetti COM, WMI è ADSI. Aduprà diversi magazzini, cum'è u sistema di schedari o u registru di Windows, per l'accessu à quale hè chjamatu. fornitori. Hè da nutà a pussibilità di incrustà cumpunenti eseguibili PowerShell in altre applicazioni per implementà diverse operazioni, incl. attraversu una interfaccia grafica. U reversu hè ancu veru: parechje applicazioni Windows furnisce l'accessu à e so interfacce di gestione attraversu 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;
  • U travagliu cù u sistema di fugliale, u registru di Windows, u magazzinu di certificati, etc.

Shell è ambiente di sviluppu

Ci hè Windows PowerShell in duie forme: in più di l'emulatore di cunsola cù una shell di cumanda, ci hè un Ambiente di Scrittura Integrata (ISE). Per accede à l'interfaccia di a linea di cumanda, basta à selezziunate l'accorciata apprupriata da u menù di Windows o eseguite powershell.exe da u menu Run. Una finestra blu apparirà nantu à u screnu, notevolmente sfarente in capacità da u cmd.exe antediluvian. Ci hè l'autocompletion è altre caratteristiche familiari à l'utilizatori di cunchiglia di cumanda per i sistemi Unix.

Cosa hè Windows PowerShell è ciò chì si manghja? Parte 1: Funzioni chjave

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.

Cosa hè Windows PowerShell è ciò chì si manghja? Parte 1: Funzioni chjave
Windows PowerShell ISE hè un ambiente di sviluppu cumpletu cù un editore di codice tabulatu è sintassi evidenziatu, custruttore di cumandamenti, debugger integratu, è altri piacè di prugrammazione. Se scrivite un trattu dopu à u nome di cumandamentu in l'editore di l'ambiente di sviluppu, uttene tutte l'opzioni dispunibili in a lista drop-down cù una indicazione di u tipu. Pudete lancià PowerShell ISE sia attraversu un shortcut da u menù di u sistema, sia utilizendu u schedariu eseguibile powershell_ise.exe.

Cosa hè Windows PowerShell è ciò chì si manghja? Parte 1: Funzioni chjave

Cmdlets 

In Windows PowerShell, u cusì chjamatu. cmdlets. Quessi sò classi .NET specializati chì furnisce una varietà di funziunalità. Sò chjamati secondu u principiu "Azione-Objectu" (o "Verbu-Nome, se preferite), è u cunnessu separatu da trattini s'assumiglia à u predicatu è u sughjettu in e sentenzi di lingua naturale. Per esempiu, Get-Help significa literalmente "Get-Help" o in un cuntestu PowerShell: "Show-Help". In fatti, questu hè un analogu di u cumandamentu di l'omu in sistemi Unix, è i manuali in PowerShell devenu esse dumandati in questu modu, è micca chjamendu cmdlets cù a chjave -help o /?.. Ùn vi scurdate di a documentazione in linea per PowerShell: Microsoft hà abbastanza detallatu.

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. 

I cmdlets di Windows PowerShell sò raggruppati in moduli (NetTCPIP, Hyper-V, etc.), è ci hè un cmdlet Get-Command per a ricerca per l'ughjettu è l'azzione. Pudete vede l'aiutu per questu cusì:

Get-Help Get-Command

Cosa hè Windows PowerShell è ciò chì si manghja? Parte 1: Funzioni chjave

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 -Examples

L'aiutu in Windows PowerShell hè aghjurnatu da u cmdlet Update-Help. Se una linea di cumandamenti risulta troppu longa, l'argumenti di u cmdlet ponu esse trasferiti à u prossimu scrivite u caratteru di serviziu '`' è pressu Enter - simpricimenti finiscinu di scrive un cumandamentu in una linea è cuntinuà nantu à l'altru ùn funziona micca.

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 cmdlets spessu usati è utilità esterni, Windows PowerShell hà sinonimi brevi - aliases (da l'inglese. Alias). Per esempiu, dir hè un alias per Get-ChildItem. A lista di sinonimi include ancu analoghi di cumandamenti da i sistemi Unix (ls, ps, etc.), è u cmdlet Get-Help hè chjamatu da u cumandamentu d'aiutu. Una lista completa di sinonimi pò esse vistu cù u cmdlet Get-Alias:

Cosa hè Windows PowerShell è ciò chì si manghja? Parte 1: Funzioni chjave

Scripts, Funzioni, Moduli, è a Lingua PowerShell

I scripts di Windows PowerShell sò guardati cum'è schedarii di testu chjaru cù una estensione .ps1. Ùn pudete micca eseguisce clicchendu doppiu: avete bisognu di cliccà cù u dirittu right per apre u menù di cuntestu è selezziunate "Esegui in PowerShell". Da a cunsola duverete sia specificà u percorsu sanu à u script, o andate à u cartulare appropritatu è scrivite u nome di u schedariu. L'esecuzione di scripts hè ancu limitata da a pulitica di u sistema, è per verificà i paràmetri attuali pudete aduprà u cmdlet Get-ExecutionPolicy, chì restituverà 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

Cosa hè Windows PowerShell è ciò chì si manghja? Parte 1: Funzioni chjave
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 una lingua di prugrammazione orientata à l'ughjettu, i cumandamenti chì sò chjamati secondu u listessu principiu cum'è i cmdlets discututi prima: "Action-Object" ("Verb-Noun"). U so scopu principale hè di automatizà i travaglii di amministrazione, ma hè una lingua interpretata cumpleta chì hà tutte e custruzzioni necessarii: saltu cundizionale, loops, variàbili, arrays, oggetti, gestione d'errore, etc. Qualchese editore di testu hè adattatu per scrive script, ma hè più cunvene per eseguisce Windows PowerShell ISE.

Pudete passà parametri à u script, rende ubligatoriu, è ancu stabilisce valori predeterminati. Inoltre, Windows PowerShell permette di creà è chjamà funzioni in u listessu modu cum'è cmdlets, utilizendu a funzione di custruzzione è curly braces. Un script cù funzioni hè chjamatu modulu è hà una estensione .psm1. I moduli devenu esse guardati in cartulari definiti in e variabili di l'ambiente PowerShell. Pudete vede elli cù u cumandimu seguente:

Get-ChildItem Env:PSModulePath | Format-Table -AutoSize

Trasportatori

In l'ultimu esempiu, avemu usatu un disignu familiar à l'utilizatori di cunchiglia Unix. In Windows PowerShell, a barra verticale permette ancu di passà l'output di un cumandamentu à l'input di un altru, ma ci hè una diferenza significativa in l'implementazione di u pipeline: ùn parlemu più di un inseme di caratteri o di qualchì testu. I cmdlets integrati o e funzioni definite da l'utilizatori tornanu l'ogetti o arrays d'uggetti, è ponu ancu riceve cum'è input. Cum'è a cunchiglia Bourne è i so numerosi successori, PowerShell usa un pipeline per simplificà i travaglii cumplessi.

L'esempiu di pipeline più simplice hè cusì:

Get-Service | Sort-Object -property Status

Cosa hè Windows PowerShell è ciò chì si manghja? Parte 1: Funzioni chjave
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. 

Se vulete, pudete cuntinuà a catena è passà u risultatu di l'operazione Sort-Object à un altru cmdlet (saranu eseguiti da manca à diritta). Per via, l'utilizatori di Windows anu ancu accessu à a custruzzione per a paginazione familiar à tutti i Unixoids: 

Get-Service | Sort-Object -property Status | more

Eseguisce i travaglii in fondo 

Piuttostu spessu hè necessariu di eseguisce un certu cumandamentu in u sfondate per ùn aspittà micca 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}

Cosa hè Windows PowerShell è ciò chì si manghja? Parte 1: Funzioni chjave
I travaglii di sfondate in Windows PowerShell ponu esse manipulati sapendu i so nomi. Prima, imparemu à vedeli:

Get-Job

Cosa hè Windows PowerShell è ciò chì si manghja? Parte 1: Funzioni chjave
Avà mustramu u risultatu di Job1:

Receive-Job Job1 | more

Cosa hè Windows PowerShell è ciò chì si manghja? Parte 1: Funzioni chjave
Tuttu hè abbastanza simplice.

Esecuzione di cumandamenti remoti

Windows PowerShell permette di eseguisce cumandamenti è scripts micca solu in l'urdinatore lucale, ma ancu in un computer remoto, è ancu in un gruppu sanu di macchine. Ci hè parechje manere di 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-PSSession permette di creà una sessione interattiva nantu à una macchina remota; 
  • Utilizà un cmdlet Invoke-Command pudete eseguisce cumandamenti o script in unu o più computer remoti.

Versioni di PowerShell

PowerShell hà cambiatu assai da a so prima versione in 2006. L'uttellu hè dispunibule per parechji sistemi chì funzionanu in diverse piattaforme hardware (x86, x86-64, Itanium, ARM): Windows XP, Windows Server 2003, Windows Vista, 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 liberata u 10 di ghjennaghju di u 2018. I scripts scritti per e versioni precedenti sò assai prubabile di travaglià in i più tardi, ma i prublemi ponu accade cù un trasferimentu inversu, postu chì annantu à l'anni di sviluppu, un gran numaru di novi cmdlets sò apparsu in PowerShell. Pudete scopre a versione di a cunchiglia di cumanda installata nantu à u vostru urdinatore utilizendu a pruprietà PSVersion di a variabile integrata $PSVersionTable:

$PSVersionTable.PSVersion

Cosa hè Windows PowerShell è ciò chì si manghja? Parte 1: Funzioni chjave
Pudete ancu aduprà u cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly

Cosa hè Windows PowerShell è ciò chì si manghja? Parte 1: Funzioni chjave
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 prossimu articulu

Risultati 

Microsoft hà sappiutu di creà una shell di cumanda veramente putente cun un ambiente integratu convenientu per sviluppà scripts. Ciò chì distingue da l'arnesi chì avemu familiarizatu in u mondu Unix hè a so integrazione prufonda cù i sistemi operativi di a famiglia Windows, è ancu cù u software per elli è a piattaforma .NET Core. PowerShell pò esse chjamatu una cunchiglia orientata à l'ughjettu perchè i cmdlets è e funzioni definite da l'utilizatori tornanu l'ogetti o arrays d'uggetti è ponu riceve cum'è input. Pensemu chì tutti l'amministratori di u servitore di Windows duveranu pussede stu strumentu: u tempu hè passatu quandu puderanu fà senza a linea di cummanda. Una shell di cunsola avanzata hè particularmente necessaria u nostru VPS low cost in esecuzione Windows Server Core, ma hè una storia completamente diversa.

Cosa hè Windows PowerShell è ciò chì si manghja? Parte 1: Funzioni chjave

Solu l'utilizatori registrati ponu participà à l'indagine. Firmà lu, 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

Add a comment