Používání powershell jako správce systému. Úvod do Power Shell. Rutiny v PowerShellu

PowerShell je objektově orientovaný softwarový engine a skriptovací jazyk s rozhraním příkazový řádek, poskytující IT profesionálům větší možnosti konfigurace operačních systémů rodiny MS Windows. Jednoduše řečeno, jde o jakýsi univerzální nástroj pro správu. Tento článek bude diskutovat základní techniky psaní skriptů v PowerShellu, což vám umožní snadno automatizovat správu vašeho prostředí Windows.

PowerShell nabízí jak čisté konzolové rozhraní, tak plné vývojové prostředí PowerShell ISE(Integrované skriptovací prostředí, vestavěné skriptovací prostředí) pro skripty. Chcete-li spustit rozhraní příkazového řádku, zadejte powershell v nabídce Spustit (WinKey + R). PowerShell ISE se spouští pomocí příkazu "PowerShell ISE" ve stejné nabídce.

ISE je výhodnější, protože poskytuje větší flexibilitu vývojářům díky zvýrazňování syntaxe, automatickému dokončování kódu a dalším funkcím, které se nacházejí v mnoha „velkých“ IDE.

Psaní a spouštění skriptů

Skripty se ukládají jako soubory s příponou .ps1. Přestože je PowerShell již dlouho nativní součástí operačního systému Windows, jeho skripty nespustíte pouhým poklepáním. Chcete-li to provést, klikněte pravým tlačítkem myši na skript a vyberte „Spustit v PowerShell“.

Existují také systémové zásady, omezující provádění skriptů. Můžete zkontrolovat aktuální parametry zásadu zadáním příkazu Get-ExecutionPolicy. Výsledkem bude jedna z následujících hodnot:

  • Omezený- provádění skriptů je zakázáno. Standardní konfigurace;
  • Vše podepsáno- můžete spouštět skripty podepsané důvěryhodným vývojářem; Před spuštěním skriptu vás PowerShell požádá o potvrzení;
  • RemoteSigned- můžete spouštět své vlastní skripty nebo skripty podepsané důvěryhodným vývojářem;
  • Neomezený- můžete spouštět libovolné skripty.

Chcete-li začít, musíte změnit nastavení zásad spouštění na RemoteSigned pomocí příkazu Set-ExecutionPolicy:

Cmdlets

Rutiny jsou příkazy s předdefinovanou funkcí, např podmíněné příkazy v programovacích jazycích. Mají několik klíčových vlastností:

  • Existují systémové, uživatelské a volitelné rutiny;
  • výsledkem spuštění rutiny bude objekt nebo pole objektů;
  • rutiny mohou zpracovávat data a předávat je jiným rutinám pomocí kanálů;
  • rutiny nerozlišují velká a malá písmena, takže mezi Get-ADUser , get-aduser a gEt-AdUsEr není žádný rozdíl;
  • jako oddělovač se používá symbol; .

Každá rutina obsahuje sloveso a podstatné jméno oddělené pomlčkou. Například:

  • Get-Process- zobrazit aktuální procesy běžící na počítači;
  • Get-Service- zobrazit seznam služeb a jejich stav;
  • Získejte obsah- zobrazí obsah zadaného souboru, například Get-Content C:\Windows\System32\drivers\etc\hosts .

V případě potřeby můžete vypsat všechny dostupné rutiny pomocí Get-Help-Category:

Můžete si také vytvořit své vlastní cmdlety.

Možnosti

Každá rutina má několik parametrů, které určují její fungování. PowerShell ISE automaticky navrhne všechny dostupné parametry a zobrazí jejich typ. Například Get-Service-NameW* vrátí seznam služeb, jejichž název začíná W . Pokud zapomenete, jaké parametry má zadaná rutina, použijte Get-Member . Například Get-Process | Získat člena:

Pokud nenajdete, co potřebujete, nebo si nejste jisti, jak správně nastavit parametry, můžete si dokonce vyžádat příklady pomocí parametru -Examples:

Některé cmdlety lze volat i pomocí aliasů, například místo Get-Help můžete jednoduše napsat Help .

Při psaní velkých skriptů nebo týmovém vývoji můžete využít komentáře. Každý komentář začíná znakem # a blok komentáře je omezen na kombinace znaků<# и #>na začátku respektive na konci.

Dopravník

PowerShell Umožňuje výměnu dat mezi rutinami pomocí kanálu. Například:

  • GetService | SortObject -property Status - řazení běžící služby podle stavu;
  • "Ahoj světe!" | Out-File C:\ps\test.txt - zápis textu do souboru.

Lze použít více dopravníků. Například následující skript uvádí názvy všech služeb kromě zastavených:

Získejte servis | WHERE ($_.status -eq “Běží”) | VYBERTE zobrazované jméno

Závěr

Takže díky tomuto tutoriálu mají nováčci představu o tom, o čem PowerShell je. Podívali jsme se také na možnosti změny zásad provádění skriptů, co je to rutina, jak si vyměňují data pomocí kanálu a jak získat vlastnosti požadovaného objektu. Pamatujte, že pokud máte nějaké problémy, můžete použít rutinu Get-Help.

Zkušení uživatelé operačního systému Windows 10 možná slyšeli o nástroji příkazového řádku PowerShell. Ti, kteří mají zkušenosti s prací s Windows 7 a 8.1, jej mohou také znát. Po letech používání aplikace příkazového řádku Windows a souborů .bat je čas seznámit se s výkonnějším nástrojem.

PowerShell je cenným doplňkem seznamu Nástroje Windows a jeho rozsah může některé uživatele odradit. Co to je - skriptovací jazyk nebo příkazový shell? Nebojte se: navzdory rozsáhlým možnostem zvládne PowerShell každý.

Krok 1: Instalace

Pro začátek potřebujeme sami sebe Nástroj PowerShell. Pokud používáte Windows 10, máte již nainstalovanou verzi 5 PowerShellu Aktualizace Windows 10 Anniversary Update používá verzi 5.1, ale rozdíl není patrný. Windows 8 a 8.1 využívají PowerShell 4, který je také zcela dostačující. Instalace PowerShellu na Windows 7 nezpůsobí problémy, ale i tak budete muset udělat pár kroků navíc. Zejména je potřeba dodatečně nainstalovat .Net Framework. Můžete nainstalovat rozhraní Windows Management Framework, které zahrnuje PowerShell.

PowerShell má dvě rozhraní. Pokročilí uživatelé se mohou rozhodnout pro úplné GUI rozhraní známé jako Integrated Scripting Environment (ISE). Pro začátečníky je nejlepší použít konzolu PowerShell, jednoduché textové rozhraní ve stylu příkazového řádku Windows nebo dokonce DOS 3.2.

Chcete-li spustit PowerShell jako správce ve Windows 10, klikněte na tlačítko Start a přejděte dolů na Aplikace. Windows PowerShell. Ve Windows 8.1 vyhledejte Windows PowerShell v Systémová složka na Windows. V systému Windows 7 je prostředí umístěno ve složce Příslušenství. Jak běžný uživatel PowerShell lze spustit úplně stejným způsobem pomocí levé tlačítko myš místo té pravé.

Vyhledávání můžete použít v jakékoli verzi systému Windows. Pro usnadnění budoucího použití můžete PowerShell připnout na hlavní panel.

Krok 2: Staré příkazy systému Windows

Syntaxe příkazů Windows v PowerShellu funguje jako obvykle. Například, CD mění složky, dir zobrazí seznam všech souborů a složek v aktuální složce.

V závislosti na způsobu spuštění konzole PowerShell můžete začít v c:\Windows\system32 nebo v c :\Uživatelé\ . Příklad na snímku obrazovky používá příkaz CD..(s mezerou) pro posun o úroveň výš a poté spusťte příkaz dir pro zobrazení seznamu souborů a složek v adresáři C:\.

Krok 3: Nainstalujte soubory nápovědy

Týmy jako CD A dir nejsou aktivní příkazy PowerShellu. Jedná se o takzvané aliasy – náhrady skutečných příkazů PowerShellu. Aliasy jsou užitečné pro ty, kteří mají bohaté zkušenosti s příkazovým řádkem. Nedotýkají se však hlubin PowerShellu.

Chcete-li začít s PowerShell, zadejte pomoc a příkaz, který potřebujete. Snímek obrazovky ukazuje příkaz .

Tým pomocříká to dir je alias pro příkaz PowerShell Get-ChildItem. Pokud napíšete get-childitem PROTI PS C:\>, uvidíte to samé jako při použití příkazu dir.

Jak je uvedeno v dolní části snímku obrazovky, soubory nápovědy pro PowerShell se nenainstalují automaticky. Chcete-li je získat, spusťte PowerShell jako správce a zadejte update-help. Instalace souborů nápovědy zabere několik minut, některé moduly mohou chybět - například v v tomto případě Nápověda pro NetWNV a SecureBoot nebyla nainstalována. Když je vše připraveno, kompletní systém pomoc vždy poskytne potřebné tipy.

Nyní zadejte příkaz získat pomoc a jakýkoli příkaz, který vás zajímá („cmdlet“ v PowerShellu, rutiny v ruštině), zobrazí se jeho popis. Například, get-help get-childitem zobrazí seznam možností get-childitem. Můžete také zobrazit různé možné možnosti. Například

get-help get-childitem -příklady

dává sedm podrobné příklady použití get-childitem. Tým

get-help get-childitem -detailed

obsahuje těchto sedm příkladů a podrobná vysvětlení každého parametru v rutině get-childitem.

Krok 4: Získejte pomoc s nastavením

Na snímku obrazovky možná jste si všimli dvou seznamů pod SYNTAX Pro get-childitem. Dvě různé syntaxe znamená, že rutinu lze spustit dvěma způsoby. Jak zachovat syntaxi oddělenou od sebe a co znamenají parametry? Odpověď je jednoduchá, pokud znáte trik.

Podrobnosti o parametrech cmdletu get-childitem nebo jakýkoli jiný parametr použití -plný:

get-help get-childitem -full

Získáte tak seznam toho, co můžete s rutinou dělat a co se stane. Podívejte se na snímek obrazovky.

Při prohlížení popisů parametrů si toho všimnete get-childitem umožňuje získat předmět dítě(jako je název podsložky nebo název souboru) v zadané místo, s nebo bez odpovídajících určitých znaků. Například:

get-childItem “*.txt” -recurse

vrátí seznam souborů "*.txt". aktuální složka a všechny podsložky (kvůli parametru - rekurze). Zatímco

get-childitem „HKLM:\Software“

vrátí seznam všech klíčů registru nejvyšší úroveň PROTI HKEY_LOCAL_MACHINE\Software.

Pokud jste se někdy pokoušeli dostat do registru pomocí příkazového řádku Windows nebo souborů .bat, oceníte funkčnost této možnosti přístupu.

Krok 5: Učení se jmen

Existuje důvod, proč dosud zobrazené rutiny vypadají podobně: get-childitem, update-help, get-help použijte vzor jediné sloveso-podstatné jméno. Všechny rutiny prostředí PowerShell používají tuto konvenci, používají sloveso před jediným podstatným jménem. To osloví ty, kteří kdysi trpěli nekonzistentními názvy příkazů v jazycích VB a VBA.

Podívejte se na nejběžnější cmdlety:

set-location: nastaví aktuální pracovní místo na konkrétní místo

získat-obsah: Získá obsah souboru

získat-položku: Načte soubory a složky

kopie-položka: zkopíruje objekt z jednoho místa na druhé

odstranit-položku: Smaže soubory a složky

: Získá procesy spuštěné na místním nebo vzdáleném počítači

get-service: Spustí služby na místním nebo vzdáleném počítači

invoke-webrequest: Načte obsah z webové stránky na internetu

Chcete-li zobrazit, jak konkrétní rutina funguje, použijte získat pomoc jako v případě

get-help copy-item -full

Na základě popisu v nápovědě můžete pochopit, co rutina potřebuje. Například pokud chcete zkopírovat všechny soubory a složky Dokumenty PROTI c:\temp, použití

copy-item c:\users\ \documents\* c:\temp

Zadáním tohoto příkazu uvidíte některé zajímavé funkce prostředí PowerShell. Pokud například zadáte kopie-i a stiskněte tlačítko Tab, PowerShell se vyplní Kopírovat položku. Pokud zadáte rutinu nesprávně a PowerShell ji nedokáže rozpoznat, zobrazí se úplný popis toho, co bylo uděláno špatně.

Zkuste tento cmdlet:

invoke-webrequest askwoody.com

Získáte krátký seznam názvů webových stránek, obrázků, odkazů a dalšího obsahu. Všimněte si prosím v získat pomoc do seznamu invoke-webrequest, který „vrací kolekci formulářů, odkazů, obrázků a dalších důležitých prvků HTML“ – přesně to, co by se mělo zobrazovat na obrazovce.

Některé rutiny vám pomohou spravovat samotný PowerShell:

get-příkaz: seznam všech dostupných rutin

dostat-sloveso: seznam všech dostupných sloves

clear-host: Vymaže obrazovku hostitelského programu

Různé parametry umožňují omezit příkazy a zúžit kruh užitečné možnosti. Chcete-li například zobrazit seznam všech rutin, které fungují se službami Windows, zadejte

get-command *-service

Zobrazí se všechna dostupná slovesa s podstatným jménem servis. Zde je jejich seznam:

Get-Service

Nová služba

Restart-Service

Resume-Service

Set-Service

Start-Service

Stop-Service

Suspend-Service

Tyto rutiny můžete kombinovat s ostatními.

Krok 6: Použití potrubí

Pokud jste obeznámeni s příkazovým řádkem Windows popř dávkové soubory, pak víte o přesměrování a potrubí. Přesměrování (symbol >) a roury (symbol |) převezmou výsledek akce a připojí je na jiné místo. Můžete například přesměrovat výsledek příkazu dir do textového souboru nebo předat výsledek příkazu ping do týmu nalézt pro filtrování zajímavé výsledky, jako

dir > temp.txt

ping askwoody.com | vyhledejte „pakety“ > temp2.txt

Tady ve druhém týmu nalézt hledá řetězec pakety, převzato z adresy askwoody.com týmem ping a zřetězí všechny odpovídající řádky do souboru s názvem temp2.txt.

První z těchto příkazů funguje v PowerShellu dobře. Ke spuštění druhého příkazu byste potřebovali něco podobného

ping askwoody.com | pakety select-string | out-file temp2.txt

Použití přesměrování a kanálů výrazně zlepšuje možnosti příkazového řádku Windows: místo nekonečného posouvání dolů po obrazovce při vyhledávání textový řetězec Můžete filtrovat příkazy Windows, které potřebujete.

Powershell má podporu trubka a není omezen na text. PowerShell umožňuje předat celý objekt z jedné rutiny do druhé, kde objekt je kombinací dat (nazývaných vlastnosti) a akcí (metod), které mohou tato data používat.

Záludná část nastává při seřazování předmětů. Objekty dodané jednou rutinou musí odpovídat typu objektů přijatých přijímající rutinou. Text je velmi jednoduchý typ objektu, takže pokud pracujete s textem, zarovnání objektů je jednoduchý úkol. Zbývající objekty nejsou tak základní.

Jak tomu rozumět? Použijte cmdlet získat-člen. Pokud chcete vědět, jaký typ objektu rutina zpracovává, spusťte ji získat-člen. Pokud se například snažíte porozumět procesům běžícím na počítači a zúžili jste své možnosti na rutiny , výsledek rutin zjistíte takto:

get-process | získat-člen

Spuštění této rutiny vytvoří dlouhý seznam vlastností a metod pro , ale hned na začátku seznamu můžete vidět typ objektu, který vytváří :

TypeName: System.Diagnostics.Process

Níže uvedený snímek obrazovky také ukazuje vlastnosti volal get-process Handles, Name, NPM, PM, SI, VM A W.S..

Pokud chcete s výsledkem manipulovat pracovat s touto rutinou (místo zobrazení dlouhého seznamu aktivní procesy na monitoru), musíte najít jiný příkaz, který se použije jako vstup Systém.Diagnostika.Proces. Chcete-li najít rutinu, kterou potřebujete, použijte znovu PowerShell:

get-command -Parametertype System.Diagnostics.Process

Tato rutina poskytuje seznam rutin, které lze zpracovat Systém.Diagnostika.Proces.

Některé rutiny jsou známé tím, že přijímají téměř jakýkoli druh dat. Hlavní mezi nimi je . Tato rutina prochází každý objekt odeslaný kanálem, jeden po druhém, a aplikuje na něj zadaná kritéria výběru. Existuje speciální značka tzv $_ , který umožňuje používat každou položku v potrubí, jednu po druhé.

Řekněme, že chcete získat seznam všech procesů běžících na počítači s názvem „svchost“, to znamená, že chcete vlastnost porovnat Jméno proces svchost. Použijte příkaz:

get-process | where-object ($_.Name -eq „svchost“)

Rutina dívá se na každý předmět Systém.Diagnostika.Proces, srovnává .Jméno tento objekt s "svchost"; pokud existují shody, zobrazí se na monitoru. Podívejte se na snímek obrazovky.

Krok 7: Analyzujte užitečné příkazy PowerShellu

Nyní již víte dost na to, abyste mohli počítač poškodit, takže buďte opatrní. Podívejme se například na často požadované příkazy PowerShellu.

Tyto příkazy fungují pouze ve Windows 10 a pouze tehdy, když PowerShell spouštíte jako správce. Jsou určeny k opětovné instalaci předinstalovaných aplikací Windows 10 a mohou být užitečné pro ty, kteří tyto programy nejprve odinstalovali a poté se rozhodli je vrátit. Příkazy vypadají takto:

Get-AppXPackage | Foreach (Add-AppxPackage -DisableDevelopmentMode -Register “$($_.InstallLocation)\AppXManifest.xml”)

Pokud spustíte tento příkaz, ignorujte červená varování a po dokončení příkazu restartujte počítač; všechny předinstalované programy ve Windows 10 se objeví na svých místech.

Zde je návod, jak tento příkaz funguje. Get-AppXPackage zkontroluje všechny balíčky aplikací v uživatelském profilu. I když aplikaci odstraníte, zůstane v seznamu uživatelských profilů.

Rutina Get-AppXPackage vrátí objekt TypeName Microsoft.Windows.Appx.PackageManager.Commands.AppxPackage, který zahrnuje plně kvalifikovaný název balíčku aplikace a umístění odpovídajícího souboru manifestu XML. Pokud spustíte rutinu get-appxpackage, uvidíte dlouhý seznam balíčků aplikací. Snímek obrazovky zobrazuje popis aplikace Xbox.

Rutina Foreach prochází každý objekt dovnitř AppXPackage jejich odesláním do rutiny Add-AppxPackage. Podle získat pomoc Pro Add-AppxPackage, existují dva klíčové přepínače:

  • Přepínač -Rejstřík slouží k registraci stávajících instalací aplikačních balíčků, můžete nastavit parametry ZakázatDevelopmentMode A Rejstřík
  • Přepínač -ZakázatDevelopmentModeříká systému Windows, aby znovu zaregistroval existující balíček aplikace, který byl deaktivován, odregistrován nebo poškozen.

řádek" $($_.InstallLocation)\AppXManifest.x ml" popisuje, kde se soubor nachází manifest.xml. Pokud se podíváte na soubory AppXManifest.xml, uvidíte komplexní seznam ID aplikací, spustitelných souborů a velký počet vizuální prvky spojené s aplikací.

Po restartu se všechny přidané balíčky aplikací stáhnou a nainstalují Windows Store Obchod.

Naučte se PowerShell – knihy a zdroje

Tento článek otevírá sérii příspěvků věnovaných PowerShell. Ano, je čas na příkazový řádek!

Stručně - co je PowerShell?

  • PowerShell - shell příkazového řádku
  • Příkazy PowerShellu se spouštějí v kanálu
  • Prostředí PowerShell lze rozšířit tak, aby vyhovovalo různým technologiím
  • a co je nejdůležitější, zvládnutí PowerShellu z vás udělá lepšího správce.

Proč PowerShell?

Za zmínku stojí dva body. Za prvé, PowerShell obsahuje skriptovací jazyk; Jedná se o velmi kompaktní jazyk, který obsahuje jen asi dvě desítky klíčových slov. Ale ve skutečnosti je PowerShell, jak je uvedeno výše, shell příkazového řádku, podobně jako cmd.exe nebo UNIX Bash shell.

Druhý bod: Microsoft nepodporuje používání GUI konzol na serverech. Faktem je, že servery mohou zajistit efektivní fungování grafických rozhraní pouze na úkor snížení výkonu serveru. Ale používat GUI na klientech, i když jsou tito klienti připojeni k serveru, je dnes stále docela přijatelné. Ano v nových verzích Windows Server všechny funkce jsou dostupné nejprve s pomocí PowerShellu a teprve potom (a některé nejsou dostupné vůbec) pomocí grafického rozhraní serveru.

PowerShell si můžete stáhnout z webu TechNet – ale v moderních operačních systémech MS Winodws je k dispozici ihned po vybalení.

Pro více snadný start Při výuce prostředí Windows PowerShell vám představím výběr různých materiálů. Začněme seznam videokurzem z roku 2009:

  • Píšeme první skript a seznamujeme se s Windows PowerShell

Internetové zdroje:

  • Mastering PowerShell - powershell.com

programy:

  • Prohlížeč skriptů pro Windows PowerShell ISE. Tento doplněk usnadňuje nalezení potřebné skripty v TechNet Script Center podle zadaných kritérií a parametrů. Navíc obsahuje speciální modul Script Analyzer, který po analýze navrhuje vylepšení/změny zvyšující efektivitu psaného skriptu. Tento modul je k dispozici jako součást prostředí Windows PowerShell ISE, které je součástí operačního systému Windows. Háček je v tom, že Windows Server a PowerShell ISE vyžadují aktivaci. Samotná licence je placená, ale nezoufejte. Budete mít asi 180 dní na to, abyste to zažili tento produkt.
  • Dell PowerGUI - Umožňuje vám zjednodušit vytváření vlastních skriptů PowerShellu jednoduchá volba potřebné rutiny, které jsou vhodné pro váš úkol, a jejich přetažením správná místa. Ideální pro ty, kteří jsou v PowerShellu noví, ale mají základní znalosti o konceptech. PowerGUI je snadno použitelný editor, který pravděpodobně zlepší vaše porozumění sestavování složitějších a pokročilejších skriptů, zvláště pokud se informace naučíte nejlépe vizuálně.

Jedním z nejzákladnějších zdrojů znalostí je vynikající nápověda programu:

Doufám, že vám tento seznam zdrojů pomůže ve vašem studiu. PowerShell. Jaké knihy a nápady jste použili? Zanechte svou odpověď v komentářích a hodně štěstí při osvojování nových znalostí! 😉

V tomto článku se podíváme na takovou technologii od společnosti Microsoft jako Windows PowerShell, povíme si, co je PowerShell, co jsou to rutiny a pipeline, jak psát skripty a moduly a dotkneme se také dalších neméně důležitých a užitečných funkcí Windows PowerShellu.

Co přispělo ke vzniku prostředí Windows PowerShell?

Před PowerShellem existovaly ( a tam jsou) následující nástroje pro automatizaci a správu služeb: příkazový řádek Windows a Windows Script Host. Ale tyto technologie mají nevýhody.

Příkazový řádek Windows má také schopnost provádět některé administrativní úkoly a možnost zaznamenat algoritmus akcí, uložit jej jako skript (bat soubor), přičemž můžete použít určité programovací prvky, například používat proměnné, podmíněné konstrukce, a dokonce i něco jako cykly.

Většina softwarových produktů má konzolové rozhraní, tzn. můžeme program ovládat pomocí příkazové řádky a zároveň šetřit zdroje kvůli nedostatku nákladů na provoz grafického rozhraní. Microsoft dokonce vydává edice bez grafického rozhraní pro serverový operační systém Windows Server ( Jádro serveru Windows Server 2016 má dokonce Nano Server), ale to vše nestačí, protože možnosti příkazového řádku jsou omezené, tzn. Nebudeme schopni napsat nějakou složitou logiku, abychom něco zautomatizovali, a i kdyby to šlo, bude to vyžadovat čas a znalosti.

Nevýhodou příkazové řádky je také to, že k plné správě serveru využíváme různé konzolové utility softwarových produktů, a proto je použití příkazové řádky pro administraci skutečně obtížné, a to z toho pohledu, že všechny tyto utility mají různé syntaxe, parametry, způsoby použití a za účelem provádění typických úkolů, tzn. každý den si toto vše musíte uchovávat v paměti a pro provádění atypických úkolů si musíte nejprve přečíst nápovědu nebo dokumentaci.

Technologie Windows Script Host umožňuje provádět veškeré administrativní úkony jako příkazový řádek, včetně jejich automatizace psaním WSH skriptů, zde však již můžeme využívat plnohodnotné programovací jazyky ​​( VBScript a JScript), tzn. lze implementovat komplexní logiku a algoritmy. Kromě toho s pomocí WSH spravujeme softwarové produkty prostřednictvím objektového rozhraní, jinými slovy, Windows Script Host je mnohem více „ chladič» než příkazový řádek. Ale tuto technologii se také nestal ideálním nástrojem pro správu a automatizaci této správy pro systémové administrátory, protože Windows Script Host vyžadoval znalost výše uvedených programovacích jazyků, což je pro systémové administrátory vlastně nadbytečné. Administrátoři potřebují pouze jednoduchý nástroj pro správu s možností naprogramovat některé akce a jít hlouběji objektové modely Nechtějí softwarové produkty v programovacích jazycích VBScript a JScript.

V důsledku toho Microsoft potřeboval vyvinout administrační nástroj pro systémové administrátory, který by stoprocentně uspokojil všechny potřeby systémových administrátorů, a to jak z hlediska možností správy a automatizace, tak z hlediska pohodlí a snadného použití, a tak se objevil Windows PowerShell.

Co je Windows PowerShell?

Windows PowerShell je skriptovací jazyk a příkazový shell Windows určený pro správu a konfiguraci operačních systémů Windows. PowerShell je postaven na CRL frameworku a .NET Frameworku a na rozdíl od příkazového řádku, který přijímá a vrací text, Windows PowerShell pracuje s objekty. Každý objekt v PowerShellu má vlastnosti a metody, které můžete použít k manipulaci s těmito objekty.

V prostředí Windows PowerShell vyvinul Microsoft koncept rutin ( rutiny), což je systém pojmenování příkazů " Sloveso-podstatné jméno" Tento systém umožňuje správcům systému rychle zvládnout a zjednodušit práci s PowerShell.

S pomocí Windows PowerShell umí:

  • Přístup k systému souborů;
  • Správa registru;
  • Správa služeb;
  • Řídit procesy;
  • Nakonfigurujte operační systém;
  • Instalace softwaru;
  • Instalace serverových rolí a komponent;
  • Správa a konfigurace rolí a komponent serveru;
  • Psát a používat skripty k automatizaci správy a správy;
  • Proveďte další úkoly správce systému.

Windows PowerShell obsahuje mnoho běžně používaných nástrojů a příkazů, které můžete spustit z příkazového řádku, jako je ipconfig, ping a další. To bylo provedeno za účelem usnadnění přechodu správců systému z příkazového řádku na PowerShell.

Pro usnadnění má také mnoho často používaných příkazů a nástrojů v PowerShellu synonyma ( Přezdívka), například cls je synonymem pro rutinu Clear-Host, dir je synonymem pro Get-ChildItem ( úplný seznam synonym lze zobrazit spuštěním rutiny Get-Alias ​​​​).

Pro zjednodušení hledání požadovaného příkazu má PowerShell speciální rutinu Get-Command, pomocí které můžete vyhledávat podle slovesa i podstatného jména. Všechny příkazy v prostředí Windows PowerShell jsou seskupeny do modulů ( např. Hyper-V, NetTCPIP), což také usnadňuje nalezení správného příkazu.

Po nalezení požadovaného příkazu se můžete podívat na návod pro práci s tímto příkazem, tzn. help, pro tyto účely existuje speciální rutina Get-Help, například následující příkaz zobrazí nápovědu pro rutinu Get-Command:

Get-Help Get-Command

Nápověda v prostředí Windows PowerShell může být krátká, podrobná ( parametr -Podrobné), plný ( parametr -Plná), a můžete také zobrazit pouze příklady ( parametr - Příklady). Následující příkaz zobrazí pouze příklady použití rutiny Get-Command:

Get-Help Get-Command -Příklady

Nápověda PowerShellu je aktualizovatelná, tzn. lze jej aktualizovat pomocí příkazu Update-Help.

Verze Windows PowerShell

První verze PowerShell 1.0 se objevila 14. listopadu 2006 a byla vydána jako samostatná distribuce, kterou lze nainstalovat na následující verze operačních systémů Windows: Windows XP Service Pack 2, Windows Server 2003 Service Pack 1 a Windows Vista.

V systému Windows Server 2008 se PowerShell 1.0 objevil jako součást, která se také musela nainstalovat.

Počínaje Windows 7 a Windows Server 2008 R2 přichází PowerShell jako nedílná součást systému ( těch. předinstalovaný, není třeba jej instalovat). Níže je uvedena tabulka shody mezi verzí PowerShellu a verzí operačního systému Windows ( těch. jaká verze PowerShellu je ve výchozím nastavení nainstalována na kterou verzi Windows):

Verze PowerShellu Verze Windows
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

S každou novou verzí se PowerShell stává pro srovnání stále mocnějším nástrojem pro správu, první PowerShell měl asi 130 cmdletů a v PowerShellu 5.0 jich je již více než 600!

Vědět aktuální verze V PowerShellu můžete použít vlastnost PSVersion vestavěné proměnné $PSVersionTable, například spusťte následující příkaz:

$PSVersionTable.PSVersion

Nebo spusťte rutinu

Get-Variable -Name PSVersionTable –ValueOnly

kde hodnota PSVersion bude verze PowerShellu.

jazyk PowerShell

PowerShell je objektově orientovaný skriptovací programovací jazyk. Používá se k psaní příkazů pro ovládání všech součástí operačního systému Windows Shell Windows PowerShell a také pro psaní skriptů pro automatizaci úloh správy v integrovaném prostředí Skripty Windows PowerShell (ISE). Přestože byl jazyk PowerShell vytvořen pro úkoly správy, jedná se o plnohodnotný skriptovací programovací jazyk, protože má programové konstrukce, které jsou přítomny v každém programovacím jazyce, jako jsou: podmínky, smyčky, zpracování chyb, práce s proměnnými, objekty a pole.

Jazyk PowerShell má jednotnou syntaxi pro psaní příkazů a strukturu pojmenování těchto příkazů založenou na principu „ Sloveso-podstatné jméno"Co dělá daný jazyk intuitivní pro programátory i správce systému.

Windows PowerShell

Windows PowerShell je prostředí pro spouštění příkazů a skriptů v PowerShellu. Tento shell má stejné možnosti jako příkazový řádek, například: ukládání historie provádění příkazů, přizpůsobení vzhledu prostředí, dokončení provádění příkazů pomocí kombinace klávesy Ctrl+C, stejně jako mnoho dalších funkcí, které nejsou dostupné v prostředí příkazového řádku, například taková úžasná funkce jako „ zvýraznění syntaxe» ( představeno v PowerShellu 5.0).

PowerShell lze spustit několika způsoby, například:

  • Z příkazového řádku zadáním PowerShell;
  • Prostřednictvím dialogového okna " Vykonat» ( klávesová zkratka Win+R), také zadáním PowerShell;
  • Ve Windows 7 - Start->Všechny programy ->Příslušenství ->Windows PowerShell -> Windows PowerShell;
  • V systému Windows 8.1 nebo Windows Server 2012 R2 - Start->Všechny programy -> Systémové nástroje -> Windows PowerShell;
  • Ve Windows 10 nebo Windows Server 2016 - Start->Všechny programy -> Windows PowerShell Directory ( ve skupině W) -> Windows PowerShell.

Příklad spuštění PowerShellu v systému Windows Server 2016

Snímek obrazovky PowerShell v systému Windows Server 2016

Rutiny v PowerShellu

Rutina (cmdlet) je příkaz prostředí Windows PowerShell, který umožňuje interakci s objekty operačního systému a jejich správu. Tyto příkazy jsou součástí jazyk PowerShell. Cmdlety jsou sestaveny podle principu „ Sloveso-podstatné jméno", oddělené pomlčkou (-); jinými slovy, nejprve naznačíme, co máme dělat, a pomlčkou označujeme, co máme dělat. Například cmdlet Get-Help, kde Get je sloveso s významem " Získat"a Nápověda je podstatné jméno" Pomoc"v kontextu PowerShellu" Zobrazit – Nápověda" Rutiny PowerShellu vracejí výsledky jako objekty, což je jeden z hlavních rozdílů od příkazového řádku systému Windows, ve kterém příkazy vracejí na obrazovku pouze text.

Kromě rutin pro získávání dat (Get) existují také typy rutin, jako jsou:

  • Přidat – přidání dat;
  • Clear – clear;
  • Povolit – povolit;
  • Zakázat – vypnout;
  • Nový – vytvořit;
  • Odebrat – odstranit;
  • Set – set;
  • Start - start;
  • Stop – stop;
  • Export – export;
  • Import – import;
  • A mnoho dalších.

Úplný seznam Rutiny v prostředí Windows PowerShell lze zobrazit pomocí speciální rutiny Get-Command. Spusťte ji například s parametrem -CommandType cmdlet, v důsledku toho se na obrazovce zobrazí seznam rutin.

Get-Command -CommandType cmdlet

Jak jste již pochopili, rutiny mají parametry, pomocí kterých můžeme určit akce rutiny. Parametry mohou být povinné nebo volitelné, například rutina Get-Command nemá žádné požadované parametry.

Obrázek níže ukazuje způsob, jak vyhledat rutinu podle slovesa ( Parametr slovesa). V tomto případě jsme zobrazili seznam rutin, které mohou něco restartovat.

Tým

Get-Command -Restart slovesa

Chcete-li hledat rutinu podle podstatného jména, musíte použít parametr Noun. Níže máme například seznam rutin, které pracují se službami.

Tým

Get-Command -Noun Service

Pokud požadovanou rutinu nenajdete pod jejím celým názvem, můžete použít masku ve formátu *Text*.

Pipeline v PowerShellu

Jeden z hlavních Funkce Windows PowerShell je schopen používat kanál při provádění příkazů.

Dopravník– jedná se o přenos výsledku rutiny přes svislou čáru (|) do jiné rutiny. Zároveň, jak si pamatujete, v rutinách PowerShell pracují s objekty a vracejí objekty podle toho, objekty jsou také přenášeny podél potrubí.

Pomocí dopravníku můžete provádět složité úkoly v jednoduchém a pohodlným způsobem bez nutnosti psát složité algoritmy a skripty.

Například zjistíme název největšího souboru v adresáři "C:\Windows\System32" ( jednoduchý příklad potrubí).

Tým

Get-ChildItem -Cesta "C:\Windows\System32" -Soubor | Seřadit-Délka objektu -Sestupně | Select-Object - First 1

  • Get-ChildItem – cmdlet pro získání objektů v určeném adresáři;
  • Sort-Object je cmdlet pro řazení objektů, v našem případě třídíme podle velikosti souboru ( délka -Sestupně);
  • Select-Object je cmdlet pro výběr požadovaných vlastností objektu v našem případě zobrazujeme standardní pole a pouze úplně první objekt, tzn. velký soubor ( parametr -První 1).

Všechny rutiny jsou od sebe odděleny svislou lištou. Výsledek každé rutiny je předán jako vstup do jiné rutiny, tj. nejprve získáme všechny objekty v zadaném adresáři, poté seřadíme výsledek a nakonec vybereme úplně první objekt.

Provádění úloh na pozadí

Windows PowerShell má schopnost spouštět úlohy na pozadí, což je mechanismus, pomocí kterého můžete spustit příkaz ( například, jehož dokončení trvá dlouho) V pozadí, tj. po spuštění se vrátíte do aktuální relace a můžete pokračovat v práci bez čekání na dokončení příkazu. Tuto funkci budete potřebovat, když potřebujete spustit příkaz, jehož práce zabere poměrně hodně času. dlouho a jak víte, během této doby je relace PowerShellu zablokována, dokud se příkaz nedokončí, a vy musíte pokračovat v práci.

Můžete spravovat všechny úkoly, které běží na pozadí, například zobrazit seznam úkolů, zastavit úkol, odstranit úkol a samozřejmě zobrazit výsledek úkolu.

Windows PowerShell obsahuje následující rutiny pro práci s úlohami na pozadí:

  • Start-Job – spuštění úlohy na pozadí;
  • Stop-Job – zastavení úlohy na pozadí
  • Get-Job – zobrazení seznamu úloh na pozadí;
  • Receive-Job – zobrazení výsledku úlohy na pozadí;
  • Remove-Job – odstranění úlohy na pozadí;
  • Wait-Job – přesune úlohu na pozadí do popředí, aby počkala na její dokončení.

Chcete-li spouštět na pozadí, musíte napsat příkaz Start-Job a ve složených závorkách () příkaz nebo sadu příkazů, které chcete spouštět na pozadí.

Spusťte například nějakou úlohu ( zobrazit seznam služeb) na pozadí a poté se podívejte na seznam práce na pozadí a zobrazit výsledek našeho úkolu na obrazovce ( těch. seznam služeb).

Spusťte úlohu na pozadí

Start-Job (Get-Service)

Podíváme se na seznam úloh běžících na pozadí

Zobrazení výsledku úlohy 1

Receive-Job Job1

Jak vidíte, máme úkol se stavem „ Dokončeno“, tzn. už je to hotové ( Get-Service funguje rychle).

Abyste viděli výsledek úlohy na pozadí, tzn. Get-Service cmdlet, provedli jsme příkaz Receive-Job a předali jsme mu název úlohy ( možná je i hodnota identifikátoru). V důsledku toho jsme zobrazili seznam služeb.

Dálkové ovládání pomocí PowerShellu

Windows PowerShell je určen nejen pro místní použití, ale také pro vzdálené provádění příkazů. Tato funkce je nezbytná k tomu, abyste mohli ovládat vzdálené počítače ze svého pracoviště, tzn. spusťte příkazy PowerShellu.

Existuje několik způsobů dálkového ovládání:

  • Pomocí parametru –Název počítače (mnoho týmů to má). Jinými slovy, předáte jako parametr název počítače, na kterém chcete příkaz provést. Tato metoda má nevýhodu v tom, že je omezena na provedení jednoho příkazu;
  • Pomocí relací. Rutina Enter-PSSession (interaktivní sezení). Tímto způsobem se připojíte k vzdálený počítač a všechny příkazy, které zadáte PowerShell, bude proveden na vzdáleném počítači stejným způsobem, jako kdybyste zadávali příkazy přímo na vzdáleném počítači. Metoda má také nevýhodu, že relace je omezena na jeden počítač;
  • Pomocí rutiny Invoke-Command. Použitím tato metoda Příkazy nebo skripty můžete spouštět na jednom počítači nebo na několika.

Chcete-li se například připojit ke vzdálenému počítači ( v příkladu níže ServerName) v interaktivní relaci spusťte následující příkaz:

Enter-PSSession ServerName

Skripty, funkce a moduly v prostředí Windows PowerShell

Pokud jste napsali algoritmus, pravděpodobně jej budete chtít uložit, abyste jej mohli v budoucnu použít. Windows PowerShell má pro tento účel skriptovací mechanismus.

Podstata tento mechanismus Dále napíšete sadu příkazů, které potřebujete, a uložíte ji jako skript – jedná se o jednoduchý textový soubor s příponou .PS1.

Poté, chcete-li tento skript spustit, jednoduše jej spustíte v prostředí PowerShell. V tomto případě musíte buď zadat úplnou cestu k souboru skriptu, nebo přejít do adresáře se skriptem a nazvat jej jménem.

Důležité!

Ve výchozím nastavení je spouštění skriptů ve Windows zakázáno! Chcete-li zobrazit zásady provádění skriptů, spusťte rutinu Get-ExecutionPolicy. V důsledku toho vrátí aktuální zásady, například:

  • Omezeno – provádění jakýchkoli skriptů je blokováno ( výchozí hodnota);
  • AllSigned – je povoleno provádění skriptů, které mají digitální podpis;
  • RemoteSigned – spouštění lokálních skriptů je povoleno, všechny stažené skripty musí mít digitální podpis;
  • Neomezeno - je povoleno provádění jakýchkoli skriptů ( nedoporučuje se, protože to není bezpečné!).

Chcete-li povolit spouštění skriptů, musíte použít rutinu Set-ExecutionPolicy s jedním z výše uvedených parametrů.

Chcete-li například povolit spouštění lokálních skriptů, spusťte následující příkaz a potvrďte změny stisknutím klávesy Y.

Set-ExecutionPolicy RemoteSigned

Parametry můžete předat skriptu, nastavit je jako povinné nebo nastavit výchozí hodnotu.

Windows PowerShell poskytuje mechanismus pro vytváření vlastních funkcí, které lze stejně jako vestavěné rutiny použít v prostředí PowerShell.

Chcete-li to provést, musíte zadat klíčové slovo Funkce a poté ve složených závorkách () napište algoritmus pro tuto funkci, tzn. sada příkazů ( například nějaký často používaný postup: vytvořit uživatele s určitými právy, vyčistit určité adresáře a tak dále). Pak je potřeba to vše uložit do skriptu, ale pouze s příponou .psm1, protože tento soubor již bude modul.

To není vše, tento soubor je nutné umístit do adresáře, kde PowerShell hledá moduly. Existuje několik takových adresářů ( speciální adresář v uživatelském profilu, adresář, kde je nainstalován PowerShell), lze je zobrazit v proměnných prostředí PowerShell. Chcete-li to provést, spusťte následující příkaz

Get-ChildItem Env:\PSModulePath | Formát-tabulka -Automatická velikost

Jakmile umístíte modul, který jste napsali, do speciálního adresáře, můžete přistupovat ke svým funkcím jako normální příkazy PowerShellu.

Integrované skriptovací prostředí Windows PowerShell (ISE)

Aby bylo snadné psát skripty, funkce a podle toho moduly, společnost Microsoft vyvinul speciální grafický program Integrované skriptovací prostředí(ISE) - Integrované skriptovací prostředí. V tomto programu je velmi pohodlné pracovat a má také výkonné funkce ( vytváření více záložek se skripty, výstupní oblastí, vestavěným debuggerem a dalšími).

Můžete to spustit takto:

  • Ve Windows 7 - Start->Všechny programy ->Příslušenství ->Windows PowerShell -> Windows PowerShell ISE;
  • Ve Windows 10 nebo Windows Server 2016 - Start->Všechny programy -> Windows PowerShell Directory ( ve skupině W) -> Windows PowerShell ISE.

Poznámka! ISE nebude fungovat systém Windows Server nainstalovaný ve verzi Server Core.

Snímek obrazovky integrovaného skriptovacího prostředí PowerShell (ISE) v systému Windows Server 2016

To je pro mě vše, doufám, že vám byl materiál užitečný! Hodně štěstí!

PowerShell 5.0 je dodáván s Windows 10, ale pro předchozí OS nová verze byla vydána jako součást Windows Management Framework 5.0 teprve koncem února a na druhý pokus. Dnes budu mluvit o některých nových funkcích, ale začnu tím, proč byste mohli potřebovat PowerShell.

Proč potřebujete PowerShell

Nemá smysl učit se PowerShell jen tak, a to platí pro jakýkoli jazyk – skriptovací, softwarový a dokonce i lidský. Jako mnozí řešení společnosti Microsoft PowerShell je vytvořen s ohledem na podnikání, aby automatizoval úlohy správy počítačů a serverů v organizacích.

Skriptovací jazyk je založen na výkonné softwarové platformě .NET, takže možnosti PowerShellu sahají daleko za hranice administrace.

Jednou jsem potřeboval odstranit jeden sloupec ze sady Excel knihy 2013. Ruční Byl jsem znechucen a googlování nedalo hotové řešení. Založil jsem téma na fóru (ano, taky se občas ptám na OSZone :). Hodil se mi jakýkoli jazyk, ale řešením se nečekaně ukázal být PowerShell. Jak se ukázalo, Excel můžete načíst jako objekt COM a dále s ním manipulovat.

Následně jsem nejednou použil modifikaci toho skriptu k automatické aktualizaci desítek excelových sešitů, které stahovaly data z jiných souborů. To mi ušetřilo spoustu času a úsilí.

Myslím, že myšlenka je jasná a nyní můžeme přejít k novým funkcím PowerShellu 5.0.

8 užitečných funkcí

Zvýraznění syntaxe

V nová konzole mnohem jednodušší navigace!

Červená barva a číslování řádků jsou ale z jiné opery.

Prohledávejte historii dvěma směry

Klávesové zkratky: Ctrl + R a Ctrl + S
Rutiny: Get-PSReadlineKeyHandler A Set-PSReadlineKeyHandler

Stejně jako CMD má PowerShell historii relace s navigací pomocí šipek, a Získejte historii zobrazí protokol podobný F7. Úplný seznam klávesových zkratek souvisejících s protokolem lze zobrazit následovně:

Get-PSReadlineKeyHandler | ? ($_.function -jako "*hist*")

Ve výsledcích jsou dvě nové funkce vyhledávání historie, které jsou zobrazeny na obrázku níže. Funguje to velmi jednoduše.


Na rozdíl od Get-History, která obsahuje historii aktuální relace, je tato historie udržována globálně a je uložena při zavření okna.

Díky za tip Antonu Drovosekovovi a Konstantinu Sidyakinovi z naše skupina VK.

Vytváření spojení, symbolických a pevných odkazů

Rutiny: Nová položka, Odebrat položku, Get-ChildItem

Na svém blogu mám spoustu příběhů, takže jsem nemohl ignorovat možnost vytvořit je v PowerShellu.

#Symbolický odkaz na soubor Nová-položka -Typ položky SymbolickýOdkaz -Cesta C:\test\Soubor MůjSym.Odkaz.txt -Cíl C:\test\1.txt #Symbolický odkaz na složku Nová položka -Typ položky SymbolickýOdkaz -Cesta C:\test \MySymLinkFolder -Cíl C:\Windows\ #Pevný odkaz na soubor Nová položka -Typ položky HardLink -Cesta C:\Test\MyHardLinkFile.txt -Cíl C:\test\1.txt #Připojení Nová-položka -Spojení typu položky -Cesta C: \Temp\MyJunctionDir -Cíl C:\Windows

Abychom byli spravedliví, syntaxe příkazu je mklink Je snazší si to zapamatovat, takže to může být rychlejší takto:

Iex "mklink /d C:\test\MySymLinkFolder C:\Windows"

Vytvoření dočasného souboru

Rutina: New-TemporaryFile

Ve skriptech často potřebujete vytvořit dočasný soubor, abyste tam vložili nějaké informace. K tomu je vytvořena nová rutina.

#Vytvořit dočasný soubor New-TemporaryFile #Vytvořit dočasný soubor a získat jeho úplnou cestu $tmpfile = (New-TemporaryFile).FullName $tmpfile

Zřídka provádím čistou instalaci hlavního systému, ale na virtuálních počítačích se to stává pravidelně. A OneGet je velmi vhodný pro rychlou automatickou instalaci klíčové sady programů.

Poznámka. Tento modul můžete používat bez instalace WMF 5.0. Předběžná verze modulu pro PS 4.0 a 3.0 je k dispozici samostatně – březen 2016 a novější verze vyhledejte v centru pro stahování PackageManagement PowerShell Modules Preview.

Instalace programů

Tento příklad nainstaluje čtyři programy a úplnou sadu nástrojů z úložiště Chocolatey. První tři příkazy se provedou jednou a změna zásad musí být potvrzena. Čtvrtý příkaz tiše nainstaluje uvedené programy a pátý jednoduše šetří čas.

#Povolit instalaci podepsaných balíčků z Internetu Set-ExecutionPolicy RemoteSigned #Instalovat poskytovatele Chocolatey Get-PackageProvider –Name Chocolatey -ForceBootstrap #Udělat Chocolatey jako důvěryhodné Set-PackageSource -Name Chocolatey -Trusted #Install programy, Install-Package, firefox NotepadP filezilla, sysinternals -Verbose -Force -ProviderName chocolatey #Přidat cestu ke spustitelným souborům (sysinternals) do PATH setx PATH "$env:path;C:\Chocolatey\bin" -m

Dodavatel stáhne balíček do C:\Chocolatey\lib, který je založen na skriptu chocolateyInstall.ps1. Stáhne instalační program programu z oficiálního webu do složky %temp%\Chocolatey a spustí jej v režimu tiché instalace. Nejjednodušší příklad– Poznámkový blok++.

Install-ChocolateyPackage "notepadplusplus" "exe" "/S" "https://notepad-plus-plus.org/repository/6.x/6.9/npp.6.9.Installer.exe"

Vyhledat programy

V repozitářích je mnoho programů, určitě tam jsou všechny ty nejoblíbenější.

Find-Package "*zip*","*commander*" -ProviderName Chocolatey

Odinstalování programů

S mazáním aplikací však není vše tak plynulé.

Uninstall-Package -name filezilla

V ideálním případě by odstranění balíčku mělo vést k tichému odstranění programu, ale implementace závisí na autorovi balíčku a možnostech instalačního programu. V praxi některé balíčky neobsahují odinstalační skripty, jiné přicházejí s berličkami v podobě skriptů AutoHotkey a další jednoduše spouštějí odinstalaci interaktivně a žádají vás o ruční dokončení procesu. Pokud je však instalační program MSI, odstranění funguje hladce.

Související odkazy na OneGet a tichou instalaci:

  • Podrobný průvodce instalací programů z PowerShellu (Dmitry Bulanov)
  • Typy instalačních programů a klíčů pro tichou instalaci (můj článek z roku 2005 je docela relevantní :)
  • Stránka pro automatickou instalaci systému Windows a fórum pro automatickou instalaci programu

Diskuse a anketa

Pro zkušené skriptátory a systémové administrátory jsou v PowerShellu 5.0 další zajímavé příležitosti(například třídy podobné objektově orientovaným programovacím jazykům). Úplný seznam najdete na této stránce TechNet (odkaz vede konkrétně na anglickou verzi, protože ta ruská zatím neobsahuje informace o 5.0).

Můžete označit fragmenty textu, které vás zajímají a které budou dostupné prostřednictvím unikátní odkaz v adresním řádku prohlížeče.

O autorovi

Zvýraznění syntaxe v PowerShell 5.0 je výchozí modul PSReadLine. V předchozí verze můžete jej dále nainstalovat a přidat do zatížení ve skriptu profilu (proměnná $profile) nebo jej v případě potřeby načíst sami

Import-modul psreadline

Můžete mi říci více o tiché instalaci ze skriptů? Není to tak dávno, co jsem začal používat chocolatey, moc se mi to líbí, hlavně aktualizovat všechny programy jedním příkazem. Dokud nepřijdu na tichou instalaci, vložil jsem vše dovnitř manuální režim, příkaz-potvrdit-instalovat.

6yHTapb

jediná věc, na kterou jsem zatím potřeboval PowerShell ve win 10, bylo obejít chybu rozbité tlačítko"vlastnosti" v nastavení VPN připojení. Set-VpnConnection -Name "Name" -SplitTunneling $true.
Mimochodem, Vadime. Jsou k tomu nějaké informace? Jde o to o tlačítku v Vlastnosti VPN připojení - síť - IP verze 4 - „vlastnosti“. Zde můžete obvykle zrušit zaškrtnutí políčka „použít bránu ve vzdálené síti“. Samotné tlačítko je aktivní, ale po stisknutí se nic neděje. Zde se PowerShell hodil.

Sergej Roshchin

Děkuji moc za Chocolatey
na Windows 7, jak tomu rozumím, to nefunguje?

Lecron

Hlasováním... využívám téměř všechny možnosti. Některé programy jsou v přenosné podobě. Část - instalovaná ručně z disku, pro ty, kteří se mohou sami aktualizovat nebo seriózní úpravy již byly dávno dokončeny. Některé z nich jsou napsané. Některé jsou nové. Některé z nich jsou již předinstalované v obrazu.
Klienti a úkoly se opět liší.

O PowerShellu... Myslím, že Microsoft minul značku s názvem. Na první pohled není jasné, co se stalo. Command shell/procesor nebo skriptovací programovací jazyk. Slovo Shell naznačuje to první, ale pak je nejvyšší čas, protože je to tak cool, udělat z něj výchozí nebo ho alespoň propagovat jako hlavní. Skutečné případy použití však směřují spíše k tomu druhému, náhradě za WSH.

  • Lecron: ale pak je nejvyšší čas, protože je to tak cool, udělat z něj výchozí nebo ho alespoň propagovat jako hlavní.

    Ve Win+X můžete CMD nahradit PS (vlastnosti hlavního panelu - navigace). A jako hlavní ho propagují už dlouho - na TechNetu o CMD už dlouho není nic nového, jen PS.

    Jistě, cílové publikum- IT specialisté, ale totéž lze říci o CMD a WSH. Ale nevidím žádnou újmu pro cílové publikum mého blogu. Využití pro PS nacházím doma i v práci a není to s administrativou.

    • Lecron

      Nemluvím o škodě. A o nedorozuměních a odpovídajících chybách.
      Co je to? Jak to vidí Microsoft? Příkazový procesor, který obvykle pracuje v interaktivní režimu, který také Možná

      Interaktivně pracovat v jedné syntaxi a sémantice a psát sekvence akcí v jiných je směšné. To je hlavní problém. Tak hluboko, že si toho ani nevšimneš, ačkoliv jsi to v článku nepřímo zmínil. Syntaxe mklink není jednodušší, ale známější. Od nové položky, s sjednocený syntaxe, umožňuje vytvářet velmi, velmi mnoho věcí. A nyní je jeho syntaxe ve skutečnosti jednodušší než znalost mnoha jednotlivých utilit, včetně jejich názvů.

      Slib byl dodržen – zde je modul pro správu správců balíčků, pokračujte.

      Nerozuměl. Co je to „modul správy manažerů“?

        • Lecron

          Zdá se mi, že tady se pes hrabal. U poskytovatelů. Když neexistuje jednotný přístup ke správě balíků. Ve skutečnosti musí uživatel vědět a vzít v úvahu, který poskytovatel je používán. A to nejen pro uživatele, ale i pro správce.

          Funkce je jako obvykle zaměřena na organizace a MSI a MSU jsou plně podporovány.

          Lecron

          Možná jsem nepochopil celou hloubku této funkce, proto tak stupidní tvrzení.
          Bude uživatel potřebovat další kroky, pokud vlastník úložiště/balíčku změní poskytovatele? Nebo změní jeho nastavení tvůrce balíčku? Nebo se o tohle všechno stará správce balíčků?

          Hm... tady je funkce - vezmi si to, zkus to, přijď na to - pomůže to vyřešit některé otázky. Existuje dodavatel, ten má balíčky v úložišti. Odebrali jste konkrétní balíček? Pak si ji nebudete moci stáhnout od tohoto poskytovatele. Balíček, který již byl stažen, však zůstává lokálně a lze jej dále spravovat.

          Lecron

          Mimochodem, je tu další otázka. Existuje příkaz Update-Package, nebo ještě lépe Update-AllPackage?

          Ahoj. Řekněte mi, je možné obnovit boot nebo bios a jak to udělat? Zavaděč Windows 7 Pro havaroval. Již jsem změnil nastavení při spouštění, ale systém Windows nechce spustit. Dříve byl ve službě prezentován Windows 8.1, nainstalovali Windows 7 Pro bez mého souhlasu. Pomozte vyřešit problém!

Alexey

Často jsem slyšela o čokoládě, a protože jsem si to připomněla, nakonec jsem se rozhodla ji vyzkoušet. výsledek nebyl nijak zvlášť působivý.

Masivně jsem nainstaloval sadu softwaru již nainstalovaného na PC. jen asi 70 % bylo nalezeno v úložišti.
keys -y -accept-license -f -x - Kouřil jsem manu jen pár minut, možná jsem něčemu nerozuměl.
výsledek:
software, o který jsem nežádal: autoIT, autohotkey. za co?
stáhli si starou verzi Acrobat Reader DC, cheat engine;
nelze stáhnout virtuální schránku virtuální schránky;
tichý režim nefungoval viber, wireshark, lehká slitina - musel jsem zaškrtnout políčka a stisknout dále;
Skype odstranil starý, ale nenainstaloval nový.
a některé zkratky nebyly vytvořeny, nyní si musíte zapamatovat, které.

Upozornění:
- Adobe Reader
- výhled na vítr
- firefox
-notepadplusplus
– týmový prohlížeč

Nechápu, jaké jsou zde chyby.

na čistý systém v každém případě si budete muset zbytek softwaru stáhnout ručně nebo nainstalovat již nepodporovaný z archivu.
navíc je to vzácné, ale na některých místech během instalace musíte vybrat určité konfigurace - složení balíčků atd. zde to lze implementovat pouze pomocí skriptů pro každý produkt, což doma neušetří mnoho času. protože všechny tyto možnosti se mohou měnit a mění se od verze k verzi, musíte skripty sledovat a přepisovat. nezní moc dobře.
pokud by mohl skenovat registr a přidat jej do databáze nebo do softwaru GUI k výběru, bylo by to jednodušší. V opačném případě musíte nejprve strávit čas sestavením seznamu pro instalaci - pro jistotu jsem zkontroloval každý produkt, abych uvedl správný název balíčku.

  • Sergeji

    PS C:\Users\Gerald> Find-Package "*paint.net*" -ProviderName Název čokolády Shrnutí verze zdroje ---- ------- ------ ------- paint .net 4.0.6 čokoládový Paint.NET je obrázek a software pro manipulaci s fotografiemi určený pro použití na počítačích, které...

    Zrovna dnes jsem poprvé narazil na zmínku o Chocolatey na Habrahabru a právě tam ve vašem newsletteru. Zdálo se, že to bylo ono! Myslel jsem, že za automatickou instalaci svobodného softwaru z ninite.com bude úžasná skriptovaná náhrada, ale bohužel. Relevance softwaru není podporována na paranoidní úrovni a problémy jsou ty, které popsali účastníci výše.

    Vitalij

    Myslím, že filozofie UNIXu je pro konzoli vhodnější:


    Napište programy, které spolupracují.
    Pište programy, které podporují textové proudy, protože se jedná o univerzální rozhraní.

    • Vitaly, obsahuje Windows konzolový nástroj pro ZIP? To se provádí za účelem zjednodušení skriptů PowerShellu, není třeba chodit do CMD, integrované nápovědy atd.

      • Lecron

        Proč se obtěžovat s cmd, když oba shelly a oba musí nezávisle spouštět spustitelné soubory a spravovat jejich vstup/výstup?
        Nebráním se zahrnutí takové funkce, zvláště pokud je to uděláno moudře, jako rozhraní pro zlib, a ne jen další nabobtnání kódové základny - jedna věc v průzkumníku, druhá v shellu, třetí strana v cmd .

        Vitalij

        Ne, není součástí dodávky.
        Ale na mém hostingu, když jsem poprvé zkusil použít zip, jsem obdržel něco jako „zip není nainstalován. Nainstalujte pomocí apt-get install zip."

        Přejít na cmd? Výše bylo řečeno, že PS by mělo spouštět binární soubory.

        Odkaz? V Linuxový tým man %util_name% nebo %util_name% -?, první dává podrobný manuál, druhý jako stručné informace podle parametrů. Zdá se, že to funguje všude.

        Výsledkem je, že interpret příkazů na Linuxu je jednoduchá a výkonná věc, existuje mnoho alternativ, protože v něm není nic složitého, pouze spouští programy, řídí výstupní proud a interpretuje nejjednodušší syntaxi.

        ostřejší

        Vadim Sterkin: Vitaly, obsahuje Windows konzolový nástroj pro ZIP?

        Stydím se zeptat: nebylo by jednodušší to přidat než přidat vestavěnou funkci?

  • Herz Mein

    > proč by měl shell pracovat s archivy pomocí vlastních prostředků?

    Pokud existuje taková možnost v třídách .Net, tak proč ji nevyužít? Je to jen jiný přístup než bash nebo cmd, což jsou interpreti příkazového řádku. CLI. A PowerShell je IMHO spíše debugger pro skripty.

    artem

    Lecron Co je to? Jak to vidí Microsoft? Příkazový procesor, který obvykle pracuje v interaktivní režimu, který také Možnáčíst příkazy ze souboru zvaného skript? Nebo jako skriptovací jazyk, který má vlastní REPL? Souhlasíte s tím, že je v tom velký rozdíl?

    Je jasné, že úkoly jsou různé. Ale nevidím mezi nimi žádný rozpor. Tito. Obě potřeby je docela možné pokrýt jedním nástrojem. O to se PowerShell snaží. Některé věci dopadnou dobře, některé ne tolik. Ale vize je jasná.

    artem

    Vadim Sterkin:
    A jako hlavní ho propagují už dlouho - na TechNetu už dlouho o CMD není nic nového, pouze PS.

    Bude to brzy, předpokládám. CMD (samotná skořápka) se nyní začala poměrně aktivně zdokonalovat. I když předtím se toho deset let vůbec nedotkli.

    artem

    Vitalij Napište programy, které dělají jednu věc a dělají ji dobře.

    Nevidím žádné rozpory. V PowerShellu dělá každá rutina jednu věc (až na velmi málo výjimek). Kdo říká, že Expand-Archive umí vypalovat DVD nebo vařit kafe - ať je první, kdo po mě hodí kamenem.

    Vitalij Napište programy, které spolupracují.

    Tady PowerShell dělá všechny shelly, které znám, protože... pracuje s objekty, nikoli s textem. Tito. „Spolupráce“ (předávání dat mezi rutinami) je mnohem efektivnější. Není třeba ztrácet čas rozebíráním textu a snahou vysvětlit dalšímu týmu, co přesně tento text je.

    Vitalij Pište programy, které podporují textové proudy, protože se jedná o univerzální rozhraní.

    Podporovány jsou také streamy. A pokud potřebujete jen přenést test, nejsou s tím žádné problémy.

    To znamená, že PowerShell plně dodržuje výše uvedenou filozofii.

    Vitalij Proč například vkládat „Vytváření spojení, symbolických a pevných odkazů“ do PS s vlastní syntaxí, pokud existuje mklink? Proč existuje „Vytváření a rozbalování archivů“, pokud existuje zip a jeho analogy?

    Ano, protože uvedené příkazy jsou „analogické k zipu“. Ve skutečnosti je odpověď na toto tvrzení velmi snadná. Jen si musíte uvědomit, že rutiny nejsou vestavěné funkce shellu, ale spíše externí příkazy. A vše do sebe okamžitě zapadne. Je normální, že máme příkazy k provedení některých akcí, že? To platí pro PowerShell i pro jakýkoli jiný shell.

    Ano, existuje malý počet rutin, které jsou dodávány s výchozím prostředím. Ale ideologicky se neliší od těch rutin, které se objevují samostatně při instalaci odpovídajících součástí Windows nebo jsou dokonce poskytovány vývojáři třetích stran.

    • Lecron

      artem: Je normální, že máme příkazy k provedení některých akcí, že? To platí pro PowerShell i pro jakýkoli jiný shell.

      Shell - tolik z tohoto slova... se začalo překrucovat pod vlivem čs.
      Celou dobu jsem věřil, že příkazy nezávisí na spouštěcím prostředí a příkazy zabudované do prostředí jsou potřeba pouze pro obsluhu schopností samotného prostředí, a ne objektů třetích stran. Opravdu se mýlil?
      Z tohoto pohledu se PS začíná podobat ACDSee a Nero.

      Vitalij

      Tady PowerShell dělá všechny shelly, které znám, protože... pracuje s objekty, nikoli s textem. Tito. „Spolupráce“ (předávání dat mezi rutinami) je mnohem efektivnější.

      Pochybuji, že všechny nástroje třetích stran podporují tyto stejné objekty. Ale text je podporován jakoukoli utilitou, která funguje na příkazovém řádku.

      Jen si musíte uvědomit, že rutiny nejsou vestavěné funkce shellu, ale spíše externí příkazy. A

      Proč tedy mají tyto rutiny svou vlastní syntaxi? No, nezdá se, že by to byly externí příkazy.

      • artem

        Vitalij: Pochybuji, že všechny nástroje třetích stran podporují tyto stejné objekty.

        Nástroje třetích stran - ne, samozřejmě. Rutiny třetích stran jsou ale snadné. Řekl bych, že asi osmdesát procent rutin třetích stran pracuje s objekty docela dobře.

        Pokud neexistuje rutina a musíte spustit utilitu (spustitelný soubor), musíte ji samozřejmě zadat jako vstup. Ale text lze snadno získat z objektu (rozbalením požadovaný majetek, Například). Chápu, že to zní srozumitelně, ale po získání kritického množství zkušeností se to ukáže jako zcela intuitivní.

        Vitalij: Proč tedy mají tyto rutiny svou vlastní syntaxi? No, nezdá se, že by to byly externí příkazy.

        S tímto nemohu jinak než souhlasit. "Nevypadá to" je to správné slovo :)

        Jak jsem řekl výše, na PowerShell je potřeba si trochu zvyknout. A teď řeknu něco ošklivého o našich evangelistech a MVP, ale zneužívání aliasů (dir místo Get-ChildItem, md místo New-Item -ItemType „Directory“, znak procenta místo Foreach-Object nebo otázka místo Where-Object a tak dále, a také vynechání názvů parametrů v případě, kdy default funguje) jen mate nepřipravené lidi. Kvůli tomu mi mimo jiné trvalo roky, než jsem si na PowerShell zvykl. Zdá se mi, že kdyby všechny ukázkové příkazy zveřejněné na blozích a fórech obsahovaly úplná syntaxe, pak by začátečníci pociťovali mnohem méně anální bolesti.

    Ve skutečnosti používám 2 možnosti: nasazení zálohy provedené ihned po nastavení systému nebo nastavení vlastní montáž Windows 7, kde uvádím všechna potřebná nastavení a programy.
    A s Win10 jsem ještě nezvládl správce balíčků, i když jeho přítomnost vyvolává velké nadšení.
    Používá se na hraní různí manažeři balíčky pro Windows, ale z toho či onoho důvodu byly všechny nepohodlné, pokud jde o „čas na zvládnutí“/„čas na ruční stažení“. Ukázalo se, že je jednodušší vytvořit si vlastní sestavu než vytvářet skripty.

    Jevgenij Kazancev

    Nádherný počin, viděl jsem, jak nainstalovat balíček potřebných programů jedním skriptem, použil jsem ninite, nijak zvlášť mě to nezaujalo, teď používám WPI stažené z torrentů, jejich výhoda je, že je toho mnohem více a reálných automatická instalace, mínus, že musíte věřit autorovi repacku.
    Jedna věc, kterou nechápu, je, jak zcela automaticky AKTUALIZOVAT nainstalované programy, což je klíčová základní funkce každého správce balíčků? Jak mohu zajistit, aby se stejný Poznámkový blok ++ automaticky zaregistroval jako výchozí aplikace, aniž bych přešel do strašně nepohodlného nastavení „nové, jsou moderní“? Jak funguje systém závislosti a existuje vůbec?

    Co když to navrhnete jako skript nebo funkci? Například takto (bez kontroly existence a bez převodu na úplné cesty, což je nutné):

    Param ( $create, $extract, $path, $zip) add-type -assembly system.io.compression.filesystem function create-zip ($path, $zip) ( ::createfromdirectory($path, $zip) ) funkce extrakt-zip ($zip, $cesta) ( ::extrahovattoadresar($zip, $cesta) ) if ($create) (vytvořit-zip $cesta $zip ) if ($extrakt) (extrahovat-zip $zip $cesta )

    Volejte podle toho:

    .\test -c -p "C:\Některá\Složka" -z "D:\Složka\out.zip" # Chcete-li vytvořit.\test -e -p "C:\Některá\Složka" -z "D: \Folder\out.zip" # Pro rozbalení

    • Co s tím má společného design? Používáte třídy .NET přímo ve vaší funkci. Rutina eliminuje potřebu přístupu ke třídám. V tom je rozdíl. Asi jako mezi programátorem a IT specialistou.

      artem

      Trolejbus vyrobený z bochníku chleba.jpg

      Pokud tomu dobře rozumím, nikdo se nehádá s tím, že funkce mohou dělat vůbec něco :) Výhoda samozřejmě je, že nyní speciálně pro tuto akci samostatná funkce není třeba psát. To znamená, že za prvé bude pro lidi snazší jej používat (zejména pokud nevědí, jak psát funkce nebo si nemohou dovolit je pokaždé importovat), a za druhé dojde k větší standardizaci. To je nepochybné požehnání. Souhlasíte, je hloupé, když pět skriptů vyžaduje pět různých autorů k rozbalení archivů a každý z nich řeší tento problém trochu jinak. (Například jednou byla oblíbená možnost prostřednictvím nezdokumentovaného objektu COM Průzkumníka Windows).

    lesha

    Pracuji na Windows a Mac, a když si nastavím server, tak na Linuxu. OS X jsem párkrát kompletně přeinstaloval, ale vše je jednoduché - vybral jsem datum v TimeMachine 10-15 minut a systém je připraven.
    Na Windows je většina mých programů přenosná, instaluji pouze Chrome, protože jinak se softwarový balík Adobe neaktualizuje, takže od verze CC se stahují přes Cretive Cloud. Nevidím smysl stavět zahradu s automatizací. PowerShell je možná dobrý, ale na Windows nemám co automatizovat a pro Linux a OS X je bash, který používám už dlouho.
    Pokud se přítel zeptá „přeinstalujte mi Windows, jinak je něco špatně“, nainstaluji systém pomocí externí disk svým vlastním „proprietárním“ způsobem a zbytek ať si udělá sám



  • 
    Nahoru