Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 11695|Odpověď: 1

PowerShell Úvodní návod - verze v0.3

[Kopírovat odkaz]
Zveřejněno 19.04.2017 16:48:30 | | |


---------- Kapitola 1: Historie skriptování ve Windows --------------


1 První generace skriptových netopýrů. Začalo to s win95, win98--------- a skončilo to kolem roku 2008. Funkce: Znakově orientované příkazy, s příkazovou řádkou a pipeline.
2 Skripty druhé generace VBS. Funkce: Pouze funkce, hodnoty průchodu, volání.
3 Skriptovací PowerShell třetí generace. Od roku 2012 se příkaz plně vyvinul do objektově orientovaného. Například tasklist a get-process jsou funkce opakovaného kolečka: objektově orientované. Dědí výhody předchozích dvou generací scénářů.



Otázka: Proč se učit PowerShell?
A:
Misionář odpověděl, že bude studovat jeden rok a pět let, aby BAT. Jednoduchá syntax a silné knihovní funkce!
Jediný na světě, který podporuje objekty s příkazy na obou stranách pipeline. tj. objektově orientovaný příkaz 1 | Objektově orientovaný příkaz 2

Windows a Linux jsou odlišné:
V PowerShell skriptu na Win,
Podpořte vstup CR, LF, CRLF. Podpora vícevláknového a víceprocesového souběžného procesu.
Je snadné vložit [zvuk Text2], "Hlášení, kapitáne, disk je plný".
Vložení grafického rozhraní je snadné. (Když se v vyskakovacím okně vyzve, abyste zadali uživatelské jméno, heslo, single select, multiple select atd.) To jsou závisti linuxových skriptů.

PowerShell se liší od Pythonu:
Čínštinu se v PowerShellu snadno používá. Čínský název písma, název proměnné, komentář. Čínské jednoduché uvozovky, čínské dvojité uvozovky.
Automaticky rozpoznává GBK, UTF8, Unicode kódování. Pipeline Support objektů, kterým jsou python skripty závidění.



Jednoduchý příklad syntaxe 1: Kouzlo powershell s jednoduchými a dvojitými uvozovkami.
Jednoduché uvozovky lze citovat s dvojitými uvozovkami. A naopak.
Jednoduché a dvojité uvozovky lze @引用 pomocí @''.
BAT nefungoval.


Misionářský vypravěč:
Do návrhu tutoriálu jsem věnoval hodně pozornosti. Nečetl jsi tu část o historii, která byla velmi [jednoduchá a hrubá]? Historie se nesou jedním úderem.
Ale když už jsem to řekl, není to nesmysl, chci, aby studenti jasně řekli, že od win7-win 2008 se [objektivizace] skriptů stala populární. Vede k další kapitole objektově orientovaného vysvětlení.
Každý úvodní tutoriál pro PS by měl zmínit rozdíl mezi postavovým a objektovým zaměřením. Je prostě vhodné toto téma zařadit do historie příkazového řádku.

---------- Kapitola 2: Úžasný -------------- objektově orientovaného
Co je to objekt, proč je objektově orientovaný a proč Microsoft posiluje kolo?

Objektově orientovaný příklad 1:
Otázka: Jím 2,2 jablka denně, kolik jablek sním za 17 dní?
A:
K dispozici je 2,2 x 17. Je také možné použít i++ podporovaný jakýmkoli skriptovacím jazykem.
pro ($i = 1; $i -lt 18; $i++)
{
        $Apple = 2,2 + $Apple
        write-host $i,$Apple
}

--------------------------------------------
Jakmile se otázka změní, neřeknu ti počet dní, jen ti řeknu,
Jím 2,2 jablka denně, kolik jablek sním od 20. ledna do 20. června 2017?
$days = ((datum doručení '2017-06-20') - (datum doručení '2017-01-20')). Dny #值151


Jím 2,2 jablka denně, kolik jablek sním od 20. ledna do 20. června 2020?
$days = (datum začátku '2020-06-20') - (datum doručení '2020-01-20')). Dny #值152

pro ($i=(datum počtu: 2020-01-20'); $i -lt (datum doručení '2020-06-20'); $i=$i.adddays(1))
{
        $Apple = 2,2 + $Apple
        write-host $i,$Apple
}

Závěr: S předmětem data je počítání dnů, hodin atd. jednoduché. [pro,,i++] je běžné, ale nikdy jsem si nemyslel, že číslo i může být typ daty.

------------------------------------------



Jaké jsou výhody objektově orientované?
Před objektově orientovanou existovaly pouze řetězce a celá čísla.
1 Existuje objekt.
----- [Typ znaku]-----
Glyf má system.string, což je nejzákladnější.
Paměť System.Text.StringBuilder, často se mění, velké řetězce

----- [Číselný typ]-----
system.int32, system.int64, system.decimal, system.double, System.Numerics.BigInteger infinite integer.
Běžně používané je int32, desetinné.

Zda je 1/3*3 rovno 1 nebo 0,9999, závisí na typu dat.
----- [Array]-----
system.array array
Pole system.arraylist se často mění, například neustále přepisuje, přidává nebo maze, toto je potřeba použít. Rychlost je relativně vysoká.
System.Collections.Generic.HashSet deduplikují pole. Stejně jako u setobjectu v pythonu.

-----【Form】-----
Výstup 1 příkazu. Například dir, get-process.
2. Při psaní skriptů používáme objekty a atributy k jejich konstrukci.

----- [Ostatní] -----
hashovací tabulky, soubory atd.



2 má atributy. Atributy jsou argumenty a jsou menší než řetězce. Než nebudou žádné atributy, musíme filtrovat a filtrovat řetězce pomocí [mozkově pálivé regulární], označované jako [dedukční řetězec]. Pokud máte atributy, nepotřebujete je.
3 Existuje cesta. Metodou je program, kód. Není potřeba to přepisovat sám. Netopýr rozhodně není dobrý, není možné, je tu také osobní psaní, nespolehlivé, neodvažuj se ho použít.
Metody mohou být samopsané ps-funkce, samopsané metody v ps-třídách.
Způsob, jakým píšete sami, může být dočasně [sloučen] do třídy třetí strany.
Metodu, kterou si píšete sami, lze dočasně [sloučit] do třídy .net.

Jaké jsou nevýhody objektově orientované?
Kazatel učí powershell lidem, kteří používají winxp. Ten člověk řekl, že PowerShell není dobrý, objekt je příliš náročný na paměť, a má pravdu.
V příkazové říši vracím 100 názvů souborů (řetězců) s direkcí. V PowerShellu používám dir k vrácení 100 souborových objektů a Powershell zabírá hodně paměti.
Ale teď je to jiné:
1. Zbytečný obsah by neměl existovat v proměnných. Nebo ho ihned po použití zničit, abyste snížili spotřebu paměti.
2. Ztráta paměti stačí. Protože výkon CPU už nemůže stoupnout, horečně zvyšujeme paměť ve snaze vyměnit prostor za čas.
3. Chceme výkonnější funkce a objektová orientace je dnes nejzákladnější. Který není objektově orientovaný, py, php, java, .net, c++?

Shrnutí:
1 Objekty jsou větší a náročnější na paměť než řetězce.
2. Existuje více metod pro objektovou orientaci a silnější funkce.
3 atributy jsou menší než granularita řetězce, což je velmi pohodlné na použití. Vyhnul jsem se [šílenému používání mozku pálivých pravidelných na filtrování] smyčců!


=== Šílené použití mozkově vypalujících regulárních prvků k filtrování příkladů, bat verze výchozí brány ping ===
@echo off&setlocal umožňuje zpožděné rozšiřování
Echo hledá výchozí bránu...

for /f "usebackq delims=" %%i in ('ipconfig /all') do (
echo %%i|find /i "gateway">nul|| echo %%i|find "default gateway" >nul
pokud "!errorlevel!" =="0" (
pro /f "tokeny=2 delims=:" %%a in ("%%i") do pro /f "delims= " %%m in ("%%a") do set ipgate=%%m
)
)

Výchozí brána Echo je: !ipgate!
=========== pingovat výchozí gateway.ps1============
$default gateway = (get-netroute -DestinationPrefix 0.0.0.0/0). NextHop
& ping.exe $ Výchozí brána

# test-connection $ výchozí brána
=======================






Otázka: I když je objektově orientovaná tak dobrá, odkud tyto objekty pocházejí?
Odpověď: Z knihovny .net.


---------- Kapitola 3 Úvod do .NET --------------


Otázka: Kolik verzí má .NET Core?
A:
V současnosti existují tři verze.
.NET 2.0 Nejnovější verze .NET 3.51
.NET 4.0 Nejnovější verze .NET 4.70
.NET Core 1.x Nejnovější verze .NET 1.2 pro systémy Apple, Linux a vestavěné systémy.
.NET Core 2.x Nejnovější verze .NET 2.0 pro systémy Apple, Linux a vestavěné systémy.



Otázka: Kolik funkčních větví má .net?
A:
Desktopová větev v .NET. WinForm. Pro vývoj desktopových oken.
Zvuková knihovna
asp.net v .NET a .NET Core. Knihovna funkcí webového serveru. Používal jsem k otevření B/S webového serveru.
F# v .NET a .NET Core. Obsahuje matematické knihovny, knihovny trigonometrických funkcí atd.
PowerShell v .NET a .NET Core. Obsahuje běžná rozhraní pro správu systému, jako jsou skriptové soubory.
Linux
◦Ubuntu 14.04 \ 16.04
◦CentOS/RHEL 7 a výše
◦otevřené SUSE 42 a výše
◦Arch Linux (archl inux nemá číslo verze)
◦LINUX docker container
◦Linux AppImage container (portable application single binary) https://github.com/probonopd/AppImageKit



MAC OS X
◦OS X 10.11


Otázka: Jak se .NET program (C# program) připojuje k MySQL serveru?
A:
Přejděte na oficiální web mysql a stáhněte si konektor pro .NET jazyk.
mysql-connector-net-6.9.9-noinstall.zip--->v4.5--->MySql.Data.dll
Přidejte třídu MySql.Data do .net a přidejte databázové rozhraní.



Závěr:
Na počítači s WinXP nejprve nainstalovali .net 3.51, win7 a win2008, nejprve nainstalovali .net 4.62 nebo novější.

.net existuje už mnoho let a není mnoho softwaru, který by .net podporoval více než Java. Všechny .net větve, rozhraní (databáze, WeChat atd.). )
Těm dllům, těmto knihovnám, powershellu lze říkat. Je to přesně stejné jako exe napsané v C#.


Otázka: Kromě rozhraní větve .NET, co jsou to vlastní knihovny (moduly) PowerShellu?
A:
Podívejte se prosím na další kapitolu

---------- Kapitola 4 Běžně používané vestavěné knihovny, externí knihovny a knihovny třetích stran v PowerShellu --------------

Pomoc misionářům:
Tuto kapitolu nelze rozebírat, ale je to jen seznam knihoven a manuálů. Uložte si tuto kapitolu do záložek. Po prostudování těchto knihoven budete vědět, co PowerShell dokáže.



Manuální adresa Win2012: (Nejčastěji používaný AD modul)
https://technet.microsoft.com/zh-cn/library/dn249523(v=wps.630).aspx
AD User Group Management, DHCP, DNS, tiskárna, sdílení souborů, IIS, disk, síťová karta,



exchange2016
https://technet.microsoft.com/zh-cn/library/bb124413.aspx
Active Directory 12         
Anti-spam a anti-malware 59  
Přístup klienta 100
Extension Agent 4
E-mailové adresy a adresáře 37
Federace a hybridní konfigurace  
Vysoká dostupnost  
Tok pošty  
Poštovní schránka  
Databáze poštovních schránek  
Server poštovní schránky  
Přesunout se a migrovat  
Organizace  
Povolení  
Politika a dodržování předpisů  
Bezpečnost  
Stav serveru, monitorování a výkon  
Sdílejte a spolupracujte  
Jednotné poselství  
Uživatelé 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ální stroje.


Klienti:
Služby, procesy, logy, registry, adresáře souborů, vzdálená správa. Časově omezené úkoly.



Internet:
FTP, mail, SSH klientský plug-in pro připojení k linuxovému serveru.


Text:
XML, HTML, CVS, JSON, EXCEL atd.


Text 2 hlas


Grafické rozhraní.


Microsoft Scripting Center
https://gallery.technet.microsoft.com/scrip{过滤}tcenter/


Oficiální webové stránky PowerShell software source --- oficiální knihovna PowerShell.
https://www.powershellgallery.com


Ostatní knihovny Niu X jsou všechny na Githubu. Kromě toho misionáři pravidelně vydávají [Niu x Magic Weapon] z [Hidden Foot Pavilion], což je užitečná knihovna PowerShellu od třetích stran.


---------- Kapitola 5 Začátečníci se musí naučit, jak pomoci s používáním příkazů--------------


Otázka: Jak znám verzi PowerShellu?
A:
$PSVersionTable



Otázka: Nevím, jaký modul mám, jak ho najít?
A:
get-module -ListAvailable


Otázka: Jak najdu příkazy, když znám jen jejich část?
A:
příkaz get-command *služba*



Otázka: Znám příkaz, ale nevím, jaké parametry v příkazu jsou, jak je vyjmenovat?
A:
get-help write-host -Parameter *
show-command-write-host


Otázka: Parametr znám, ale nevím, který příkaz tento parametr má, jak ho najdu?
A:
get-command -ParameterName kódování



Otázka: Jak získám pomoc s příkazem z příkazového řádku?
A:
Získejte pomoc, domluvte se

-Příklady příkladů příkazů
-online manuál




Otázka: Nevím, jakou atributovou metodu příkazu mám (neznám objekt), jak ji najít?
A:
"abc" | get-member
Datum doplnění | get-member



Otázka: Kde je čínský manuál .NET?
A:
msdn。 Nejzákladnější vlastnosti a metody řetězců jsou v manuálu.
https://msdn.microsoft.com/zh-cn/library/system.string.aspx



---------- Kapitola 6 Úvod do běžných příkazů --------------

První příkaz, který se naučíte, je dir
Otázka: Proč použít powershell dir [tj. Get-ChildItem] místo cmd dir?
A:
Objektově orientovaný, silná metoda a mnoho vlastností.
$file = dir a:\pscode\temp183\aaa.txt
$file. Celé jméno #返回全路径属性
$file. BaseName #返回文件名属性
$file. Prodloužení #返回扩展名属性
$file. LastWriteTime #返回最后写入时间属性



První syntaxe, kterou se naučíte, je syntaxe polí. $a = @(xxx příkaz)
Otázka: Někdy musíte použít [externí příkazy založené na znacích] k rozdělení návratových hodnot do polí podle jednotek chování.
A:
$a = @(ipconfig)
$a[8] #第9行


Použití get-childitems:
Přidány parametry v PowerShell 3.0 a novějších

get-childitem d:\xxx -file #过滤, pouze výstupní soubory
-Filtrování adresářů, výstup pouze adresářů
-Skryté filtrování, pouze výstup skrytý


Otázka: Otevřít soubor, segmentovat podle chování, vložit do pole?
A:
$a = Get-Content a:\pscode\temp183\aaa.txt -ReadCount 0



Otázka: Otevřít soubor jako velký řetězec a uložit celou proměnnou?
A:
$a = Get-Content a:\pscode\temp183\aaa.txt -raw


$a,$b,$c = 1,2,3


Otázka: Jak spouštěm příkazy na pozadí?
A:
V dávných dobách existoval příkaz cmd /c.
Nyní existuje PowerShell /c "příkaz", nebo PowerShell -c "příkaz",
PowerShell -soubor "script.ps1" -argument 1 aaaa -parameter 2 1234
start-process -path xxx.exe -ArgumentList '-parameter1 aaaa -parameter2 1234'


Otázka: Chci spustit skript s dalším lokálním uživatelem, ale powershell nemá runy. Exe podobné příkazy?
A:
V PowerShellu probíhá několik relací.
IP + port + uživatelské jméno + heslo = relace, stačí změnit uživatelské jméno, změnit heslo a vy můžete změnit oprávnění. Protože oprávnění jsou vázána na uživatele.
Podobně potřebuji vytvořit jen n relací k použití, aniž bych musel měnit uživatele.
Nejdůležitější new-pssession má parametr -Credential, zadejte uživatelské heslo, což není totéž jako runy. Je exe stejné? Co dalšího je SmbSession?
Takže si nemyslím, že je nutné používat runy v PowerShellu. exe。
Stačí použít tyto příkazy s relací a Credential, že?

Zkontrolujte příkazy s názvem [Credential] v názvu parametru:
get-command -ParameterName Credential

Zobrazit příkazy pomocí znaku [session] v příkazu:
get-command *session*


Otázka: Jak pošlu e-mail pomocí PowerShellu?
A:
Odeslat e-E-Předmět 'Subjekt'
-Z "tvého hotmail účtu @hotmail.com" -Na "tvůj QQ email @qq.com" '
-SmtpServer "smtp.live.com" -port 587 -useSsl -přihlašovací údaje "váš hotmail účet @hotmail.com" '
-Přílohy $Attachments -BodyAsHTML -tělo $HTML obsahu e-mailu

Poznámka:
1 použitíxxx@QQ.com+ Vaše QQ heslo + výše uvedený příkaz Posílání e-mailu nefunguje. Kvůli bezpečnosti QQ hesel Tencent vyžaduje nezávislá e-mailová hesla.  
2 Odesílání z QQ schránky není ve výchozím nastavení možné. Je vypnutý a musíte zapnout SMTP v nastavení.
3 PowerShell 3.0 a výše podporuje pouze parametry portů. U Win7 je potřeba nejdřív nainstalovat nejnovější verzi PS




Otázka: Monitorujte CPU, disk, síť, IO atd.
A:
Monitor výkonu nebo
Get-Counter načítá data o výkonnostních čítačích z místních i vzdálených počítačů.

Otázka: Jak mohu vidět, jaké předměty na counteru jsou k dispozici?
A:
Všechno je to v manuálu.
Podívejte se, jaké jsou hlavní kategorie použití:
Get-Counter -ListSet * | Sort-Object CounterSetName | Formát-Table CounterSetName


Například nyní vím, že kategorie disku je (PhysicalDisk), a pak zaškrtnu podkategorie na disku a použiji:
(Get-Counter -ListSet PhysicalDisk). Cesty




Otázka: Jak si mohu zobrazit záznamy?
A:
Prohlížeč událostí, nebo
get-eventlog



Otázka: Jak mám provádět řetězce?
A:
$cmd 1 = 'xxxx'
Invoke-Expression $cmd 1


No, hodně jsme se naučili o jednotlivých příkazech, pojďme se podívat na provádění PowerShell skriptů.


---------- Kapitola 7 PS1 Skriptování, ladění a spouštění --------------
Skript je kombinace a překryv příkazových příkazů. Scénář je lepidlo, chodit a hledat někoho, kdo zavolat, hledat kolečka, abych mohl auto sestavit. Místo výroby kol, aby je mohli používat ostatní.



Cainiao se zeptal: Jak napsat scénář?
Starý pták odpověděl:
1 Detaily problému je třeba objasnit. Například: udělejte měsíční koláčky.
2 Nápady na řešení problémů jsou také v podstatě dokončeny. Mouka a voda, náplň a napař.
3 Jaké příkazy a proměnné použít. Přidejte pět zrn, vložte je do formy a vymačkajte.
4 Piš zhruba nejdřív, piš hrubě.
5 Ladění prošlo.
6 Piš podrobně. Zvažte chybovou situaci, plus chybový kód, chybovou zprávu. Odstraňte chybový kód, který není snadno kompatibilní s nimi. Přepisujte kód, který nefunguje dobře.
Do této chvíle nemusí dobrý scénář vypadat dobře, ale měl by být velmi užitečný.
7 Jemně zpracované. Refaktoring, zápis znovu použitých útržků kódu do funkcí. Přepiš názvy proměnných tak, aby jim lidé rozuměli na první pohled. Dobře naformátujte kód a udělejte odsazení.


Otázka: Jaké IDE se používá k psaní PS1?
A:
Nejvíce se doporučuje používat Visual Studio Code a plugin PowerShell.
Funkce: Kódové výzvy, automatické doplňování, formátování kódu, odsazení pro volbu mezery nebo tabulátoru, nastavení kódování souborů.
Existuje plugin FTP-sync, který dokáže zapisovat PS1 skripty do Windows VSCode a automaticky je synchronizovat s adresářem Linuxu při uložení.



Otázka: Jaké nástroje se používají k ladění PS1?
A:
Nejvíce doporučovaný powergui life nepoužívá lokomotivu, i když je to hero, PS skript také vyskočí a nahlásí chybu!
VSCODE je také v pořádku



Otázka: Jaké nástroje používáte pro formátování kódu?
A:
Vše, co by mělo být odsazeno, je odsazeno a znaménka rovnosti jsou zarovnána.

PowerShell ISE + ISE Plugin [ISESteroids]

Instalace:
Install-Module -Název ISESteroids

Běhy ISE:
Start-Steroids





Otázka: Jaké nástroje používáte k tomu, aby byla barva kódu krásná?
A:
1 Použijte výše uvedené nástroje k formátování kódu.
2 Použijte PowerShellise + Missionary DIY barevné sladění z roku 2016.
3 Chyťte fotku. Vzniká nejpříjemnější a nejkrásněji barevný PowerShell kód na světě.

Všechny výše uvedené IDE jsou v čínštině.




Otázka: Jak pojmenovat scénář? xxx.ps1
A:
Doporučuje se začít s 1---2 písmeny a pro zbytek použít čínský název souboru. Tj. [BF zálohuje všechny staré files_ a smazá .ps1 z před 10 dnů]
Tímto způsobem nejprve napište [bf] a pak stisknete tabulátor, abyste dokončili název skriptu.




Otázka: Jak povolím povolení k provádění PowerShell skriptů?
A:
echo Následující kód lze spustit v CMD s administrátorskými oprávněními nebo v PowerShellu s administrátorskými oprávněními.
Echo pokud používám PowerShell vzdálený ovladač. Jak lokální, tak vzdálený stroj musí být provozovány s administrátorskými oprávněními.
"C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -příkaz "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
"C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -příkaz "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
& "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -příkaz "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
& "C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -příkaz "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
pauza



Otázka: Jaké jsou nevýhody lokomotivy (powergui)?
A:
Nelze nastavit barvu pozadí.




Otázka: Jaké jsou nevýhody vscode?
A:
$ a název proměnné nejsou stejné barvy.
Ladění funkcí je pomalé a někdy zaseknuté.




Otázka: Jaké jsou nevýhody ISE?
A:
Nemůžete si vybrat uložení nebo převod kódování.
Odsazení do [mezera], [tabulátor] obojí. V jiných programech pro úpravu textu se odsazení zobrazuje.




---------- Kapitola 8 Skutečný bojový výcvik --------------
Skupina 6504748 a napsala tuto část sama.

5. Příklad 1: Zapínat a vypínat službu
6. Příklad 2: Řídicí firewall (pravidlo Otevřít, Zavřít, Pravidlo)
7. Příklad 3: Nastavte politiku (například politiku hesel)



---------- kapitola 9 Máte zájem o tyto další volitelné kurzy? --------------
Příklady PowerShell skriptů, argumentů příkazového řádku pro předávání hodnot a přiřazení proměnných
http://www.cnblogs.com/piapia/p/5910255.html




Nechte PowerShell spouštět vždy pouze jeden skript (příklad vzájemného vyloučení procesů)
http://www.cnblogs.com/piapia/p/5647205.html



PowerShell rozhraní znaků, powershell plus WPF rozhraní, hra 2048
http://www.cnblogs.com/piapia/p/5531945.html


Dva crawlery v PowerShellu
http://www.cnblogs.com/piapia/p/5367556.html



PowerShell skript: generátor náhodných hesel
http://www.cnblogs.com/piapia/p/5184114.html



Příklad PowerShell rekurzivního algoritmu
http://www.cnblogs.com/piapia/archive/2013/01/29/2881011.html



PowerShell hlasový kalkulátor
http://www.cnblogs.com/piapia/archive/2012/10/20/2731506.html



1 Seznam všech souborů šifrovaných EFS. 2Dešifrovat všechny soubory šifrované EFS
http://www.cnblogs.com/piapia/p/4702514.html
Je to nástroj určený pro systémové a síťové administrátory.
Po odchodu zaměstnance z práce jeho disk předpokládá, že je zde 10 000 souborů (adresářů), z nichž 3 jsou šifrované pomocí EFS. V Exploreru jsou tyto tři soubory zelené.
Ale pokud kliknete na (10 000 katalogů) jeden po druhém, ať už je zelený nebo ne, budete vyčerpaní.
V této době správce sítě používá WIN účet zaměstnance, přihlásí se do počítače zaměstnance a použije tento skript k vypisu všech souborů šifrovaných EFS.


---------- Kapitola 10 Prosím, zeptejte se na otázku--------------
Dámy a pánové, pokud je něco k hlášení, opusťte soud bez ničeho.



----------Kapitola 11 Kapitola Linux--------------

Misionář: Pokud umíte nainstalovat linuxovou verzi PowerShellu, potřebujete jen ps1 skripty, žádné sh skripty.
Interpretace:
1 Stručně řečeno, bash má pouze syntaxi, žádné příkazy a knihovny.
2 Bash má jen 1% syntaktické funkce, PowerShell to nemůže implementovat. To je normální, žádné dva listy nejsou na světě úplně stejné.
To znamená, že potřebujete jen skript pro PS1, bez problémů.
3 bash je příliš starý, stejná funkce, Powershell lze implementovat, a také ušetří čas, například 10 000 prázdných forů, Powershell musí uložit 90 % času.
4 Naučte se používat /usr/bin/powershell místo /usr/bin/bash. Ostatní linuxové příkazy, pipeline, staré kung-fu atd. se používají úplně stejně jako v Bashu.
5 Postupně používejte objektově orientované, jednoduché a výkonné PowerShell příkazy a knihovny místo mozkově vyčerpávajících linuxových příkazů, nebo obojí. ---Toto je obecný princip, obecný náčrt.


Otázka: Které verze Linuxu mohou instalovat PowerShell?
A:
◦Ubuntu 14.04 / 16.04
◦CentOS/RHEL 7 a výše
◦otevřené SUSE 42 a výše
◦Arch Linux (archl inux nemá číslo verze)
◦LINUX docker container
◦Linux AppImage container (portable application single binary) https://github.com/probonopd/AppImageKit





Otázka: Proč se říká, že příkazová řádka ve Windows je silnější než linuxová?
A:
Příkazy v 1 win se vyvinuly do objektově orientovaného PowerShellu. Linux zatím nefunguje. Od win7 po win2012r2 evoluce končí.

2 Dříve jsem slyšel, že Unix má spoustu linuxových příkazů a je velmi výkonný. Ale teď vám říkám, že příkazy PowerShellu jsou minimálně desetkrát častější než linuxové. Každopádně, celý život jsem se nic nenaučil.

3 Linux je více závislý na grafech, s příliš málo příkazy. A příkaz win je mnohem víc než jen linux.
3.1 V jakémkoli linuxu jsou příkazy na mailovém serveru čím dál úplnější než v Exchange? Je to pohodlnější než výměna?
3.2 DNS server bind v Linuxu není tak pohodlný jako DNS příkaz win. Má bind příkaz [příkaz] k přidání ipv4 A záznamu k doménovému jménu? Ještě nejste závislí na webové grafice?
Někteří lidé říkají, že je dobré používat nsupdate. Nejde o to vytvořit text a pak ho spustit. Jaký je rozdíl mezi nahrazením [DNS zónového souboru] za sed a následným načtením [DNS zóny]?

4 V nové verzi Win, nebo v PowerShellu, je to všechno [příkaz + parametr]. A většina Linuxu je stále [sed text].
4.1 Vezměme si například IP adresu přiřazenou síťové kartě.
NMCLI připojení přidat typ ethernet con-name NEW_STATIC IFNAME ENO1234567 IP4 192.168.1.111 GW4 192.168.1.1,
Není to pohodlnější než použít sed pro scrapování souboru ifcfg-eth0?

5 Každý jazyk zpracovává data, stejně jako skriptování. S pomocí objektů je PowerShell pohodlnější než Awk. Shenma csv, excel, xml, json
SQL tabulka, NOSQL tabulka. html a podobně.




Otázka: Jak PowerShell implementuje [sed -i "s/what to look-for/replace with /g" souborové jméno]?
A:
@(Get-Content filename) -nahraďte 'aaa','bbb' | Název souboru s obsahem $aaa
To znamená, že otevřete soubor, nahraďte ho, uložte ho.



Otázka: Proč stále méně lidí používá SED v Linuxu?
A:
Argument 1: AWK může nahradit SED, ale SED nemůže nahradit AWK.
sed, tedy jednoduše najít substituci. AWK má pro a podobné nástroje pro implementaci složitého zpracování.

Argument 2: AWK používá standardní regulár a regulár v sed je stejný jako u sed, ale jeho části jsou odlišné.
Učení SED znamená, že dvě sady neslučitelných pravidelných standardů v mozku proti sobě bojují.



Otázka: Takže je správné se učit AWK?
A:
Naučit se PowerShell je jednodušší než učit se AWK.
PowerShell používá [split and then split], [if and if], where-object, string.substing(), string[-3] atd.
Rozdělte problém struny vrstvu po vrstvě. Jednodušší než běžné nezvyklosti.




Otázka: Lze v PowerShellu použít pipeline a AWK?
A:
V PowerShellu můžete volat awk, přesně stejně jako v Bashu. Stará bojová umění jsou zcela Turínské.



Otázka: Jak implementovat funkci [awk '{print $3}'] v PowerShellu?
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: Jak implementovat funkci [awk -f a.awk soubor] pomocí PowerShellu?
A:
V podstatě jde o filtrační funkci, která využívá trubku. V PowerShellu se tomu říká filtr nebo filtr.
PowerShell podporuje kombinaci příkazů + pipe + filtru. Jako v Command 1 | Filtr 1 | Příkaz 2 | Filtr 2 | Filtr 3
Filtr Filtr1
{
Funkce podobná AWK
}





Otázka: Existuje [xargs] v PowerShellu?
A:
Proměnná v potrubí se nazývá [$psitem] a její alias je [$_].
PowerShell používá foreach-object a $_ k implementaci funkce xargs.





Otázka: Existuje v PowerShellu nějaké číslo [<] [<<?
A:
Ne.
Možná je [<] symbolem zprava doleva protilidské myšlení. Mnoho příkazů v PowerShellu bylo změněno zleva doprava.
Pokud get-random < (1..100) není v PowerShellu legální, právní by měl být get-random -inputobject (1..100), tedy 1. 100 |get-random
Méně než 1 % zvláštních příkazů [musí] spoléhat na symbol [<], což lze dosáhnout vyvolání cmd v PowerShellu nebo bash (PowerShell pro Linux) v PowerShellu.
Například $a = bash -x "příkaz 1 < příkaz 2" #linux
Například $a = cmd -c "příkaz 1 < příkaz 2" #cmd




Otázka: Existuje v PowerShellu příkaz expect? Jak se připojit k Linux SSH serveru z Windows pomocí PowerShellu?
A:
1. Ano. Pro některé zvláštní a částečné potřeby odezvy dveří existují moduly třetích stran.
2 Ne. PowerShell nepoužívá příkaz expect, ale používá relaci.

Použijte Powershell + knihovnu klienta SSH + IP + port + uživatelské jméno + heslo k propojení a odesílejte příkazy do tohoto spojení. Kód je následující:
$connection 1 = New-SSHSession -ComputerName 1.1.1.1 -Port 22 -Credential aaaa #将提示输入密码
$to return = Invoke-SSHCommand -Command {cat /etc/issue} -SSHSession $Connection 1

Tato standardní funkcionalita, jako jsou (MongoDB, mysql, ssh, ftp, http, telnet atd.), má ovladače nebo moduly. ps a. .netprogram, prostřednictvím připojení k ovladači, posílá příkazy a přijímá data.
Výhody používání modulů nebo ovladačů pro odesílání a příjem [dat] jsou:
Data budou převedena do .net objektu, který bude následně převeden na PS objekt. Jinak jsou to jen provázky a [objektově orientovaná bojová umění] PS sekty jsou k ničemu.


Vezmeme si MongoDB jako příklad, jaké jsou výhody používání modulů nebo ovladačů pro posílání příkazů? Kdo mluví?
Myslím, že výhody jsou:
1 Multithreading. Vlákno na pozadí běží a nezabírá aktuální vlákno.
2. Můžeme kdykoli [odpojit se v polovině] od relace, spustit další PS kód, funkce a [kdykoli se vrátit do relace]. Skripty jsou flexibilnější na psaní a snadněji laditelné.
3session přivádí více uživatelů a různí uživatelé mohou mít různá serverová oprávnění.




Otázka: Existuje příkaz Su Runas v PowerShellu? Jak spustit příkaz jiného uživatele pomocí PowerShellu?
A:
Ne.
V PowerShellu je spouštění nativních příkazů a pipeline pro Linux bez námahy. Například:
sshaaa@127.0.0.1"Provedeno s uživatelskými AAA oprávněními, příkaz xxx"  
sshpass -p user_password sshaaa@192.168.1.1



Otázka: Dva linuxové stroje se SSHD? Jak se připojit a posílat příkazy pomocí PowerShellu?
A:
Kromě výše uvedené metody můžete také použít metodu vytvoření nové linuxové relace. (Připojeno z Linuxu na jiný SSHD)
Poznámka: Tato metoda vyžaduje úpravu souboru /etc/ssh/sshd_config. Přidejte následující řádek
Subsystém powershell powershell -sshs -NoLogo -NoProfile
Poté restartujte SSHD server.
Podrobný manuál najdete zde:
https://github.com/PowerShell/PowerShell/tree/master/demos/SSHRemoting

Pří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}


Shrnutí:
Klient Win, připojený k Linux serveru. V současnosti jsou samozřejmě vyžadovány moduly třetích stran, toto je modul v oficiální knihovně, stačí použít instalační modul PoshSSH.
Linux klient, připojený k Linux serveru. Musíte upravit soubor /etc/ssh/sshd_config.
Linux klient, připojený k Win serveru. Musíte zapnout službu na serveru. Důvěřujte serveru na klientovi.
Klient Win připojený k serveru Win. Musíte zapnout službu na serveru. Důvěřujte serveru na klientovi.


Otázka: Je v PowerShellu [grep]?
A:
Příkaz select-string se používá v PowerShellu.
Z hlediska programování mají select-string=smart, grep=stupid + zásadní chybu :mrgreen:
Když je k dispozici hlavička kusovníku, select-string automaticky rozpozná typ kódování souboru.
Pokud není hlavička BOM, není třeba měnit prostředí shellu jako linux+grep a není třeba ukládat soubory podle určitého kódu. Stačí zadat parametr -encoding podle kódování souboru.
A grep tuto funkci nemá, tedy je zde tvrdá chyba [nelze specifikovat typ kódování souboru].
Samozřejmě, grep není k ničemu, grep má některé parametry, má další unikátní funkce, select-string ne, v tomto ohledu je grep silnější než select-string.



Otázka: Existuje v PowerShellu nějaké [hodnocení]?
A:
Použijte Invoke-Expression k vykonání řetězců v PowerShellu.



Otázka: Existuje v PowerShellu ocasní -f? Je možné v reálném čase vypisovat nově generované řádky souboru.
A:
Get-Content D:\a.txt -Tail 10 -ReadCount 0 -Wait



Otázka: Chci používat malou klávesnici a také chci terminál s 256 barvami, jak by měl být XSHELL nastaven?
A:
Terminál --- Typ terminálu --- [putty-256color] nebo [export TERM=putty-256color]
Terminál --- klávesnice --- výchozí nebo Linux.

Eterm-256color to dokáže
Gnome-256color nefunguje
konsole-256color nefunguje
Putty-256color
PowerShell Missionary Původní sdílení 2017-02-15
RXVT-256COLOR nefunguje
screen-256color nefunguje
ST-256COLOR
VTE-256COLOR nefunguje
xterm-256color nefunguje
Stejný princip platí i pro SecureCRT




Otázka: Kdo je silnější, shell nebo python?
A:
Každý má své silné stránky a může se navzájem doplňovat. Ale nejsou vzájemně doplňující. Více o tom níže.


Otázka: Proč je linuxová verze PowerShellu vhodnější pro provozní a údržbářský personál pro psaní skriptů? (Ve srovnání s linuxovou verzí Pythonu)
A:
1 Python má objektově orientované funkce a je dostupná linuxová verze PowerShellu.

2 python nemá příkazový řádek.
2.1 Python nemůže být výchozím terminálem pro SSH, ale PowerShell pro Linux ano. Viz kapitola: "Dva linuxové stroje s SSHD? Jak se připojit a posílat příkazy pomocí PowerShellu? 》
2.2 Používání shell příkazů (awk, grep atd.) v pythonu je velmi nepraktické. Je potřeba přidat hodně syntaxe a kódu pro py. PowerShell pro Linux spouští příkazy awk stejně jako bash.

3 python nemá žádné potrubí. Je velmi obtížné předávat hodnoty mezi n [příkazovými programy]. Je potřeba přidat hodně syntaxe a kódu pro py. Linuxová verze PowerShellu má pipeline a spouštění příkazů awk je stejné jako bash.

4 Python má verzi 2, verze 3 není kompatibilní s rakovinou! Otázka. PowerShell pro Linux takový problém nemá.
4.1 Tyto otázky obsahují kódovací úlohy.

Závěr:
Shell příkazy jako Grep nejsou vhodné pro podporu programování, nejsou tak dobré jako kódovací problémy 4.1 výše v PowerShellu doma. Plus výše uvedených 2,3 bodů.
Linuxové lidi se kvůli tomu cítí nepříjemně, ale jen velmi málo lidí používá externí příkazy v py. [py command library] a [shell command] jsou mrtvé a v podstatě se nemohou doplňovat. Linuxová verze PS je jiná.




Otázka: Proč se říká, že PowerShell je lepší než Shell?
A:
1 PowerShell je objektově orientovaný a vlastnosti vracejí přímo dostupná data. To je mnohem méně běžné než v znakových skriptovacích jazycích (bat, shell), které vyžadují dedukce řetězců.
Narodil jsem se s méně [obsahem, kterému je třeba uniknout].
2 Substituce vyhledávání řetězců, v PowerShellu existují metody, které nevyžadují escaping, ve třídě .NET. Například:
[string]$a = 'abc\\def'
$b = $a.nahrazit('\\','kdy')
#返回: [ABC jako def]
Pro určení, zda je IP legitimní, můžete použít metodu TryParse() ve třídě IPAddress.
Stručně řečeno, doporučuji používat co nejvíce .net metod, co nejméně regexu, nebo prostě používat jednoduché běžné systémy.
3 PowerShell používá ['] jako symbol úniku. ['] se používá méně často než [\] a je mnohem méně používán jako symbol úniku.
3.1 Při psaní databázových skriptů dochází k větším konfliktům ['].
Například ['table'] bude v konfliktu s ['t], například ['biao'] bude v konfliktu s ['b], a později jsem to vyřešil pomocí ['table'].
4 ps vyhledávání a nahrazování řetězců, má běžný engine, je kompatibilní s Linuxem a také používá [\] jako únik.
Existuje však speciální funkce pro únik řetězce [[Regex]::Escape()], která se nejprve escapuje a poté se najde a nahrazí, a kód je velmi čitelný.
$Original řetězec před únikem = '\+\\&*|]'
$escaped řetězec = [regex]::escape($original řetězec před únikem)
-------------
Příklady scénářů
[string]$a = 'abc\\def'
$Original řetězec před únikem = '\'
$Escaped Řetězec = [Regex]::Escape($Original Řetězec před Escape) #[\]--->[\\]
$b = [Regex]::replace($a,$Escaped String, 'When')
$b #返回 [ABC Dangdang DEF]
-------------
5 úderů a nepravdy, každý má svůj vlastní způsob, každý má svůj únik. Společně je pro A snadné ovlivnit B a A spolkne B.
Je také snadné mít problémy při setkání s ['], ["], [\] a [*].
Je to jako mít na sobě dvě vrstvy dlouhých kalhot – jednu vrstvu si stáhnete a druhá se také hýbe, musíte se starat o jejich kompatibilitu.
Tohle je rakovina a těžko se řeší.
Ale i když je to nutné, tomuto problému se dá do určité míry vyhnout. To vyžaduje, aby osoba, která shellu napsala, opravila smradlavý problém.
[Vložte kód awk do .awk souboru zvlášť, ne do příkazového řádku]
PowerShell tento problém nemá, dej to do příkazové řádky, do skriptu, nemá to žádný efekt.








Předchozí:.net/C# používá atributy pro implementaci jednoduchého AOP
Další:.net/c# Rychlý IP Open Port Scanner v2.0 Ultimate verze
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com