Vad är powershell i Windows 7. Grunderna i Windows PowerShell. Cmdlets i PowerShell

Hej alla! Idag en kort anteckning om ämnet, hur man öppnar Powershell som administratör. Låt mig påminna dig om att PowerShell är ett kraftfullt programmerings- och administrationsspråk från Microsoft, varje år växer det, allt stor kvantitet cmdlets och funktionalitet. I huvudsak är det en ersättning för Windows Command Prompt. Nedan kommer vi att överväga metoder som låter dig öppna och konfigurera den.
.

Metoder för att öppna en PowerShell-snap-in

Powershell utvecklas väldigt bra och med lanseringen av Windows 10 har den redan fått version 5, men vårt ämne är annorlunda. Så hur öppnar man powershell? Allt är enkelt om i Windows XP, då ingenting. Eftersom den levereras separat kommer den i alla efterföljande utgåvor som en inbyggd komponent. Mest universell metodöppna powershell detta klick

Win+R och ange powershell

Genom att trycka på enter kommer PowerShell-konsolen att starta, det enda problemet är att den inte öppnas som administratör. Och som ett resultat kommer många kommandon inte att köras; nedan kommer vi att se hur man gör detta på uppdrag av administratören.

Hur man kör Windows Powershell som administratör i Windows 8.1 och Windows 7

Du kan öppna Windows Powershell genom Start. I Windows 8.1, Windows 2012 R2, gå till Systemverktyg - Windows och högerklicka och välj Kör som administratör.

I Windows 7 och Windows 2008 R2 ser det ut så här Start > Tillbehör > Windows PowerShell

Du kan också skapa en genväg i uppgiftsobjektet och högerklicka på det och välja lämpligt objekt

Det skulle vara bekvämt om PowerShell alltid öppnade som administratör, låt oss implementera det. Detta görs på samma sätt i alla versioner av Windows. Öppnar kontrollpanelen

Högerklicka på den och välj Egenskaper. Du kan direkt se sökvägen till filen där den finns i systemet.

Klicka på knappen "Avancerat". Du kommer att se ytterligare egenskaper. där du måste markera rutan Kör som administratör.

Allt är väldigt enkelt. Jag är säker på att du nu inte kommer att ha en fråga om hur du öppnar Windows Powershell. En annan användbar sak är att ändra typsnittet i powershell-fönstret.

Hur man öppnar PowerShell från snabbmenyn Start-knappen i Windows 10

Microsoft lägger allt mer tonvikt på kommandorad mot sitt starka språk (PowerShell), och detta är logiskt, eftersom dess förmåga att hantera operativsystem Windows familj, är nästan obegränsade, om inte fler, än i det grafiska gränssnittet. Börjar med Windows-versioner 10 1709, i snabbmenyn, PowerShell, ersatte den vanliga cmd för alla. Högerklicka på startknappen i Windows 10 och välj lämpligt objekt från snabbmenyn:

  1. Windows PowerShell
  2. Windows PowerShell (administratör) är exakt läget med maximala rättigheter i Windows 10.

Starta Windows PowerShell med Sök i Windows 10

På Windows 10 och äldre versioner kan du hitta PowerShell med regelbunden sökning, det finns ett speciellt avsnitt för detta. Klicka bredvid Start-knappen, förstoringsglasikonen. I sökformuläret som öppnas anger du ordet PowerShell. Du kommer att söka efter alla alternativ, bland vilka du hittar skalet. Om du högerklickar på den kan du öppna den som administratör.

Starta Windows PowerShell från Start-menyn i Windows 10

För att öppna PowerShell från Start-menyn, öppna den och hitta Windows PowerShell-objektet, det kommer att vara i form av en mapp, öppna den och kör lämplig version.

Om du högerklickar kan du köra Vershel-skalet som administratör med administratörsrättigheter.

Ytterligare och generiska skallanseringsmetoder

Det finns också mycket specifika metoder för att öppna ett skal med ett kraftfullt språk från Microsoft. Den mest klumpiga, den är lätt att hitta körbar fil och kör den direkt från en plats i systemet. Låt oss gå till din Windows 10 längs följande väg:

C:\Users\användarnamn\AppData\Roaming\Microsoft\Windows\Startmeny\Programs\Windows PowerShell

Som ett resultat kommer du att se en mapp med genvägar som finns i Start-menyn, du kan starta dem.

Du kan också köra den ursprungliga körbara filen, som finns längs sökvägen:

C:\Windows\System32\WindowsPowerShell\v1.0

Och genom att högerklicka på den kan du ladda ner den som administratör, med maximala rättigheter.

Du kan också starta Windows PowerShell från kommandoradsfönstret; för att göra detta anger du helt enkelt det magiska ordet i det och trycker på Enter.

Tja, låt mig också påminna dig om metoden för att starta en ny uppgift från snapin-modulen "Task Manager". Öppna "Task Manager", välj menyalternativet "Arkiv - Kör ny uppgift"

I fönstret som visas anger du PowerShell.

Tja, den sista metoden jag känner till är att starta PowerShell, via Windows utforskaren 10, för att göra detta, öppna Utforskaren, välj menyalternativet "Arkiv - starta Windows PowerShell", det kommer att finnas båda lägena.

Vad är PowerShell ISE

Du har säkert märkt att PowerShell ISE-genvägen finns överallt, och du skulle vilja veta vad det är. I ett nötskal, detta är ett speciellt skal där du kan skriva skript och scenarier i PowerShell, med alla de olika cmdlets som Microsoft erbjuder dig.

Powershell att ändra typsnittet är väldigt enkelt, gå till fliken Font i egenskaperna, där du kan ställa in storleken från 5 till 72.

Du kan också komma till egenskaper från själva verktygsfönstret, klicka på ikonen i det övre vänstra hörnet och välj egenskaper

Här är teckensnittsinställningarna något annorlunda, och när de ändras ändras också storleken på konsolen.

På fliken Färger kan du ställa in teckensnittsfärgen i Powershell och själva fönstret. Genom att göra den svart, till exempel, som kommandoraden.

Jag rekommenderar också att om du är en aktiv konsolanvändare, ställ in buffertstorleken inte till 50 kommandon, utan åtminstone till 100.

Tack för din uppmärksamhet. Det här är metoderna för att öppna Power Shell-konsolen i Windows. Webbplatsmaterial

Många användare känner till kommandotolken, men väldigt få har hört talas om Windows PowerShell. På sätt och vis är PowerShell ett verktyg som syftar till att ersätta kommandoraden och ge mer kraftfulla funktioner för att hantera Windows-operativsystemet. I den här artikeln kommer vi att försöka förklara tydligt vad det här verktyget är, varför det är så kraftfullt och vem som brukar använda det oftast.

Vad är PowerShell?

För bättre förståelse måste vi först förstå vad ett skal är. Inom datavetenskap är ett skal ett användargränssnitt som ger tillgång till olika tjänster. operativ system. Skalet kan vara kommandoradsbaserat eller kan inkludera ett grafiskt användargränssnitt (GUI).

Windows PowerShell är ett skal utvecklat av Microsoft för uppgiftsautomatisering och konfigurationshantering. Detta kraftfulla skal är baserat på .NET-ramverket och inkluderar ett kommandoradsskal och ett skriptspråk.

Det kan också finnas en Windows PowerShell ISE ovanpå det vanliga kommandoradsskalet. ISE fungerar som en integrerad skriptmiljö - ett grafiskt användargränssnitt som låter dig skapa olika skript utan att behöva ange alla kommandon på kommandoraden.

Den första versionen av PowerShell släpptes i november 2006 för Windows XP. Windows Server 2003 och Windows Vista. Den senaste är version 4.0, som släpptes i oktober 2013. Den kommer som standard med Windows 8.1 och Windows Server 2012 R2.

Vad kan du göra med PowerShell?

Microsoft utvecklade Windows PowerShell som ett verktyg som hjälper till att automatisera och snabbt lösa många tråkiga administrativa uppgifter. Du kan till exempel använda PowerShell för att se alla USB-enheter installerade på en eller flera datorer i ett nätverk, eller så kan du ställa in en tidskrävande uppgift att köra i bakgrund medan du gör annat arbete. Du kan också identifiera och avsluta processer som inte svarar, eller filtrera specifik information om datorer i ditt nätverk och exportera den i HTML-format.

PowerShells funktioner gör att du kan förenkla och automatisera tidskrävande och repetitiva uppgifter genom att skapa skript och kombinera flera kommandon tillsammans.

Om du är nätverksadministratör kommer du att tycka att PowerShell är mycket användbart när du arbetar med Active Directory. Med tanke på att verktyget innehåller hundratals anpassningsbara kommandon som kallas cmdlets, är sannolikheten att PowerShell kan hjälpa dig att bli mer produktiv mycket hög.

Hur kör man PowerShell på Windows 8.1?

Om du inte har en PowerShell-bricka på din startskärm eller en genväg på skrivbordet kan du öppna den med sökfunktionen - det här är en av de mest enkla sätt. Tryck på +Q, skriv "powershell" och tryck sedan på Enter.

Du kan också öppna PowerShell från avsnittet Program på din startskärm: gå till hemskärm och flytta markören till det nedre vänstra hörnet, precis under den sista brickan i den första kolumnen. Klicka på ikonen med pilen nedåt. Klicka sedan på PowerShell-ikonen i avsnittet "Verktyg".

För att öppna PowerShell med hjälp av dialogrutan Kör, tryck på +R, skriv "powershell" och tryck på Enter.

Hur kör man PowerShell på Windows 7?

I Windows 7 kan du hitta verktyget genom att söka efter "powershell" i Start-menyn.

Du kan också öppna PowerShell via Start-menyn i avsnittet Tillbehör.

Uppenbarligen fungerar ovanstående kommando i Kör-fönstret också i Windows 7.

Vem använder vanligtvis PowerShell?

Utan tvekan är PowerShell valet av många IT-administratörer. Och av goda skäl, eftersom verktyget avsevärt förenklar hanteringen och minskar mängden arbete i stort företagsnätverk.

Låt oss säga att du hanterar ett stort nätverk som innehåller över femhundra servrar, och du behöver implementera en ny säkerhetslösning som beror på någon tjänst som måste köras på dessa servrar. Naturligtvis kan du ansluta till varje server och se om den nödvändiga tjänsten är installerad och körs på dem. Men i det här fallet är det osannolikt att din ledning blir nöjd, eftersom du kommer att behöva för mycket tid för att slutföra uppgiften.

MED med PowerShell du kan göra detta jobb inom några minuter då hela operationen kan göras med ett enda script som kommer att samla information om de tjänster som körs på de angivna servrarna och spara den som en textfil t.ex.

PowerShell låter dig göra mycket mer än vad som kan tas upp i en artikel, så om du verkligen är intresserad rekommenderar vi starkt att du köper och läser en av de många böckerna som täcker kraften i detta verktyg.

Ha en bra dag!

I den här artikeln kommer vi att titta på sådan teknik från Microsoft som Windows PowerShell, vi kommer att prata om vad PowerShell är, vad cmdlets och en pipeline är, hur man skriver skript och moduler, och även beröra andra lika viktiga och användbara funktioner i Windows PowerShell.

Innan PowerShell fanns det ( och det finns) följande verktyg för automatisering och administration av tjänster: Windows kommandorad och Windows Script Host. Men dessa tekniker har nackdelar.

På laget Windows-strängar Det finns också möjlighet att utföra vissa administrativa uppgifter och möjligheten att skriva ner en algoritm av åtgärder, spara den som ett skript (bat-fil), samtidigt som du kan använda vissa programmeringselement, till exempel använda variabler, villkorliga konstruktioner och t.o.m. något som slingor.

De flesta mjukvaruprodukter har ett konsolgränssnitt, d.v.s. vi kan hantera programmet med hjälp av kommandoraden, samtidigt som vi sparar resurser på grund av bristen på arbetskostnader GUI. Microsoft släpper till och med utgåvor utan ett grafiskt gränssnitt för Windows Server-serveroperativsystemet ( Server Core, Windows Server 2016 har till och med Nano Server), men allt detta räcker inte, eftersom kommandoradens funktioner är begränsade, dvs. Vi kommer inte att kunna skriva någon komplex logik för att automatisera något, och även om vi kan, kommer det att ta tid och kunskap.

En nackdel med kommandoraden är också att för att fullständigt hantera servern använder vi olika konsolverktyg för mjukvaruprodukter, och därför är det faktiskt svårt att använda kommandoraden för administration, ur det faktum att alla dessa verktyg har olika syntax, parametrar, användningsmetoder och för att utföra typiska uppgifter, d.v.s. varje dag måste du ha allt detta i minnet, och för att utföra atypiska uppgifter måste du först läsa hjälpen eller dokumentationen.

Windows Script Host-teknik låter dig utföra alla administrativa uppgifter som kommandoraden, inklusive deras automatisering genom att skriva WSH-skript, men här kan vi redan använda fullfjädrade programmeringsspråk ( VBScript och JScript), dvs. komplex logik och algoritmer kan implementeras. Dessutom, med hjälp av WSH hanterar vi mjukvaruprodukter genom ett objektgränssnitt, med andra ord är Windows Script Host mycket mer " kylare» än kommandoraden. Men denna teknik blev inte heller det där idealiska verktyget för administration och automatisering av denna administration för systemadministratörer, eftersom Windows Script Host krävde kunskaper i ovanstående programmeringsspråk, vilket faktiskt är överflödigt för systemadministratörer. Administratörer behöver bara ett enkelt administrationsverktyg med möjlighet att programmera vissa åtgärder, och de vill inte fördjupa sig i objektmodellerna för mjukvaruprodukter i programmeringsspråken VBScript och JScript.

Som ett resultat behövde Microsoft utveckla ett administrationsverktyg för systemadministratörer som till 100 procent skulle tillfredsställa alla systemadministratörers behov, både vad gäller administration och automatiseringsmöjligheter, och när det gäller bekvämlighet och användarvänlighet, så Windows PowerShell dök upp.

Vad är Windows PowerShell?

Windows PowerShellär ett Windows-skriptspråk och ett kommandoskal utformat för att administrera och konfigurera Windows-operativsystem. PowerShell är byggt ovanpå CRL-ramverket och .NET Framework, och till skillnad från kommandoraden, som accepterar och returnerar text, fungerar Windows PowerShell med objekt. Varje objekt i PowerShell har egenskaper och metoder som du kan använda för att manipulera dessa objekt.

På Windows Microsoft PowerShell utvecklade konceptet med cmdlets ( cmdlets), som är ett kommandonamnssystem " Verb-substantiv" Detta system tillåter systemadministratörer att snabbt bemästra och förenkla arbetet med PowerShell.

MED använder Windows PowerShell kan:

  • Få åtkomst till filsystemet;
  • Hantera registret;
  • Hantera tjänster;
  • Hantera processer;
  • Konfigurera operativsystemet;
  • Installera programvara;
  • Installera serverroller och komponenter;
  • Administrera och konfigurera serverroller och komponenter;
  • Skriva och använda skript för att automatisera hantering och administration;
  • Utför andra systemadministratörsuppgifter.

Windows PowerShell innehåller många vanliga verktyg och kommandon som du kan köra från kommandoraden, som ipconfig, ping och andra. Detta gjordes för att underlätta övergången för systemadministratörer från kommandoraden till PowerShell.

För enkelhetens skull har många ofta använda kommandon och verktyg i PowerShell synonymer ( Alias), till exempel är cls en synonym för Clear-Host cmdlet, dir är en synonym för Get-ChildItem ( full lista synonymer kan ses genom att köra Get-Alias-cmdlet).

För att förenkla sökningen efter önskat kommando har PowerShell en speciell cmdlet Get-Command, med vilken du kan söka på både verb och substantiv. Alla kommandon i Windows PowerShell är grupperade i moduler ( t.ex. Hyper-V, NetTCPIP), vilket också gör det lättare att hitta rätt kommando.

När det önskade kommandot har hittats kan du titta på instruktionerna för att arbeta med detta kommando, d.v.s. hjälp, det finns en speciell Get-Help-cmdlet för dessa ändamål, till exempel kommer följande kommando att visa hjälp för Get-Command-cmdleten:

Få-hjälp Get-Command

Hjälp i Windows PowerShell kan vara kort, detaljerad ( parameter - Detaljerad), full ( parameter -Full), och du kan också bara visa exempel ( parameter - Exempel). Följande kommando visar bara exempel på hur du använder Get-Command-cmdleten:

Få-hjälp Get-Command -Exempel

PowerShell-hjälpen är uppdateringsbar, d.v.s. den kan uppdateras med kommandot Update-Help.

Windows PowerShell-versioner

Den första versionen av PowerShell 1.0 dök upp den 14 november 2006 och släpptes som en separat distribution som kunde installeras på följande versioner av Windows operativsystem: Windows XP Service Pack 2, Windows Server 2003 Service Pack 1 och Windows Vista.

I Windows Server 2008 kom PowerShell 1.0 som en komponent som också måste installeras.

Från och med Windows 7 och Windows Server 2008 R2 kommer PowerShell som en integrerad komponent i systemet ( de där. förinstallerad, du behöver inte installera den). Nedan finns en överensstämmelsetabell mellan versionen av PowerShell och versionen av Windows operativsystem ( de där. vilken version av PowerShell är installerad som standard på vilken version av Windows):

PowerShell-version Windows-versioner
PowerShell 2.0 Windows 7, Windows Server 2008 R2
PowerShell 3.0 Windows 8, Windows Server 2012
PowerShell 4.0 Windows 8.1, Windows Server 2012 R2
PowerShell 5.0 Windows 10, Windows Server 2016

Med varje ny version PowerShell blir ett allt kraftfullare administrationsverktyg; som jämförelse hade den första PowerShell cirka 130 cmdlets, och PowerShell 5.0 har nu över 600!

Att veta aktuell version I PowerShell kan du använda egenskapen PSVersion för den inbyggda variabeln $PSVersionTable, kör till exempel följande kommando:

$PSVersionTable.PSVersion

Eller kör cmdleten

Get-Variable -Name PSVersionTable –ValueOnly

där PSVersion-värdet kommer att vara PowerShell-versionen.

PowerShell-språk

PowerShellär ett objektorienterat programmeringsspråk för skript. Det används för att skriva kommandon för att kontrollera alla komponenter i Windows-operativsystemet i Windows PowerShell, samt för att skriva skript för att automatisera administrativa uppgifter i en integrerad miljö Windows-skript PowerShell (ISE). Även om PowerShell-språket skapades för administrationsuppgifter är det ett fullfjädrat programmeringsspråk för skript, eftersom det har programkonstruktioner som finns i alla programmeringsspråk, såsom: villkor, loopar, felhantering, arbete med variabler, objekt och matriser.

PowerShell-språket har en enhetlig syntax för att skriva kommandon och en namnstruktur för dessa kommandon baserat på principen " Verb-substantiv", vad gör han givet språk intuitivt för både programmerare och systemadministratörer.

Windows PowerShell

Windows PowerShellär en miljö för att köra kommandon och skript i PowerShell. Det här skalet har samma möjligheter som kommandoraden, till exempel: lagra kommandoexekveringshistorik, inställning utseende skal, slutföra kommandon med tangentkombinationen Ctrl+C, såväl som många andra funktioner som inte är tillgängliga i kommandoradsskalet, till exempel en sådan underbar funktion som " syntaxmarkering» ( introducerad i PowerShell 5.0).

Det finns flera sätt att starta PowerShell, till exempel:

  • Från kommandoraden genom att skriva PowerShell;
  • Genom dialogrutan " Kör» ( kortkommando Win+R), skriver också PowerShell;
  • I Windows 7 - Start->Alla program -> Tillbehör -> Windows PowerShell -> Windows PowerShell;
  • I Windows 8.1 eller Windows Server 2012 R2 - Start->Alla program -> Systemverktyg -> Windows PowerShell;
  • I Windows 10 eller Windows Server 2016 - Start->Alla program -> Windows PowerShell-katalog ( i grupp W) -> Windows PowerShell.

Exempel på att köra PowerShell i Windows Server 2016

Skärmdump av PowerShell i Windows Server 2016

Cmdlets i PowerShell

Cmdlet (cmdlet) - Det här Windows-teamet PowerShell, med vilken du kan interagera med operativsystemobjekt för att hantera dem. Dessa kommandon är en del av PowerShell-språket. Cmdlets är byggda enligt principen " Verb-substantiv", åtskilda av ett bindestreck (-); med andra ord, vi anger först vad vi ska göra, och med ett bindestreck anger vi vad vi ska göra. Till exempel, Get-Help cmdleten, där Get är ett verb som betyder " Skaffa sig", och Hjälp är ett substantiv" Hjälp"i sammanhanget PowerShell" Visa – Hjälp" PowerShell-cmdlets returnerar resultat som objekt, vilket är en av huvudskillnaderna från Windows Command Prompt, där kommandon endast returnerar text till skärmen.

Förutom cmdlets för att hämta data (Get) finns det även typer av cmdlets som:

  • Lägg till – lägga till data;
  • Klart – klart;
  • Aktivera – aktivera;
  • Inaktivera – stäng av;
  • Nytt – skapa;
  • Ta bort – ta bort;
  • Set – set;
  • Start - start;
  • Stopp stopp;
  • Export – export;
  • Importera – importera;
  • Och många fler.

En komplett lista över cmdlets i Windows PowerShell kan ses med den speciella Get-Command-cmdleten. Till exempel, kör den med -CommandType cmdlet-parametern, som ett resultat kommer en lista med cmdlets att visas på din skärm.

Get-Command -CommandType cmdlet

Som du redan förstått har cmdlets parametrar med vilka vi kan specificera cmdletens åtgärder. Parametrar kan vara obligatoriska eller valfria; till exempel har Get-Command-cmdleten inga obligatoriska parametrar.

Bilden nedan visar ett sätt att söka efter en cmdlet med verb ( Verb parameter). I det här fallet visade vi en lista med cmdlets som kan starta om något.

Team

Get-Command -Verb Starta om

För att söka efter en cmdlet med substantiv måste du använda parametern Substantiv. Nedan har vi till exempel en lista över cmdlets som fungerar med tjänster.

Team

Get-Command -Substantivtjänst

Om du inte hittar den cmdlet du behöver fullständiga namn Du kan använda en mask i *Text*-format.

Pipeline i PowerShell

En av de huvudsakliga Windows-funktioner PowerShell kan använda en pipeline när du kör kommandon.

Transportband– detta är överföringen av resultatet av en cmdlet genom en vertikal stapel (|) till en annan cmdlet. Samtidigt, som du kommer ihåg, arbetar cmdlets i PowerShell med objekt och returnerar objekt, och därför överförs även objekt längs pipelinen.

Med hjälp av en pipeline kan du utföra komplexa uppgifter på ett enkelt och bekvämt sätt utan att behöva skriva komplexa algoritmer och skript.

Låt oss till exempel ta reda på namnet på den största filen i katalogen "C:\Windows\System32" ( enkelt exempel på en pipeline).

Team

Get-ChildItem -Sökväg "C:\Windows\System32" -Fil | Sortera-Objektets längd -Fallande | Välj-objekt -Först 1

  • Get-ChildItem – cmdlet för att hämta objekt i den angivna katalogen;
  • Sort-Object är en cmdlet för att sortera objekt, i vårt fall sorterar vi efter filstorlek ( längd -Fallande);
  • Select-Object är en cmdlet för att välja önskade egenskaper för ett objekt, i vårt fall visar vi standardfält och endast det allra första objektet, dvs. stor fil (parameter -Första 1).

Alla cmdlets är separerade från varandra med en vertikal stapel. Resultatet av varje cmdlet skickas som indata till en annan cmdlet, dvs. först får vi alla objekt i den angivna katalogen, sedan sorterar vi resultatet och väljer slutligen det allra första objektet.

Bakgrundsutförande av uppgifter

Windows PowerShell har förmågan att köra jobb i bakgrunden, vilket är en mekanism genom vilken du kan köra ett kommando ( till exempel, vilket tar lång tid att slutföra) i bakgrunden, dvs. efter start återgår du till den aktuella sessionen och kan fortsätta arbeta utan att vänta på att kommandot ska avslutas. Den här möjligheten Du kommer att behöva det när du behöver köra ett kommando som tar ganska lång tid att slutföra, och som du vet, under denna tid är PowerShell-sessionen blockerad tills kommandot slutförs, och du måste fortsätta arbeta.

Du kan hantera alla uppgifter som körs i bakgrunden, till exempel visa listan med uppgifter, stoppa uppgiften, ta bort uppgiften och, naturligtvis, se resultatet av uppgiften.

Windows PowerShell har följande cmdlets för att arbeta med bakgrundsjobb:

  • Start-Job – starta en bakgrundsuppgift;
  • Stop-Job – stoppa en bakgrundsuppgift
  • Get-Job – se listan över bakgrundsuppgifter;
  • Receive-Job – se resultatet av en bakgrundsuppgift;
  • Remove-Job – ta bort en bakgrundsuppgift;
  • Vänta-jobb – flytta en bakgrundsuppgift till förgrunden för att vänta på att den ska avslutas.

För att köra i bakgrunden måste du skriva Start-Job-kommandot och med klammerparenteser () ett kommando eller en uppsättning kommandon som du vill köra i bakgrunden.

Låt oss till exempel köra någon uppgift ( visa lista över tjänster) i bakgrunden, titta sedan på listan bakgrundsjobb och visa resultatet av vår uppgift på skärmen ( de där. lista över tjänster).

Kör en uppgift i bakgrunden

Start-Job (Get-Service)

Vi tittar på listan över uppgifter som körs i bakgrunden

Visar resultatet av Job1

Ta emot-jobb jobb1

Som du kan se har vi nu en uppgift med statusen " Avslutad", dvs. det har redan slutförts ( Get-Service fungerar bara snabbt).

För att se resultatet av bakgrundsuppgiften, d.v.s. Get-Service cmdlet, vi körde kommandot Receive-Job och skickade det jobbnamnet ( identifieringsvärdet är också möjligt). Som ett resultat visade vi en lista över tjänster.

Fjärrkontroll med PowerShell

Windows PowerShell är utformad inte bara för lokal användning, utan också för fjärrkörning av kommandon. Denna funktion är nödvändig för att du ska kunna styra fjärrdatorer från din arbetsplats, d.v.s. kör PowerShell-kommandon.

Det finns flera sätt fjärrkontroll:

  • Använder parametern -Datornamn (många lag har det). Med andra ord skickar du namnet på den dator som du vill utföra kommandot på som en parameter. Metoden har nackdelen att den är begränsad till exekvering av ett kommando;
  • Använda sessioner. Cmdlet Enter-PSSession (interaktiv session). På så sätt ansluter du till en fjärrdator och alla kommandon som du skriver i PowerShell kommer att köras på fjärrdator precis som om du skulle skriva kommandon direkt på fjärrdatorn. Metoden har också nackdelen att sessionen är begränsad till en dator;
  • Använder en cmdlet Anropa-kommando. Genom att använda den här metoden Du kan köra kommandon eller skript på en dator eller på flera.

Till exempel för att ansluta till en fjärrdator ( i exemplet nedan Servernamn) i en interaktiv session, kör följande kommando:

Ange-PSSession ServerName

Skript, funktioner och moduler i Windows PowerShell

Om du har skrivit en algoritm kommer du troligen att vilja spara den för att kunna använda den i framtiden. Windows PowerShell har en skriptmekanism för detta ändamål.

Kärnan i denna mekanism är som följer: du skriver den uppsättning kommandon du behöver och sparar den som ett skript - det här är en enkel textfil med tillägget .PS1.

Sedan, för att köra det här skriptet, kör du det helt enkelt i PowerShell. I det här fallet måste du antingen ange den fullständiga sökvägen till skriptfilen, eller gå till katalogen med skriptet och kalla det vid namn.

Viktig!

Som standard är det förbjudet att köra skript på Windows! Kör cmdleten för att se skriptkörningspolicyn Get-ExecutionPolicy. Som ett resultat kommer den att returnera den nuvarande policyn, till exempel:

  • Begränsad – exekvering av alla skript är blockerad ( standardvärde);
  • AllSigned – exekvering av skript som har en digital signatur är tillåtet;
  • RemoteSigned – exekvering av lokala skript är tillåtet, alla nedladdade skript måste ha en digital signatur;
  • Obegränsad - exekvering av alla skript är tillåtet ( rekommenderas inte eftersom det är osäkert!).

För att skript ska kunna köras måste du använda cmdleten Set-ExecutionPolicy med någon av ovanstående parametrar.

Till exempel, för att tillåta lokala skript att köras, kör följande kommando och acceptera ändringarna genom att trycka på Y.

Set-ExecutionPolicy Remote Signed

Du kan skicka parametrar till ett skript, göra dem obligatoriska eller ställa in ett standardvärde.

Windows PowerShell tillhandahåller en mekanism för att skapa dina egna funktioner, som, liksom inbyggda cmdlets, kan användas i PowerShell-skalet.

För att göra detta måste du specificera nyckelord Funktion och sedan i klammerparenteser () skriv algoritmen för denna funktion, d.v.s. kommandouppsättning ( till exempel, någon vanligt använd procedur: skapa en användare med vissa rättigheter, rensa ut vissa kataloger och så vidare). Då behöver du spara allt detta i ett skript, men bara med tillägget .psm1, eftersom den här filen redan kommer att vara en modul.

Det är inte allt, den här filen måste placeras i katalogen där PowerShell letar efter moduler. Det finns flera sådana kataloger ( specialkatalog i användarprofilen, katalogen där PowerShell är installerat), kan de ses i PowerShell-miljövariabler. För att göra detta, kör följande kommando

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

När du har placerat modulen du skrev i en speciell katalog kan du komma åt dina funktioner som vanliga PowerShell-kommandon.

Windows PowerShell Integrated Scripting Environment (ISE)

För att göra det bekvämt att skriva skript, funktioner och följaktligen moduler har Microsoft utvecklat en speciell grafikprogram Integrerad skriptmiljö(ISE) - Integrerad skriptmiljö. Det är väldigt bekvämt att arbeta i det här programmet, och det har också kraftfull funktionalitet ( skapande av flera flikar med skript, utdataområde, inbyggd debugger och mer).

Du kan köra det så här:

  • I Windows 7 - Start -> Alla program -> Tillbehör -> Windows PowerShell -> Windows PowerShell ISE;
  • I Windows 10 eller Windows Server 2016 - Start->Alla program -> Windows PowerShell-katalog ( i grupp W) -> Windows PowerShell ISE.

Notera! ISE kommer inte att fungera på Windows-system Server installerad i Server Core-versionen.

Skärmdump av PowerShell Integrated Scripting Environment (ISE) i Windows Server 2016

Det var allt för mig, jag hoppas att materialet var användbart för dig! Lycka till!

Köra ett program från PowerShell

Uppgiften att köra valfri körbar fil (program eller kommandoradsverktyg) från PowerShell sker ganska ofta. PowerShell erbjuder flera alternativ för detta. på olika sätt, som vi kommer att överväga senare i den här artikeln. Låt oss börja med det enklaste...

Direkt lansering

Det enklaste sättet att köra en körbar fil i PowerShell är att navigera till katalogen med filen och köra den direkt. Låt oss till exempel ta ett enkelt program som visar en hälsning och köra den med kommandot:

Ställ in plats ″C:\Program Files″
.\Hello.exe

Observera att även om du befinner dig i önskad katalog måste du ange den relativa sökvägen till den körbara filen. Undantaget är filer från katalogerna listade i miljöfaktor(väg). Till exempel kan olika inbyggda program och verktyg (notepad, calc, ping, etc.) som finns i Windows\System32-katalogen startas utan att ange sökvägen.

Operatör &

Om du behöver ange den fullständiga sökvägen till den körbara filen kan du använda operatorn & (samtal operatör). Det låter dig köra en textsträng som anges i citattecken som ett enda lag. Till exempel:

& ′C:\Program Files\Hello.exe′

Eftersom &-operatorn inte analyserar kommandot som skickas, kan den inte tolka dess parametrar. Därför skickas även ytterligare parametrar\argument som text, inom citattecken. Som ett exempel, låt oss ta det föregående programmet och modifiera det något så att det accepterar den önskade texten som ett argument:

& ′C:\Program Files\Hello.exe′ ′Hej världen′

Om så önskas kan du ange flera argument separerade med kommatecken:

& "C:\Program Files\Hello.exe" "Hej", "världen"

För enkelhetens skull kan kommandot och argumenten placeras i variabler:

$exe = ′C:\Program Files\Hello.exe′
$arg1 = "Hej"
$arg2 = "världen"
& $exe $arg1 $arg2

Tja, om det finns många argument, kan de kombineras med följande konstruktion:

$exe = ′C:\Program Files\Hello.exe′
$allargs = @('Hej,','världen')
& $exe $allargs

Invoke-Expression

Cmdleten Invoke-Expression fungerar ungefär på samma sätt som operatorn & – den tar en textsträng och kör den som ett kommando. Till exempel:

Invoke-Expression -Kommando ′C:\Windows\Hello.exe′

Det har dock en stor nackdel, nämligen oförmågan att arbeta med utrymmen. Till exempel kommer följande kommando att orsaka ett fel:

Invoke-Expression -Kommando ′C:\Program Files\Hello.exe′

Denna funktion gör det extremt obekvämt att använda cmdlet. Även om sådana fel vid behov kan undvikas med hjälp av ytterligare citat, till exempel så här:

Invoke-Expression -Kommando ″C:\′Program Files′\Hello.exe″

Start-process

Start-Process-cmdleten startar specificerad fil som en process som använder metoden Start.NET-klass Bearbeta. Till exempel:

Start-Process -FilePath ′C:\Program Files\Hello.exe′

Som standard körs processen in separat fönster, som stänger i slutet av processen. Du kan ändra detta beteende med hjälp av parametrar, så följande kommando körs i det aktuella fönstret:

Start-Process -FilePath ′C:\Program Files\Hello.exe′ -NoNewWindow -Wait

Start-Process låter dig också skicka ytterligare argument till processen:

Start-Process -FilePath ′C:\Program Files\Hello.exe′ -ArgumentList ′Hello, world' -NoNewWindow -Wait

Som standard returnerar inte cmdleten något, men du kan använda parametern -PassThru för att tvinga den att returnera ett processobjekt. Det är mycket bekvämt att placera detta objekt i en variabel:

$process = Start-Process -FilePath ′C:\Program Files\Hello.exe′ -Wait -PassThru

från vilken du sedan kan lära dig många användbara saker, såsom status:

$process.HasExited

$process.ExitTime

eller exekveringskod:

$process.ExitCode

.NETTO

I princip kan .NET Process-klassen användas direkt, utan Start-Process cmdleten. Du kan till exempel starta processen med kommandot:

::Start(′C:\Program Files\Hello.exe′)

Denna metod är ganska obekväm och krånglig (enligt mig), men lite mer flexibel i användning. Låt oss till exempel köra vårt program i det aktuella fönstret, skicka argument till det och ta exekveringsresultatet:

$process = New-Object -TypeName System.Diagnostics.Process
$process.StartInfo.FileName = ″C:\Program Files\Hello.exe″
$process.StartInfo.Arguments = ″Hej världen″
$process.StartInfo.RedirectStandardOutput = $true
$process.StartInfo.UseShellExecute = $false
$process.Start()
$process.WaitForExit()

$process.StandatdOutput.ReadToEnd()

WMI

Du kan göra nästan vad som helst med WMI, inklusive att köra ett program. Metoden är ganska lämplig för detta Skapa WMI-klass Win32_Process. Denna metod startar en process på en lokal eller fjärrdator via RPC. Till exempel att köra ett program på lokal dator du kan använda detta kommando:

()″Win32_Process″).Create(′C:\Program Files\Hello.exe′)

Och för att köra på en fjärrdator kommer kommandot att se ut så här:

()″\\fjärrdator\root\cimv2:Win32_Process″).Create(′C:\Program Files\Hello.exe′)

Alternativt kan du använda Invoke-WmiMethod cmdleten:

Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList ″C:\Program Files\Hello.exe″

Eller med Invoke-CimMethod cmdleten:

Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @(CommandLine=″C:\Program Files\Hello.exe″)

WMI kör processen i ett separat fönster och returnerar ett objekt som innehåller process-ID (ProcessID) och resultatet av exekveringen (ReturnValue). ReturnValue kan ha följande värden:

0 — Framgångsrik avslutning
2 -Tillträde beviljas ej
3 — Otillräckligt privilegium
8 – Okänt misslyckande
9 — Sökväg hittades inte
21 - Ogiltig parameter

Anropa-kommando

Invoke-Command-cmdleten kan köra kommandon på en lokal eller fjärrdator med WinRM. Till exempel, för att köra vårt program på den lokala datorn använder vi kommandot:

Invoke-Command -ScriptBlock (″C:\′Program Files′\Hello.exe″)

Om det behövs kan du skicka argument till programmet:

Invoke-Command -ScriptBlock (C:\′Program Files′\Hello.exe ″Hello,world″)

Observera att Invoke-Command inte är särskilt vänlig med mellanslag, så för att undvika fel måste du vara kreativ med citat. Sådana problem kan dock undvikas, till exempel genom att kombinera användningen av cmdlet med operatorn &:

Invoke-Command -ScriptBlock (& ​​′C:\Program Files\Hello.exe′)

Invoke-Command används huvudsakligen för fjärrkontroll, dess främsta fördel är möjligheten att köra samtidigt på flera datorer. Till exempel:

Invoke-Command -ScriptBlock (″C:\′Program Files′\Hello.exe″) -Datornamn SRV1,SRV2,SRV3

$scriptblock = (″C:\′Program Files′\Hello.exe″)
$Datorer = @(′SRV1′,′SRV2′,′SRV3′)
Invoke-Command -ScriptBlock $scriptblock -Datornamn $Datorer

Som standard returnerar cmdleten resultatet av programkörning, och om du kör den i bakgrunden (parametern -AsJob), returnerar den ett jobbobjekt:

Invoke-Command -ScriptBlock (C:\′Program Files′\Hello.exe) -ComputerName localhost -AsJob -JobName Hej

Invoke-Item

Invoke-Item-cmdleten är utformad för att tillämpa en standardåtgärd på en fil. Så du kan köra den körbara filen med kommandot:

Invoke-Item -Path ″C:\Program Files\Hello.exe″

Det är dock mest bekvämt att använda Invoke-Item för att öppna en specifik typ av fil. Så här öppnar vi till exempel en textfil:

Invoke-Item -Path ″C:\Files\test.txt″

Och det är allt textfiler i mappen:

Invoke-Item -Path ″C:\Files\*.txt″

CMD

Tja, sammanfattningsvis, ett annat sätt att starta ett program från PowerShell är att använda cmd-skalet. Metoden är ganska "indirekt", men fungerar ändå. Följande kommando startar en ny instans av cmd, körs i den det angivna programmet, avslutar cmd och returnerar resultatet:

cmd /c ″C:\Program Files\Hello.exe″

PoSh tillhandahåller ett sådant överflöd av sätt att lansera ett program. Och var och en av dem är bra för vissa situationer.

Artikeln skrevs förresten utifrån PowerShell: Deep Dive and Best Practice. Jag rekommenderar att läsa den, det finns fortfarande mycket intressant där.

Det finns flera olika sätt att köra skriptet, de viktigaste är nedan:

  1. Starta PowerShell och kör skriptet i det (ange sökvägen till filen och filnamnet, till exempel så här: C:\Scripts\test.ps1, eller gå till skriptmappen med kommandot cd C:\Scripts och kör det med kommandot.\test.ps1) Skalet kan hittas och lanseras på många sätt. Ett sätt är genom Start-menyn. För Windows 7 - måste du gå till "Alla program" - "Tillbehör" - "Windows PowerShell" och starta "Windows PowerShell"-skalet. För Windows 10 - du måste hitta gruppen med bokstaven "W" och i den hittar du "Windows PowerShell".
  2. Starta "Windows PowerShell ISE"är ett program - en utvecklingsmiljö som låter dig redigera och felsöka PowerShell-skript, som också är tillgängligt som standard tillsammans med själva PowerShell. Efter att ha startat den behöver du bara klicka på knappen "Öppna" eller gå till Arkiv-menyn - Öppna och välj nödvändigt skript, tryck sedan på F5 eller knappen "Kör skript" Du kan hitta Windows PowerShell ISE på samma plats som PowerShell - i Start-menyn.
  3. Starta standardkommandoraden och skriv i den:
    powershell -fil<имя_скрипта> (exempel: powershell -file myscript.ps1)

Om du inte har kört PowerShell-skript tidigare kommer du sannolikt att få följande meddelande: Kan inte ladda ner filen<имя_скрипта>, eftersom skriptkörning är förbjuden för detta system. Skriv "get-help about_signing" för mer information. Detta beror på det faktum att av säkerhetsskäl och för att förhindra oavsiktlig exekvering av skadlig kod måste alla skript vara digitalt signerade.

Hur tillåter man körning av ett osignerat PowerShell-skript?

1. I PowerShell, innan du kör skriptet, kör kommandot för att tillåta exekvering av osignerade skript för den aktuella skalsessionen:

Set-ExecutionPolicy RemoteSigned -Scope Process

2. Vid uppstart från den vanliga kommandoraden använd parametern -executionpolicy, dvs. kör skriptet så här:

<имя_скрипта>

Båda metoderna anger policyn endast för den aktuella sessionen, medan säkerhetspolicyn för exekvering av PowerShell-skript skrivna i registret inte kommer att ändras och förblir densamma. Om du vill ändra säkerhetspolicyn för körning av skript till "permanent", använd den här metoden:

3. Tillåt uppstart för alltid: Starta PowerShell som administratör och kör sedan kommandot:

Set-ExecutionPolicy Remote Signed

Notera: Om skriptet laddades ner från Internet, måste du använda Bypass istället för RemoteSigned för att undvika en begäran om att bekräfta lanseringen - helt inaktivera alla förfrågningar och varningar.

Hur kör man ett PowerShell-skript i bakgrunden?

För att göra detta, använd bara startparametern -WindowStyle, som kan ha följande värden: Normal, Minimerad, Maximized och Hidden. För att köra ett osignerat skript i bakgrunden måste du alltså köra kommandot:

powershell -exekveringspolicy RemoteSigned -WindowStyle Hidden -fil<имя_скрипта>

Du kan också lägga till -NonInteractive om du vill, så att skriptet inte ställer några frågor. Således kommer skriptet att köras obemärkt av användaren. Var försiktig när du använder denna metod.

Köra ett PowerShell-skript med parametrar

Själva lanseringen ska göras som om du skulle starta ordinarie program eller bat-fil med parametrar. Till exempel, för att köra ett skript med parametrar från kommandoraden, kan du skriva följande kommando:

powershell -exekveringspolicy RemoteSigned -fil<имя_скрипта>param1 param2 "en annan textparameter"

I själva skriptet kan du få dessa parametrar så här:

Param ($var1, $var2, $var3) echo $var1, $var2, $var3

I PowerShell ISE kan du köra ett skript med parametrar på samma sätt med hjälp av kommandofönstret.

Hur kör man ett PowerShell-skript med en genväg?

Denna uppgift kan utföras på två sätt:

  1. Skapa en bat/cmd-fil där du kan skriva ett kommando för att köra skriptet (du har läst parametrarna ovan)
  2. Skapa en genväg till PowerShell, som finns i mappen c:\Windows\System32\WindowsPowerShell\v<версия>\ och i genvägsegenskaperna i fältet "Objekt", lägg till de nödvändiga parametrarna.

Så till exempel att springa powershell-skript När användaren loggar in kan du helt enkelt skapa en genväg som beskrivs i punkt 2 och placera den i startup. Genom att skapa en genväg med någon av metoderna ovan kan du enkelt köra skriptet som administratör eller som vilken annan användare som helst som ett vanligt program.

PowerShell-skriptspråket är ett ganska kraftfullt verktyg för att lösa olika problem, men det kan användas inte bara för bra saker, utan också för dåliga saker, så använd det klokt ;)