PowerShell szakácskönyv

Ez egy lista azokról az elemekről, amelyeket kollégáim és én hasznosnak találtunk a munkánk során. Nem enciklopédikusnak szánjuk, hanem inkább egy olyan helynek, ahol olyan dolgokat rögzíthetünk, amelyeket egy kezdő is hasznosnak találhat, különösen olyanokat, amelyek kitalálása hosszú időt vehet igénybe.

Az oldal még azelőtt indult, hogy az O’Reilly kiadta volna Lee Holmes Windows PowerShell szakácskönyvét. Ajánlom az O’Reilly könyvét, de ez az oldal nem kapcsolódik hozzá.

See also PowerShell gotchas.

Vázlat

  • Kezdő lépések/telepítés
    • A PowerShell telepítése
    • A Community Extensions könyvtár telepítése
    • A “szkriptek végrehajtása letiltva” üzenettől való megszabadulás
    • A “szkriptek végrehajtása letiltva” üzenet beállítása:” PowerShell meghajtó helye
    • Konfigurálja a parancssorát
  • Különféle feladatok
    • Képernyőre ír
    • Kérdezze a felhasználót a bemenetre
    • Kérdezze a felhasználót a bemenetre
    • Dátumok kezelése
    • E-mail küldése
    • Alvás
    • Könyvtárak listázása (rekurzívan)
    • Teszteli, hogy létezik-e egy fájl
    • Fájl sorok beolvasása egy fájlba
    • Fájl sorok beolvasása egy tömbbe
    • Fájlba írni
    • Fájl átnevezése
    • Fájl törlése
    • Szabályos kifejezésekkel dolgozni
    • Szövegek szétválasztása és összekapcsolása
    • Hálózati állományok keresése oldal
    • Read és ír a registrybe
    • Az idézőjelek megértése
    • A parancs időzítése
    • Textből beszédbe
    • A Windows vágólaphoz való hozzáférés
    • A .NET assembly
    • Futásidőben létrehozott kód végrehajtása
    • Egy olyan program végrehajtása, amelynek elérési útvonalában szóköz van

Kezdés/telepítés

A PowerShell telepítése

A PowerShellt a következő címen szerezheti be:
https://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx

top

Community Extensions könyvtár telepítése

A PowerShell Community Extensions (PSCX) könyvtár itt érhető el:
https://www.codeplex.com/Wiki/View.aspx?ProjectName=PowerShellCX

Ez egy hasznos cmdletek és funkciók gyűjteménye. Telepít egy “PowerShell Here” kontextusmenüt a WindowsExplorerben, amely megnyit egy PowerShell parancsablakot abban a mappában, amelyre jobb gombbal kattintunk. A PSCX egy Profile.ps1 mintafájlt is biztosít.

A PSCX telepítése után írja be a man about_pscx billentyűt, hogy áttekintést kapjon a PSCX-hez tartozó cmdletekről, szolgáltatókról stb.

top

Szabaduljon meg a “parancsfájlok végrehajtása letiltva” üzenettől

A PowerShell parancsfájlok futtatásakor valószínűleg először valami ilyesmivel fog találkozni:

PSH> .\myScript.ps1File D:\myScript.ps1 cannot be loaded. The fileD:\myScript.ps1 is not digitally signed. The script will not execute on thesystem. Please see "get-help about_signing" for more details..
At line:1 char:13 + .\myScript.ps1 <<<<

Ez a PowerShell alapértelmezett biztonsági beállításának köszönhető, amely tiltja a rosszindulatú parancsfájlok futtatását.

Ezt a viselkedést a következőkkel megváltoztathatja:

PSH> set-executionPolicy RemoteSigned

Ezentúl csak a távoli forrásból érkező szkriptekhez lesz szükség digitális aláírásra.

top

Állítsa be a “szkripteket”:. PowerShell meghajtó helye

Ha már számos PowerShell szkriptet írtál, hasznosnak találhatod, ha egy helyre gyűjtöd őket, és létrehozol egy scripts: nevű PSDrive-ot, hogy gyorsan megtaláld őket. Egy ilyen PSDrive létrehozásához a következőket adhatja hozzá a PSCX profiljához:

New-PSdrive -name scripts -PSprovider filesystem -root C:\bin\PowerShellScripts

top

Parancssorozat konfigurálása

A parancssorozat konfigurálásához egyszerűen hozzon létre egy prompt nevű függvényt, és helyezze el a profiljában. A következő például a munkakönyvtár megjelenítését eredményezi.

function prompt { "$pwd> " }

Megjegyezzük, hogy a prompt függvénybe bármilyen kódot beírhatsz, és ez a kód minden alkalommal lefut, amikor megnyomod a return gombot.

top

Egyéb feladatok

Kijelzés írása a képernyőre

A kimenet írásához használd a Write-Host függvényt. A kimenet színezéséhez opcionálisan megadhatja a -foregroundcolor értéket. Például a hibákat és a figyelmeztetéseket piros színnel lehet kiemelni.

Példa:

Write-Host "Hello world" -foregroundcolor red

top

Felhasználót bemenetre kérni

Használja a Read-Host lehetőséget.

Példa:

$a = Read-Host "Enter your name"Write-Host "Hello" $a

top

Dátumok kezelése

A cmdlet get-date egy DateTime objektumot ad vissza. Érv nélkül az aktuális időt és dátumot adja vissza. Sztring argumentummal, nem kell idézőjelbe tenni, a sztringet dátumra elemzi.

Példa:

(get-date) - (get-date 7/4/1976)

A cast segítségével a karakterláncokat DateTime objektumba is átválthatjuk.

top

E-mail küldése

A PowerShell Community Extensions Send-SmtpMail cmdletet használja.

Példa:

Send-SmtpMail -SmtpHost wotan.mdacc.tmc.edu -from [email protected] -to [email protected] -body "hello world"

top

Sleep

A Start-Sleep cmdletet használja. Alapértelmezés szerint másodpercekig tart, de van egy -milliseconds opciója.

Példa:

Write-Host "hello"; Start-Sleep 5; Write-Host "world"

top

Egy könyvtár listázása (rekurzívan)

Használhatja a dir parancsot, amely valójában a Get-ChildItem aliasza. Egy könyvtár rekurzív listázásához csak a -recurse opciót kell hozzáadni.

Példa:

dir f:\bin -recurse

top

Ellenőrizze, hogy létezik-e egy fájl

A test-path parancsot használja.

top

Fájl sorainak beolvasása egy tömbbe

Használja a get-content.

Példa:

$a = (get-content foo.txt)

top

Írás egy fájlba

Használja a Out-File. Hacsak nem Unicode kimenetet szeretne, adja meg a -encoding ASCII

Példa:

$foo | out-file -encoding ASCII foo.txt

top

Nevezzen át egy fájlt

Használja a Rename-Item vagy annak aliasát ren.

top

Töröljön egy fájlt

Használja a Delete-Item vagy annak aliasát del.

top

Munka szabályos kifejezésekkel

Lásd: Szabályos kifejezések a PowerShellben és a Perlben.

top

Sztringek felosztása és összekapcsolása

Stringeknek van egy split módszere. A split() argumentuma egy karakterlánc, amely az osztandó karaktereket tartalmazza. A ::split függvény ennél általánosabb. Első argumentuma az osztandó karakterlánc, második argumentuma pedig egy reguláris kifejezés, amelyen osztani kell.

Példa:

$a.split("`t ")

a $a karakterláncot egy tömbnyi karakterláncra bontja, mindenütt osztva, ahol tabulátor vagy szóköz van.

Példa:

$a = "123,456,apple"; ::split($a, ",(?!\d)")

a $a-t olyan vesszőkre osztja, amelyeket nem követnek számjegyek. Így az osztás a “123,456”-ot és az “alma”-t adná vissza.

Ha az osztandó karakterlánc egy Windows elérési útvonal, akkor érdemes a speciális Split-Path parancsot használni.

A tömb egyetlen karakterlánccá történő egyesítéséhez a ::join módszert használja. Az első argumentum az elválasztó karakter, a második pedig a tömb.

Példa:

$a = 1, 2, 3;#note: this is an array, not a string$b = ::join("*", $a)

Most $b tartalmazza “1*2*3”.

top

Fogj meg egy weboldalt

Használd a Get-Url a PSCX-ből vagy a net.webclient objektumot a .NET-ből. Az előbbi tömörebb, de az utóbbi több lehetőséget biztosít.

Példa:

$w = Get-Url "https://www.w3.org"

$w = (new-object net.webclient).DownloadString("https://www.w3.org")

A kód (new-object net.webclient) létrehoz egy .NET WebClient objektumot sok hasznos metódussal. Például a DownladFile meghívásával közvetlenül a lemezre menthetünk, nem pedig egy karakterláncba. Vannak még UploadData és UploadFile metódusok.

top

Olvasás és írás a registrybe

A registryben úgy navigálhatunk, mint a fájlrendszerben, bár van néhány részlet, amit tudnunk kell.

A registry minden egyes kaptárja olyan, mint egy meghajtó. Így például a HKEY_CURRENT_USER felfedezéséhez cd HKCU:, majd a cd segítségével haladhat lefelé a fán. Olvasáshoz használja a Get-ItemProperty-et, íráshoz pedig a Set-ItemProperty-et. Törléshez használhatja a Remove-ItemProperty-t is.

Példa:

Az alábbi parancsok felsorolják a cmd.exe héjat konfiguráló registry csomópont tartalmát. A CompletionChar 9-re állításával bekapcsoljuk a tabulátor-kiegészítést.

cd HKCU:\Software\Microsoft\Command ProcessorGet-ItemProperty .Set-ItemProperty . -name CompletionChar -Value 9

Ez a TechNet cikk részletesebben kifejti.

top

Idézőjelek megértése

A PowerShell négyféle idézőjelet használ: egyszerű és dupla közönséges idézőjeleket, valamint egyszerű és dupla here-stringeket. A kettős idézőjeleken és a kettős here-stringeken belül a változók neveit a változó értékeivel helyettesíti, és értelmezi a PowerShell escape-szekvenciákat. Az egyszerű idézőjelekben és az egyszerű here-stringekben a változónevek nem kerülnek kibővítésre, és a menekülési szekvenciák nem kerülnek értelmezésre. Például a

 $a = "bar" 'foo`t$a', "foo`t$a"

kódrészlet a

 foo`t$a foo bar

kimenetet fogja eredményezni, mivel a kettős idézőjelben a `t tabulátorra, a $a pedig “bar”-ra bővül.

A PowerShell here-strings olyan, mint a Perlben a here-dokumentumok. Egy here-stringen belül a kettős és szimpla idézőjelek nem speciálisak, hanem szó szerint idézettek. A sortörések is megmaradnak.

A here-string vagy @" vagy @' szimbólummal kezdődik, és ugyanezekkel a szimbólumokkal végződik, ellentétes sorrendben. A nyitó jelző után és a záró jelző előtt újsornak kell állnia.

Példa

 $a = "bar" $b = @" foo "baz" 'qux' $a "@ $b

termeli

 foo "baz" 'qux' bar

és

 $a = "bar" $b = @' foo "baz" 'qux' $a '@ $b

termeli

 foo "baz" 'qux' $a

Megjegyezzük, hogy a here-stringet nyitó idézőjel után nem lehet szóköz. Ellenkező esetben a következő üzenetet kapjuk: “Unrecognized token in source text.”

A PowerShell here-stringek és a C# verbatim stringek – bár hasonlóan néznek ki – meglehetősen különböznek egymástól. A következő táblázat összefoglalja a különbségeket.

C# szó szerinti karakterláncok PowerShell here-strings
Tartalmazhat sortörést Tartalmaznia kell sortörést
Csak dupla idézőjeles változat Egyes és dupla idézőjeles változat
Kezdődik @”-val Kezdődik @” (vagy @’) és egy sortörés
Végződik “-val Végződik egy sortöréssel, amit egy “@ (vagy ‘@)
Nem tartalmazhat un-escaped double quotes Mehetnek benne idézőjelek
Kikapcsolja a C# escape szekvenciákat ‘@ kikapcsolja a PowerShell escape szekvenciákat, de a “@ nem

top

Time a command

Use Measure-Command to time how long take a task to complete.

top

Text to speech

A PSCX Out-Speech parancsának használata.

top

Hozzáférés a Windows vágólapjához

A PSCX Get-Clipboard és Out-Clipboard parancsértelmezőkkel olvashat és írhat a vágólapról.

top

.NET-összeállítás betöltése

Hívhatja a LoadWithPartialName. Például a Team Foundation Server API összeszerelésének betöltéséhez a

::LoadWithPartialName("Microsoft.TeamFoundation.Client")

Vö. még Resolve-Assembly a PSCX-ből.

top

Futásidőben létrehozott kód végrehajtása

A Invoke-Expression parancs a Perl vagy JavaScript eval parancsával analóg. A Invoke-Expression $str a $str karakterláncban szereplő kódot hajtja végre.

top

Olyan program végrehajtása, amelynek elérési útvonalában szóköz van

Az elérési útvonal köré idézőjeleket teszünk, és eléjük teszünk egy zárójelet. Például,

& "C:\Program Files\WinEdt Team\WinEdt\WinEdt.exe"

Elindítja a WinEdt.exe futtatható programot, amelynek teljes elérési útvonalában két szóköz van.

Megjegyezzük, hogy az amperjelet nem hagyhatjuk ki. A cmd.exe-vel ellentétben a PowerShell nem feltételezi, hogy minden karakterlánc parancs. Az amperjel nélkül az idézőjeles elérési útvonal csak egy karakterlánc.

top

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.