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és/telepítés
- A PowerShell telepítése
- Community Extensions könyvtár telepítése
- Szabaduljon meg a “parancsfájlok végrehajtása letiltva” üzenettől
- Állítsa be a “szkripteket”:. PowerShell meghajtó helye
- Parancssorozat konfigurálása
- Egyéb feladatok
- Kijelzés írása a képernyőre
- Felhasználót bemenetre kérni
- Dátumok kezelése
- E-mail küldése
- Sleep
- Egy könyvtár listázása (rekurzívan)
- Ellenőrizze, hogy létezik-e egy fájl
- Fájl sorainak beolvasása egy tömbbe
- Írás egy fájlba
- Nevezzen át egy fájlt
- Töröljön egy fájlt
- Munka szabályos kifejezésekkel
- Sztringek felosztása és összekapcsolása
- Fogj meg egy weboldalt
- Olvasás és írás a registrybe
- Idézőjelek megértése
- Time a command
- Text to speech
- Hozzáférés a Windows vágólapjához
- .NET-összeállítás betöltése
- Futásidőben létrehozott kód végrehajtása
- Olyan program végrehajtása, amelynek elérési útvonalában szóköz van
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