---------- Kapitola 1 História skriptovania vo Windows --------------
1 Prvá generácia skriptových netopierov. Začalo to s win95, win98--------- a skončilo okolo roku 2008. Funkcie: Príkazy orientované na znaky, s príkazovým riadkom a pipeline. 2 Druhá generácia skriptov VBS. Funkcie: Iba funkcie, hodnoty prechodu, volania. 3 Tretia generácia skriptového PowerShellu. Od roku 2012 sa príkaz plne vyvinul na objektovo orientované. Napríklad tasklist a get-process sú vlastnosti opakovaného kolieska: objektovo orientované. Dedičstvo výhod predchádzajúcich dvoch generácií scenárov.
Otázka: Prečo sa učiť PowerShell? A: Misionár odpovedal, že bude študovať jeden rok a päť rokov na BAT. Jednoduchá syntax a silné knižničné funkcie! Jediný na svete, ktorý podporuje objekty s príkazmi na oboch stranách pipeline. t. j. objektovo orientovaný príkaz 1 | Objektovo orientovaný príkaz 2
Windows a Linux sú odlišné: V PowerShell skripte na Win, Podporte vstup CR, LF, CRLF. Podpora multithreadingu a multiprocesnej súbežnosti. Je jednoduché vložiť [Text2 zvuk], "Hlásenie, kapitán, disk je plný". Vloženie grafického rozhrania je jednoduché. (Keď vás vyskakovacie rozhranie požiada o zadanie používateľského mena, hesla, single select, multiple select a pod.) To sú závisti na Linuxové skripty.
PowerShell sa líši od Pythonu: Je jednoduché používať čínštinu v PowerShell. Čínsky názov písma, názov premennej, komentár. Čínske jednoduché úvodzovky, čínske dvojité úvodzovky. Automaticky rozpoznáva GBK, UTF8, Unicode kódovanie. Pipeline Support objekty, ktoré Python skripty závidia.
Jednoduchý príklad syntaxe 1: Kúzlo powershell s jednoduchými a dvojitými úvodzovkami. Jednoduché úvodzovky môžu byť citované s dvojitými úvodzovkami. A naopak. Jednoduché a dvojité úvodzovky možno @引用 pomocou @''. BAT nefungoval.
Misionársky rozprávač: Do návrhu tutoriálu som vložil veľa premýšľania. Nečítal si tú historickú časť toho, čo som napísal, bola veľmi [jednoduchá a drsná]? Históriu nesie jeden ťah. Ale keďže som to povedal, nie je to nezmysl, len chcem, aby študenti jasne ukázali, že od win7-win 2008 sa [objektifikácia] skriptov stala populárnou. Vedie to k ďalšej kapitole objektovo orientovaného vysvetlenia. Každý úvodný tutoriál pre PS by mal spomenúť rozdiel medzi postavami orientovanými a objektovo-orientovanými. Je jednoducho vhodné túto tému zaradiť do histórie príkazového riadku.
---------- Kapitola 2 Úžasný -------------- objektovo orientovaného Čo je objekt, prečo je objektovo orientovaný a prečo Microsoft posilňuje koleso?
Objektovo orientovaný príklad 1: Otázka: Jem 2,2 jablka denne, koľko jabĺk zjem za 17 dní? A: K dispozícii je 2,2 x 17. Je tiež možné použiť i++ podporovaný akýmkoľvek skriptovacím jazykom. pre ($i = 1; $i -lt 18; $i++)
{ $Apple = 2,2 + $Apple write-host $i,$Apple
}
-------------------------------------------- Akonáhle sa otázka zmení, nepoviem ti počet dní, len ti poviem, Zjem 2,2 jablka denne, koľko jabĺk zjem od 20. januára do 20. júna 2017? $days = (dátum začiatku '2017-06-20') - (dátum začiatku '2017-01-20')). Dni #值151
Zjem 2,2 jablka denne, koľko jabĺk zjem od 20. januára do 20. júna 2020? $days = (dátum začiatku '2020-06-20') - (dátum začiatku '2020-01-20')). Dni #值152
pre ($i=(dátum začiatku '2020-01-20'); $i -lt (dátum začiatku '2020-06-20'); $i=$i.adddays(1))
{ $Apple = 2,2 + $Apple write-host $i,$Apple
}
Záver: S predmetom dátumu je počítanie dní, hodín a podobne jednoduché. [pre,,i++] je bežné, ale nikdy som si nemyslel, že číslo i môže byť dátumový typ.
------------------------------------------
Aké sú výhody objektovo orientovaného prístupu? Pred objektovo orientovaným máme len reťazce a celé čísla. 1 Existuje objekt. ----- [Typ postavy]----- Glyf má system.string, čo je najzákladnejšie. System.Text.StringBuilder pamäť, často sa menia, veľké reťazce
----- [Číselný typ]----- system.int32, system.int64, system.decimal, system.double, System.Numerics.BigInteger infinite integer. Bežne sa používa int32, desatinné číslo.
Či je 1/3*3 rovné 1 alebo 0,9999, závisí od typu dát. ----- [Array]----- system.array pole System.arrayList pole sa často mení, napríklad neustále prepisuje, pridáva alebo maže, toto musíte použiť. Rýchlosť je relatívne vysoká. System.Collections.Generic.HashSet deduplikujú polia. Rovnako ako set object v pythone.
-----【Form】----- Výstup 1 príkazu. Napríklad dir, get-process. 2. Pri písaní skriptov používame objekty a atribúty na ich konštrukciu.
----- [Ostatní] ----- hashovacie tabuľky, súbory a podobne.
2 má atribúty. Atribúty sú argumenty a sú menšie ako reťazce. Predtým, než nebudú žiadne atribúty, musíme filtrovať a filtrovať reťazce pomocou [mozog-vypalujúcej regulárnej], označovanej ako [dedukčný reťazec]. Ak máte atribúty, nepotrebujete ich. 3 Existuje spôsob. Metóda je program, kód. Nemusíš to prepisovať sám. Netopierka určite nie je dobrá, to nie je možné, je tu aj osobné písanie, nespoľahlivé, neodvažuj sa ho použiť. Metódy môžu byť samopísané ps-funkcie, samopísané metódy v ps-triedach. Metóda, ktorú píšete sami, môže byť dočasne [zlúčená] do triedy tretej strany. Metóda, ktorú napíšete sami, môže byť dočasne [zlúčená] do .net triedy.
Aké sú nevýhody objektovo orientovaného prístupu? Kazateľ učí powershell ľudí, ktorí používajú winxp. Ten človek povedal, že PowerShell nie je dobrý, objekt je príliš náročný na pamäť, a má pravdu. V cmd vrátim 100 názvov súborov (reťazcov) s dir. V PowerShelle používam dir na vrátenie 100 súborových objektov a Powershell zaberá veľa pamäte. Ale teraz je to iné: 1. Nepotrebný obsah by nemal existovať v premenných. Alebo ho hneď po použití zničiť, aby sa znížila spotreba pamäte. 2. Pokles pamäte je dostatočný. Keďže výkon CPU už nemôže stúpnuť, zúfalo zvyšujeme pamäť v snahe vymeniť priestor za čas. 3. Chceme výkonnejšie funkcie a objektová orientácia je dnes najzákladnejší. Čo nie je objektovo-orientované, py, php, java, .net, c++?
Súhrn: 1 Objekty sú väčšie a pamäťovo náročnejšie než reťazce. 2. Existuje viac metód pre objektovú orientáciu a silnejšie funkcie. 3 atribúty sú menšie ako granularita reťazcov, čo je mimoriadne pohodlné na použitie. Vyhol som sa [šialenému používaniu mozog vyčerpávajúcich regular na filtrovanie] strunov!
=== Šialené použitie mozog-vyčerpávajúcich regularov na filtrovanie príkladov, bat verzia ping default gateway === @echo off&setlocal umožniť oneskorené rozšírenie Echo hľadá predvolenú bránu...
for /f "usebackq delims=" %%i in ('ipconfig /all') do ( echo %%i|find /i "gateway">nul|| echo %%i|find "default gateway" >nul ak "!errorlevel!" =="0" ( pre /f "tokens=2 delims=:" %%a in ("%%i") do pre /f "delims= " %%m in ("%%a") do set ipgate=%%m
)
)
Predvolená brána Echo je: !ipgate! =========== pingovať predvolenú bránu .ps1============ $default gateway = (get-netroute -DestinationPrefix 0.0.0.0/0). NextHop & ping.exe $ Predvolená brána
# test-connection $ predvolená brána =======================
Otázka: Aj keď je objektovo orientované také dobré, odkiaľ tieto objekty pochádzajú? Odpoveď: Z knižnice .net.
---------- Kapitola 3 Úvod do .NET --------------
Otázka: Koľko verziových vetiev má .NET Core? A: V súčasnosti existujú tri verzie. .NET 2.0 Najnovšia verzia .NET 3.51 .NET 4.0 Najnovšia verzia .NET 4.70 .NET Core 1.x Najnovšia verzia .NET 1.2 pre Apple systémy, Linux systémy a zabudované systémy. .NET Core 2.x Najnovšia verzia .NET 2.0 pre Apple systémy, Linux a embedded systémy.
Otázka: Koľko funkčných vetiev má .net? A: Desktopová vetva v .NET. WinForm. Na vývoj desktopových okien. Zvuková knižnica asp.net v .NET a .NET Core. Knižnica funkcií webového servera. Používal som na otvorenie B/S webového servera. F# v .NET a .NET Core. Obsahuje matematické knižnice, knižnice trigonometrických funkcií a podobne. PowerShell v .NET a .NET Core. Obsahuje bežné rozhrania na správu systému, ako sú skriptové súbory. Linux ◦Ubuntu 14.04 \ 16.04 ◦CentOS/RHEL 7 a vyššie ◦otvorené SUSE 42 a vyššie ◦Arch Linux (archl inux nemá číslo verzie) ◦LINUX docker container ◦Linux AppImage container (portable application single binary) https://github.com/probonopd/AppImageKit
MAC OS X ◦OS X 10.11
Otázka: Ako sa .NET program (C# program) pripája k MySQL serveru? A: Choďte na oficiálnu stránku mysql a stiahnite si konektor pre jazyk .NET. mysql-connector-net-6.9.9-noinstall.zip--->v4.5--->MySql.Data.dll Pridajte triedu MySql.Data do .net a pridajte databázové rozhranie.
Záver: WinXP stroj najprv nainštaloval .net 3.51, win7 a win2008, najprv inštaloval .net 4.62 alebo novší.
.net existuje už mnoho rokov a nie je veľa softvéru, ktorý by podporoval .net viac ako Java. Všetky .net vetvy, rozhrania (databázy, WeChat a pod.). ) Tie dll, tie knižnice, powershell sa dajú nazvať. Je to presne to isté ako exe napísané v C#.
Otázka: Okrem rozhrania vetvy .NET, aké sú vlastné knižnice (moduly) PowerShellu? A: Prosím, pozrite si ďalšiu kapitolu
---------- Kapitola 4 Bežne používané vstavané knižnice, externé knižnice a knižnice tretích strán v PowerShell --------------
Misionárska pomoc: Táto kapitola sa nedá rozoberať, je to len zoznam knižníc a príručiek. Uložte si túto kapitolu do záložiek. Po preštudovaní týchto knižníc budete vedieť, čo PowerShell dokáže.
Manuálna adresa Win2012: (najčastejšie používaný AD modul)
https://technet.microsoft.com/zh-cn/library/dn249523(v=wps.630).aspx AD User Group Management, DHCP, DNS, tlačiareň, zdieľanie súborov, IIS, disk, sieťová karta,
exchange2016
https://technet.microsoft.com/zh-cn/library/bb124413.aspx Active Directory 12 Anti-spam a anti-Malware 59 Prístup klienta 100 Extension Agent 4 E-mailové adresy a adresáre 37 Federácia a hybridná konfigurácia Vysoká dostupnosť Tok pošty Poštová schránka Databáza poštových schránok Server poštovej schránky Presun a migrácia Organizácia Povolenia Politika a dodržiavanie predpisov Bezpečnosť Stav servera, monitorovanie a výkon Zdieľajte a spolupracujte Jednotné posolstvo Používatelia a skupiny
sqlserver2016
https://msdn.microsoft.com/zh-cn/library/hh245198.aspx
lync2015
https://technet.microsoft.com/zh-CN/library/gg398867.aspx
SharePoint2016
https://technet.microsoft.com/zh-cn/library/ff678226(v=office.16).aspx
Amazon Virtual Machines, AWS, Microsoft Virtual Machines, Azure, Hyper-V, VMware vSphere a podnikové virtuálne stroje.
Klienti: Služby, procesy, logy, registre, adresáre súborov, vzdialená správa. Časovo obmedzené úlohy.
Internet: FTP, mail, SSH klientsky plugin pre pripojenie na Linux server.
Text: XML, HTML, CVS, JSON, EXCEL a podobne.
Text 2 hlas
Grafické rozhranie.
Microsoft Scripting Center
https://gallery.technet.microsoft.com/scrip{过滤}tcenter/
PowerShell source oficiálna webová stránka --- oficiálna knižnica PowerShell.
https://www.powershellgallery.com
Ostatné knižnice Niu x sú všetky na githube. Okrem toho misionári pravidelne publikujú [Niu x Magic Weapon] z [Hidden Foot Pavilion], čo je užitočná knižnica PowerShellu od tretích strán.
---------- Kapitola 5 Začiatočníci sa musia naučiť pomáhať s používaním príkazov--------------
Otázka: Ako zistím, akú PowerShell verziu poznám? A: $PSVersionTable
Otázka: Nepoznám ten modul, ako ho nájsť? A: get-module -ListAvailable
Otázka: Ako nájdem príkazy, keď poznám len ich časť? A: get-command *služba*
Otázka: Poznám príkaz, ale neviem, aké parametre sú v príkaze, ako ich vypísať? A: get-help write-host -Parameter * show-command-write-host
Otázka: Poznám parametre, ale neviem, ktorý príkaz má tento parameter, ako ho nájdem? A: get-command -ParameterName kódovanie
Otázka: Ako získam pomoc s príkazom z príkazového riadku? A: Získaj pomoc, rande
-Príklady príkladov príkazov -online online manuál
Otázka: Neviem metódu atribútu príkazu (nepoznám objekt), ako ho nájsť? A: "ABC" | get-member dátum | get-member
Otázka: Kde je čínsky manuál .NET? A: msdn。 Najzákladnejšie vlastnosti a metódy reťazcov sú v manuáli.
https://msdn.microsoft.com/zh-cn/library/system.string.aspx
---------- Kapitola 6 Úvod do bežných príkazov --------------
Prvý príkaz, ktorý sa treba naučiť, je dir Otázka: Prečo použiť powershell dir [t.j. Get-ChildItem] namiesto cmd dir? A: Objektovo orientovaný, silná metóda a mnoho atribútov. $file = dir a:\pscode\temp183\aaa.txt $file. Celé meno #返回全路径属性 $file. BaseName #返回文件名属性 $file. Rozšírenie #返回扩展名属性 $file. LastWriteTime #返回最后写入时间属性
Prvou syntaxou, ktorú sa treba naučiť, je syntax poľa. $a = @(xxx príkaz) Otázka: Niekedy musíte použiť [externé príkazy založené na znakoch] na rozdelenie vrátených hodnôt do polí podľa jednotiek správania. A: $a = @(ipconfig) $a[8] #第9行
Použitie get-childitem: Pridané parametre v PowerShell 3.0 a vyšších
get-childitem d:\xxx -file #过滤, iba výstupné súbory -Filtrovanie adresárov, výstup iba adresárov -Skryté filtrovanie, iba výstup skrytý
Otázka: Otvoriť súbor, segmentovať podľa správania, vložiť do poľa? A: $a = Get-Content a:\pscode\temp183\aaa.txt -ReadCount 0
Otázka: Otvoriť súbor ako veľký reťazec a uložiť celú premennú? A: $a = Get-Content a:\pscode\temp183\aaa.txt -raw
$a,$b,$c = 1,2,3
Otázka: Ako spúšťam príkazy na pozadí? A: V staroveku existoval príkaz cmd /c. Teraz existuje powershell /c "príkaz" alebo powershell -c "príkaz", PowerShell -súbor "script.ps1" -argument 1 aaaa -parameter 2 1234 štart-process -path xxx.exe -ArgumentList '-parameter1 aaaa -parameter2 1234'
Otázka: Chcem spustiť skript s iným lokálnym používateľom, ale powershell nemá runy. EXE podobné príkazy? A: V PowerShelle sú rôzne relácie. IP + port + používateľské meno + heslo = relácia, stačí zmeniť používateľské meno, heslo a môžete zmeniť oprávnenia. Pretože oprávnenia sú viazané na používateľa. Podobne potrebujem vytvoriť len n relácií na použitie, bez prepínania používateľov. Najdôležitejšia new-pssession má parameter -Credential, zadajte používateľské heslo, ktoré nie je to isté ako runy. Je exe rovnaké? Čo ešte je SmbSession? Takže si nemyslím, že je potrebné používať runy v PowerShell. exe。 Stačí použiť tieto príkazy so session a Credential, však?
Skontrolujte príkazy s názvom [Credential] v názve parametra: get-command -ParameterName Credential
Zobraziť príkazy pomocou znaku [session] v príkaze: get-command *session*
Otázka: Ako pošlem e-mail pomocou PowerShellu? A: Odoslať-MailMessage - Predmet 'Predmet' -Z "vášho hotmail účtu @hotmail.com" -Na "váš QQ email @qq.com" ' -SmtpServer "smtp.live.com" -port 587 -useSsl -prihlasovacie údaje "váš hotmail účet @hotmail.com" ' -Prílohy $Attachments -BodyAsHTML -body $HTML obsahu e-mailu
Nota: 1 použitiexxx@QQ.com+ Vaše QQ heslo + vyššie uvedený príkaz Odoslanie e-mailu nefunguje. Pre bezpečnosť QQ hesiel Tencent vyžaduje nezávislé e-mailové heslá. 2 Odosielanie z QQ schránky nie je štandardne možné. Je vypnutý a musíte zapnúť SMTP v nastaveniach. 3 PowerShell 3.0 a vyššie podporujú iba parametre portu. Pre Windows 7 musíš najskôr nainštalovať najnovšiu verziu PS
Otázka: Monitorujte CPU, disk, sieť, IO a podobne. A: Monitor výkonu alebo Get-Counter načítava údaje o výkonnostnom počítadle z lokálnych aj vzdialených počítačov.
Otázka: Ako môžem vidieť, aké predmety na pulte sú dostupné? A: Všetko je to v manuáli. Skontrolujte, aké sú hlavné kategórie využitia: Get-Counter -ListSet * | Sort-Object CounterSetName | Formát-tabuľka CounterSetName
Napríklad teraz viem, že kategória disku je (PhysicalDisk), a potom skontrolujem podkategórie na disku a použijem: (Get-Counter -ListSet PhysicalDisk). Cesty
Otázka: Ako si pozerám záznamy? A: Prehliadač udalostí, alebo get-eventlog
Otázka: Ako vykonávam reťazce? A: $cmd 1 = 'xxxx' Invoke-Expression $cmd 1
No, veľa sme sa naučili o jednotlivých príkazoch, pozrime sa na vykonávanie Powershell skriptov.
---------- Kapitola 7 PS1 Skriptovanie, ladenie a spúšťanie -------------- Skript je kombinácia a prekrytie príkazových príkazov. Scenár je lepidlo, chodiť okolo a hľadať niekoho na zavolanie, hľadať kolesá na zloženie auta. Namiesto výroby kolies, aby ich mohli používať iní.
Cainiao sa spýtal: Ako napísať scenár? Starý vták odpovedal: 1 Detaily problému musia byť objasnené. Napríklad: urob mesačné koláčiky. 2 Nápady na riešenie problémov sú tiež v podstate dokončené. Múka a voda, plneň pridám do pary. 3 Aké príkazy a premenné použiť. Pridajte päť zŕn, dajte ich do formy a vytlačte. 4 Najprv píšte hrubo, píšte hrubo. 5 Ladenie prešlo. 6 Píšte podrobne. Zvážte chybovú situáciu, plus chybový kód, chybovú správu. Odstráňte chybný kód, ktorý nie je ľahko kompatibilný. Prepíšte kód, ktorý nefunguje dobre. Doteraz nemusí dobrý scenár vyzerať dobre, ale mal by byť veľmi užitočný. 7 Jemne spracované. Refaktorovanie, písanie opakovane použitých úryvkov kódu do funkcií. Prepíšte názvy premenných tak, aby im ľudia rozumeli na prvý pohľad. Dobre naformátujte kód a urobte odsadenie.
Otázka: Aké IDE sa používa na písanie PS1? A: Najviac odporúčané je používať Visual Studio Code plus PowerShell plug-in. Funkcie: Kódové prompty, automatické dopĺňanie, formátovanie kódu, odsadenie na výber medzery alebo tabulátora, nastavenia kódovania súborov. Existuje plugin s názvom FTP-sync, ktorý dokáže zapisovať PS1 skripty do Windows VSCode a automaticky ich synchronizovať s adresárom Linuxu po uložení.
Otázka: Aké nástroje sa používajú na ladenie PS1? A: Najviac odporúčaný powergui life nepoužíva lokomotívu, aj keď je to hrdina, PS skript tiež vyskočí a nahlási chybu! VSCODE je tiež v poriadku
Otázka: Aké nástroje používate na formátovanie kódu? A: Všetko, čo by malo byť odsadené, je odsadené a rovnaké sú zarovnané.
PowerShell ISE + ISE plugin [ISESteroids]
Inštalácia: Install-Module -Názov ISESteroids
Prevádzky ISE: Štart-Steroids
Otázka: Aké nástroje používate na to, aby bola farba kódu krásna? A: 1 Použite vyššie uvedené nástroje na formátovanie kódu. 2 Použite PowerShellise + Missionary DIY Color Matching Edition 2016. 3 Chyť fotku. Vzniká najpríjemnejší a najkrajšie farebný PowerShell kód na svete.
Všetky vyššie uvedené IDE sú v čínštine.
Otázka: Ako pomenujem scenár? xxx.ps1 A: Odporúča sa začať s 1---2 písmenami a na zvyšok použiť čínsky názov súboru. Napr. [bf zálohuje všetky staré files_ a vymaže .ps1 spred 10 dní] Týmto spôsobom najprv napíšte [bf] a potom stlačte tab na dokončenie názvu skriptu.
Otázka: Ako povoliť povolenie na vykonávanie PowerShell skriptov? A: echo Nasledujúci kód je možné spustiť v cmd s administrátorskými právami alebo v PowerShelle s administrátorskými právami. echo, ak používam diaľkový PowerShell. Lokálny aj vzdialený stroj musia byť prevádzkované s administrátorskými oprávneniami. "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -príkaz "Set-ExecutionPolicy -ExecutionPolicy Unrestricted" "C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -príkaz "Set-ExecutionPolicy -ExecutionPolicy Unrestricted" & "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -príkaz "Set-ExecutionPolicy -ExecutionPolicy Unrestricted" & "C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -príkaz "Set-ExecutionPolicy -ExecutionPolicy Unrelimitedd" pauza
Otázka: Aké sú nevýhody lokomotívy (powergui)? A: Nemôžem nastaviť farbu pozadia.
Otázka: Aké sú nevýhody vscode? A: $ a názov premennej nie sú rovnaká farba. Funkcie ladenia sú pomalé a niekedy zaseknuté.
Otázka: Aké sú nevýhody ISE? A: Nemôžete sa rozhodnúť uložiť alebo konvertovať kódovanie. Odsadenie do [medzera], [tab] oboch. V inom softvéri na úpravu textu sa zobrazuje odsadenie.
---------- Kapitola 8 Skutočný bojový tréning -------------- Skupina 6504748 a túto časť napísala sama.
5. Príklad 1: Zapnite a vypnite službu 6. Príklad 2: Riadiaci firewall (Otvoriť, Zatvoriť, Pravidlo) 7. Príklad 3: Nastavenie politiky (napríklad politika hesiel)
---------- Kapitola 9 Zaujímajú ťa tieto ďalšie voliteľné kurzy? -------------- Príklady PowerShell skriptov, argumentov príkazového riadku na prenášanie hodnôt a bind premenných
http://www.cnblogs.com/piapia/p/5910255.html
Nechajte PowerShell spúšťať vždy len jeden skript naraz (príklad vzájomného vylúčenia procesov)
http://www.cnblogs.com/piapia/p/5647205.html
PowerShell character interface, powershell plus WPF rozhranie, hra 2048
http://www.cnblogs.com/piapia/p/5531945.html
Dva crawlery v PowerShelle
http://www.cnblogs.com/piapia/p/5367556.html
PowerShell skript: Generátor náhodných hesiel
http://www.cnblogs.com/piapia/p/5184114.html
Príklad PowerShell rekurzívneho algoritmu
http://www.cnblogs.com/piapia/archive/2013/01/29/2881011.html
PowerShell hlasová kalkulačka
http://www.cnblogs.com/piapia/archive/2012/10/20/2731506.html
1 Zoznam všetkých súborov šifrovaných EFS. 2Dešifrovať všetky EFS šifrované súbory
http://www.cnblogs.com/piapia/p/4702514.html Je to nástroj určený pre systémových administrátorov a sieťových administrátorov. Po odchode zamestnanca jeho disk predpokladá, že obsahuje 10 000 súborov (adresárov), z ktorých sú 3 adresáre zašifrované EFS. V Exploreri sú tieto tri súbory zelené. Ale ak kliknete na (10 000 katalógov) jeden po druhom, či už je zelený alebo nie, budete vyčerpaní. V tomto čase sieťový administrátor používa WIN účet zamestnanca, prihlási sa do jeho PC a pomocou tohto skriptu zobrazí všetky EFS šifrované súbory.
---------- Kapitola 10 Prosím, opýtajte sa otázku-------------- Dámy a páni, ak je niečo na hlásenie, opustite súd bez ničoho.
----------Kapitola 11 Kapitola Linuxu--------------
Misionár: Pokým vieš nainštalovať linuxovú verziu PowerShellu, potrebuješ len ps1 skripty, žiadne sh skripty. Interpretácia: 1 Stručne povedané, bash má len syntax, žiadne príkazy a knižnice. 2 Bash má len 1 % syntaktických funkcií, PowerShell ich nedokáže implementovať. To je normálne, žiadne dva listy na svete nie sú úplne rovnaké. To znamená, že potrebuješ len PS1 skript, žiadne škody. 3 bash je príliš starý, rovnaká funkcia, Powershell sa dá implementovať, a tiež ušetrí čas, napríklad 10 000 prázdnych forov, Powershell musí ukladať 90 % času. 4 Nauč sa používať /usr/bin/powershell namiesto /usr/bin/bash. Ostatné linuxové príkazy, pipeline, staré kung-fu a podobne sa používajú presne rovnako ako v Bash. 5 Postupne používať objektovo orientované, jednoduché a výkonné PowerShell príkazy a knižnice namiesto náročných linuxových príkazov, alebo oboch. ---Toto je všeobecný princíp, všeobecný náčrt.
Otázka: Ktoré verzie Linuxu môžu nainštalovať PowerShell? A: ◦Ubuntu 14.04 / 16.04 ◦CentOS/RHEL 7 a vyššie ◦otvorené SUSE 42 a vyššie ◦Arch Linux (archl inux nemá číslo verzie) ◦LINUX docker container ◦Linux AppImage container (portable application single binary) https://github.com/probonopd/AppImageKit
Otázka: Prečo sa hovorí, že príkazový riadok Winu je silnejší ako Linux? A: Príkazy v 1 win sa vyvinuli do objektovo orientovaného PowerShellu. Linux zatiaľ nefunguje. Od win7 po win2012r2 evolúcia končí.
2 Počul som, že Unix má veľa linuxových príkazov a je veľmi výkonný. Ale teraz vám hovorím, že PowerShell príkazy sú aspoň desaťkrát častejšie ako linuxové. Každopádne, celý život som sa nič nenaučil.
3 Linux je viac závislý od grafov, s príliš málo príkazmi. A príkaz win je oveľa viac než len linux. 3.1 V akomkoľvek linuxe sú príkazy na mailovom serveri čoraz kompletnejšie než v Exchange? Pohodlnejší ako výmena? 3.2 DNS server bind v Linuxe nie je taký pohodlný ako DNS príkaz win. Má bind príkaz [príkaz] na pridanie ipv4 A záznamu k doméne? Ešte nie ste závislí od webovej grafiky? Niektorí ľudia hovoria, že treba používať nsupdate. Nejde o to, vytvoriť text a potom ho spustiť. Aký je rozdiel medzi nahradením [DNS zónového súboru] za sed a následným načítaním [DNS zóny]?
4 V novej verzii Win, alebo v PowerShell, je to všetko [príkaz + parameter]. A väčšina Linuxu je stále [sed text]. 4.1 Ako príklad vezmime IP adresu priradenú sieťovej karte. NMCLI pripojenie pridať typ ethernetu con-name NEW_STATIC ifname eno1234567 IP4 192.168.1.111 GW4 192.168.1.1, Nie je to pohodlnejšie než použiť sed na scraping súboru ifcfg-eth0?
5 Každý jazyk spracováva dáta, rovnako ako skriptovanie. S pomocou objektov je PowerShell pohodlnejší než awk. Shenma csv, excel, xml, json SQL tabuľka, NOSQL tabuľka. HTML a podobne.
Otázka: Ako PowerShell implementuje [názov súboru sed -i "s/what to look-for/replace with /g"]? A: @(názov súboru Get-Content) -nahraďte 'aaa','bbb' | Názov súboru Set-Content $aaa To znamená, že otvoriť súbor, nahradiť ho, uložiť súbor.
Otázka: Prečo čoraz menej ľudí používa SED v Linuxe? A: Argument 1: AWK môže nahradiť SED, ale SED nemôže nahradiť AWK. sed, teda jednoducho nájsť substitúciu. AWK má pre a podobné spôsoby na implementáciu komplexného spracovania.
Argument 2: AWK používa štandardný regulár a regulár v sed je rovnaký ako v sed, ale jeho časti sú odlišné. Učenie sa SED znamená, že dva súbory nezlučiteľných pravidelných štandardov v mozgu proti sebe bojujú.
Otázka: Takže je správne učiť sa AWK? A: Naučiť sa PowerShell je jednoduchšie ako učiť sa AWK. PowerShell používa [split and then split], [if and if], where-object, string.substing(), string[-3] a ďalšie. Rozoberte problém struny vrstvu po vrstve. Jednoduchšie ako bežné.
Otázka: Môžu sa pipeline a AWK používať v PowerShelle? A: V PowerShelle môžete volať awk, presne tak ako v Bash. Staré bojové umenia sú úplne Turínske.
Otázka: Ako implementovať funkciu [awk '{print $3}'] v PowerShelle? A: ($line -split "\s+|\t+") [0] #第一行 ($line -split "\s+|\t+") [2] #第三行
Get-Content /xxx/yyy.txt | foreach-object {$_.split()[2]} #awk '{print $3}'
Otázka: Ako implementovať funkciu [awk -f a.awk súbor] pomocou PowerShellu? A: V podstate ide o filtračnú funkciu, ktorá využíva rúru. V PowerShelle sa to nazýva filter alebo filter. PowerShell podporuje kombináciu príkazov + pipe + filter. Ako v Command 1 | Filter 1 | Príkaz 2 | Filter 2 | Filter 3 Filter Filter1
{ Funkcia podobná AWK
}
Otázka: Je v PowerShelle [xargs]? A: Premenná potrubia používaná v pipeline sa volá [$psitem] a jej alias je [$_]. PowerShell používa foreach-object a $_ na implementáciu funkcie xargs.
Otázka: Existuje v PowerShelle nejaké číslo [<] [<<? A: Nie. Možno je [<] symbolom sprava doľava protiľudské myslenie. Mnohé príkazy v PowerShelle boli zmenené zľava doprava. Ak get-random < (1..100) nie je v PowerShelle legálny, právny by mal byť get-random -inputobject (1..100), teda 1. 100 |get-random Menej ako 1 % zvláštnych príkazov [musí] závisieť od symbolu [<], čo sa dá dosiahnuť volaním cmd v PowerShelle alebo bash (PowerShell pre Linux) v PowerShelle. Napríklad $a = bash -x "príkaz 1 < príkaz 2" #linux Napríklad $a = cmd -c "príkaz 1 < príkaz 2" #cmd
Otázka: Existuje v PowerShelle príkaz expect? Ako sa pripojiť k Linux SSH serveru z Windows pomocou PowerShellu? A: 1. Áno. Pre niektoré zvláštne a čiastočné potreby odozvy dverí existujú moduly tretích strán. 2 Nie. PowerShell nepoužíva príkaz expect, ale používa reláciu.
Použite Powershell + SSH klientskú knižnicu + IP + port + používateľské meno + heslo na spojenie a posielanie príkazov na toto pripojenie. Kód je nasledovný: $connection 1 = New-SSHSession -ComputerName 1.1.1.1 -Port 22 -Credentials aaaa #将提示输入密码 $to return = Invoke-SSHCommand -Command {cat /etc/issue} -SSHSession $Connection 1
Táto štandardná funkcionalita ako (MongoDB, mysql, ssh, ftp, http, telnet a pod.) obsahuje ovládače alebo moduly. PS a. .netprogram, cez spojenie s ovládačom, posiela príkazy a prijíma dáta. Výhody používania modulov alebo ovládačov na odosielanie a prijímanie [dát] sú: Dáta budú prevedené na .net objekt, ktorý bude následne konvertovaný na PS objekt. Inak sú to len šnúrky a [objektovo orientované bojové umenia] PS sekty sú všetky zbytočné.
Ak vezmeme MongoDB ako príklad, aké sú výhody používania modulov alebo ovládačov na odosielanie príkazov? Kto hovorí? Myslím si, že výhody sú: 1 Multithreading. Pozadie vlákna beží a nezaberá aktuálne vlákno. 2. Môžeme kedykoľvek [odpojiť sa v polovici] relácie, spustiť iný PS kód, funkcie a [kedykoľvek sa vrátiť do relácie]. Skripty sú flexibilnejšie na písanie a jednoduchšie na ladenie. 3session prináša viacero používateľov a rôzni používatelia môžu mať rôzne serverové oprávnenia.
Otázka: Existuje v PowerShell príkaz Su, Runa? Ako spustiť príkaz iného používateľa pomocou PowerShellu? A: Nie. V PowerShelle je spúšťanie natívnych príkazov a pipeline v Linuxe bez námahy. Napríklad: sshaaa@127.0.0.1"Vykonané s oprávneniami používateľa AAA, príkaz xxx" sshpass -p user_password sshaaa@192.168.1.1
Otázka: Dva Linux stroje so SSHD? Ako sa pripojiť a odosielať príkazy pomocou PowerShellu? A: Okrem vyššie uvedenej metódy môžete použiť aj spôsob vytvorenia novej Linux relácie. (Pripojené z Linuxu na iný SSHD) Poznámka: Táto metóda vyžaduje úpravu súboru /etc/ssh/sshd_config. Pridajte nasledujúci riadok Subsystém powershell powershell -sshs -NoLogo -NoProfile Potom reštartuj SSHD server. Podrobný manuál nájdete tu:
https://github.com/PowerShell/PowerShell/tree/master/demos/SSHRemoting
Príkaz: $connect 2 = New-PSSession -HostNameName 127.0.0.1 -UserName user006 #手动输入密码或用-KeyFilePath option invoke-command -session $connect 2 -scrip{filter}tBlock {new-item ~/ccc.txt}
Súhrn: Klient Win, pripojený k Linux serveru. Momentálne sú samozrejme potrebné moduly od tretích strán, toto je modul v oficiálnej knižnici, stačí použiť inštalačný modul PoshSSH. Linux klient, pripojený k Linux serveru. Musíš upraviť súbor /etc/ssh/sshd_config. Linux klient, pripojený k Win serveru. Musíš zapnúť službu na serveri. Dôverujte serveru na klientovi. Win klient, pripojený k Win serveru. Musíš zapnúť službu na serveri. Dôverujte serveru na klientovi.
Otázka: Je v PowerShelle [grep]? A: Príkaz select-string sa používa v PowerShell. Z hľadiska programovania majú select-string=smart, grep=stupid + tvrdú chybu :mrgreen: Keď existuje hlavička BOM, select-string automaticky rozpozná typ kódovania súboru. Keď neexistuje hlavička BOM, nie je potrebné meniť prostredie shellu ako linux+grep a nie je potrebné ukladať súbory podľa určitého kódu. Stačí špecifikovať parameter -encoding podľa kódovania súboru. A grep túto funkciu nemá, teda existuje tvrdá chyba [nemožné špecifikovať typ kódovania súboru]. Samozrejme, grep nie je zbytočný, grep má niektoré parametre, má ďalšie jedinečné funkcie, select-string nie, tu je grep silnejší ako select-string.
Otázka: Existuje v PowerShelle nejaké [hodnotenie]? A: Použite Invoke-Expression na vykonávanie reťazcov v PowerShell.
Otázka: Existuje v PowerShelle chvost -f? Je možné v reálnom čase vypisovať novo generované riadky súboru. A: Get-Content D:\a.txt -Tail 10 -ReadCount 0 -Wait
Otázka: Chcem použiť malú klávesnicu a zároveň chcem terminál s 256 farbami, ako by mal byť XSHELL nastavený? A: Terminál --- Typ terminálu --- [putty-256color] alebo [export TERM=putty-256color] Terminál --- klávesnica --- predvolený alebo Linux.
Eterm-256color dokáže Gnome-256color nefunguje konsole-256color nefunguje Putty-256color PowerShell Missionary Pôvodné zdieľanie 2017-02-15 RXVT-256COLOR nefunguje Screen-256color nefunguje ST-256COLOR VTE-256COLOR nefunguje xterm-256color nefunguje Rovnaký princíp platí pre SecureCRT
Otázka: Kto je silnejší, shell alebo python? A: Každý má svoje silné stránky a môže sa navzájom dopĺňať. Ale nie sú komplementárne. Viac o tom nižšie.
Otázka: Prečo je linuxová verzia PowerShellu vhodnejšia pre prevádzkový a údržbársky personál na písanie skriptov? (V porovnaní s linuxovou verziou Pythonu) A: 1 Python má objektovo orientované funkcie a je dostupná linuxová verzia PowerShellu.
2 Python nemá príkazový riadok. 2.1 Python nemôže byť predvoleným terminálom pre SSH, ale PowerShell pre Linux áno. Pozrite si kapitolu: "Dva Linux stroje so SSHD? Ako sa pripojiť a odosielať príkazy pomocou PowerShellu? 》 2.2 Používanie shell príkazov (awk, grep, atď.) v pythone je veľmi zdĺhavé. Treba pridať veľa syntaxe a kódu pre py. PowerShell pre Linux spúšťa príkazy awk rovnako ako bash.
3 python nemá potrubia. Je veľmi zložité prenášať hodnoty medzi n [príkazovými programami]. Treba pridať veľa syntaxe a kódu pre py. Linuxová verzia PowerShellu má pipeline a spúšťanie príkazov awk je to isté ako bash.
4 Python má verziu 2, verzia 3 nie je kompatibilná s rakovinou! Otázka. PowerShell pre Linux takýto problém nemá. 4.1 Tieto otázky obsahujú kódovacie úlohy.
Záver: Shell príkazy ako grep nie sú dobré na podporu programovania, nie sú také dobré ako kódovacie problémy z 4.1 vyššie v PowerShelle doma. Plus vyššie uvedených 2,3 bodu. Linuxovci sa kvôli tomu cítia nepríjemne, ale len veľmi málo ľudí používa externé príkazy v py. [py command library] a [shell command] sú mŕtve a v podstate sa nemôžu navzájom dopĺňať. Linuxová verzia PS je iná.
Otázka: Prečo sa hovorí, že PowerShell je lepší ako Shell? A: 1 PowerShell je objektovo orientovaný a vlastnosti vracajú priamo dostupné údaje. Toto je oveľa menej bežné ako v znakových skriptovacích jazykoch (bat, shell), ktoré vyžadujú dedukciu reťazcov. Narodený s menej [obsahom, ktorý treba uniknúť]. 2 Substitúcia vyhľadávania reťazcov, v PowerShelle existujú metódy, ktoré nevyžadujú escaping, v triede .NET. Napríklad: [string]$a = 'abc\\def' $b = $a.nahradiť('\\','keď') #返回: [ABC ako def] Na určenie, či je IP adresa legitímna, môžete použiť metódu TryParse() v triede IPAddress. Stručne povedané, odporúčam použiť čo najviac .net metód, používať čo najmenej regex alebo jednoducho jednoduché bežné metódy. 3 PowerShell používa ['] ako symbol úniku. ['] sa používa menej často ako [\] a je oveľa menej používaný ako únikový symbol. 3.1 Pri písaní databázových skriptov sa vyskytuje viac konfliktov [']. Napríklad ['table'] bude v konflikte s ['t], napríklad ['biao'] bude v konflikte s ['b], a neskôr som to vyriešil pomocou ['table']. 4 ps vyhľadávanie a náhrada reťazcov, má bežný engine, je kompatibilný s Linuxom a tiež používa [\] ako únik. Existuje však špeciálna funkcia úniku reťazca [[Regex]::Escape()], ktorá sa najprv escape a potom nájde a nahradí, pričom kód je veľmi čitateľný. $Original reťazec pred únikom = '\+\\&*|]' $escaped reťazec = [regex]::escape($original reťazec pred únikom) ------------- Príklady scenárov [string]$a = 'abc\\def' $Original reťazec pred únikom = '\' $Escaped Reťazec = [Regex]::Escape($Original String Before Escape) #[\]--->[\\] $b = [Regex]::replace($a,$Escaped reťazec, 'keď') $b #返回 [ABC Dangdang DEF] ------------- 5 úderov a úderov, každý má svoj vlastný spôsob, každý má svoj únik. Spolu je pre A ľahké ovplyvniť B a A prehltne B. Je tiež ľahké mať problémy pri stretnutí s ['], ["], [\] a [*]. Je to ako nosiť dve vrstvy dlhých nohavíc, jednu vrstvu stiahnete a druhá vrstva sa tiež hýbe, musíte sa starať o ich kompatibilitu. Toto je rakovina a ťažko sa rieši. Ale aj tento problém sa dá do určitej miery predísť. To vyžaduje, aby osoba, ktorá napísala škrupinu, opravila smradľavý problém. [Vložte kód awk do .awk súboru samostatne, nie do príkazového riadku] PowerShell tento problém nemá, daj to do príkazového riadku, do skriptu, nemá to žiadny efekt.
|