Jaromír Nechanický

Vývojářský blog Jaromíra Nechanického

Podle kategorie

Začínáme s PowerShellem I.

Jaromír Nechanický       29. 11. 2009             12263 zobrazení

Windows PowerShell je velmi zajímavý nástroj, který nemusí sloužit pouze administrátorům, ale i programátorům jako vývojová platforma. V této sérii se pokusím popsat možnosti PowerShellu od základních příkazů a skriptování, přes tvorbu vlastních CmdLetů v .NETu až po používání PS jako součást Vaší aplikace. V tomto díle si ukážeme základní nastavení PowerShellu a nějaké základní příkazy.

Po nainstalování PowerShellu jej můžete spustit.

Pokud to s PowerShellem myslíte vážně, doporučuji nainstalovat si zároveň nějaký vývojový nástroj, který vám dopřeje zvýrazňování syntaxe, pohodlný debugging a mnoho dalšího. Mým oblíbeným je PowerGui (http://powergui.org)

PowerShell je “case insensitive” tzn. můžete používat velká/malá písmenka dle libosti bez rozdílu, na rozdíl od jazyků z rodiny C. Dva pro začátek nejdůležitější příkazy jsou:

 Get-Command #zobrazí seznam dostupných příkazů
Get-Help cmdName #zobrazí nápovědu k danému příkazu lze používat masky (Get-Help get-* zobrazí všechny příkazy začínající na Get-)

Za zmínku ještě stojí některé přepínače u příkazu Get-Help:

 Get-Help cmdName -Examples #zobrazí příklady s příkazem
Get-Help cmdName -Detailed #zobrazí detailní popis příkazu

PowerShell používá takzvané user profily. Jedná se v podstatě o skript, který se spustí při každém spuštění PS. Tyto profily se jmenují profile.ps1. Profil uživatele naleznete v Dokumentech ve složce PowerShell. Globální profil naleznete ve složce Windows\System32\WindowsPowerShell\*. Vždy se spustí globální profil i profil daného uživatele.

Zároveň, aby jste mohli v PS spouštět skripty (týká se i profilů) musíte nastavit tzv. “execution policy”. Jedná se o to, že standardně je v PowerShellu zakázáno spouštět jekékoliv skripty. Pokud chcete toto nastavení změnit (pokud nechcete, omezujete PS v podstatě na cmd.exe s více příkazy a pipe line) musíte spustit příkaz:

 Set-ExecutionPolicy –ExecutionPolicy $settings

Kde $settings nahraďte za jednu z těchto možností:

unrestricted povoleny všechny skripty
allsigned skripty podepsané certifikátem
restricted žádné skripty

Určitě se vám také bude hodit příkaz (oba řádky dělají to samé –> jména parametrů lze vynechat a poté záleží čistě na jejich pořadí).

 Set-Alias -Name $newName -Value $oldName
Set-Alias $newName $oldName

Tento příkaz je velmi důležitý, neb PowerShell je značně “upovídaný” jazyk. Toto má své výhody (kdo zná třeba bash, tak mi dá za pravdu), protože veškeré názvy příkazů jsou logické a snadno odvoditelné. Nicméně používáte-li jeden příkaz často, omrzí vás psát celý název. Příkaz Set-Alias jak název napovídá nastaví alias k původnímu příkazu. Nemusí se jednat pouze o CmdLet (interní příkaz PowerShellu), ale klidně o nějaký skript, případně cestu k exe souboru (get-help set-alias –examples napoví o všech možnostech využití).

Na závěr pár dalších příkazů, bez kterých se neobejdete:

 Get-Location #vypíše adresář, ve kerém se nacházíte
Get-ChildItem #něco jako příkaz dir v cmd.exe, má defaultní alias ls
Get-ChildItem -Include $pattner #vypíše podsoubory, které splňují $pattern(např. *.exe)
Get-ChildItem -Recurse #probublává rekurzivně do podsložek
Get-Content $fileName #vypíše obsah souboru $fileName
Set-Content -Path $fileName -Value $content #zapíše do souboru $fileName obsah $content
Push-Location #uloží aktuální lokaci na zásobník
Pop-Location #přemístí se na lokaci, která je na vrcholu zásobníku
Remove-Item $fileName #odstraní soubor $fileName
Remove-Item $fileName -Force -Recurse #odstraní soubor/složku $fileName a to i v případě, že složka není prázdná, případně soubor je chráněn proti přepisu
Get-Process #vypíše běžící procesy
Stop-Process -Name $processName #ukončí proces $processName
Copy-Item $item -Destination $newDestination #skopíruje soubor
New-Item -ItemType file -Name $name #vytvoří soubor $name
New-Item -ItemType directory -Name $name #vytvoří složku $name
Get-Service #vypíše soupis service
Stop-Service $name #zastaví service $name
Start-Service $name #nastartuje service $name

 

Nyní byste měli být schopní používat PowerShell jako plnohodnotnou náhradu cmd.exe a možná i trochu víc. V příštím díle se vrhneme na práci s PipeLine.

 

hodnocení článku

1 bodů / 1 hlasů       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback