Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 11695|Răspunde: 1

PowerShell Tutorial pentru începuturi - versiunea v0.3

[Copiază linkul]
Postat pe 19.04.2017 16:48:30 | | |


---------- Capitolul 1 Istoricul scriptingului Windows --------------


1 Prima generație de lilieci scriptați. A început cu win95, win98--------- și s-a încheiat în jurul anului 2008. Caracteristici: comenzi orientate pe caractere, cu linie de comandă și pipeline.
2 Script VBS de generația a doua. Caracteristici: Doar funcții, valori, apeluri.
3 Powershell script de generația a treia. Începând cu 2012, comanda a evoluat complet către orientarea pe obiecte. De exemplu, lista de sarcini și get-process sunt caracteristici repetate ale roții: orientate pe obiecte. Moștenind avantajele celor două generații anterioare de scriere.



Î: De ce să înveți PowerShell?
A:
Misionarul i-a răspuns că va studia timp de un an și cinci ani pentru a face BAT. Sintaxă simplă și funcții puternice de bibliotecă!
Singurul din lume care suportă obiecte cu comenzi pe ambele părți ale pipeline-ului. adică comanda orientată pe obiect 1 | Comanda orientată pe obiecte 2

Windows și Linux sunt diferite:
În scriptul PowerShell de pe Win,
Susține CR, LF, CRLF intră. Suportă concurența multi-threading și multi-proces.
Este ușor să încorporezi [sunet Text2], "Raportează, căpitan, discul este plin".
Integrarea unei interfețe grafice este ușoară. (Când, interfața pop-up îți cere să introduci un nume de utilizator, parolă, selectare simplă, selectare multiplă etc.) Acestea sunt geloziile scripturilor Linux.

PowerShell este diferit de Python:
Este ușor să folosești chineza în PowerShell. Nume de scriere chineză, nume variabilă, comentariu. Ghilimele simple chinezești, ghilimele duble chinezești.
Recunoaște automat codarea GBK, UTF8, Unicode. Obiecte de suport pipeline, de care scripturile Python sunt geloase.



Exemplu simplu: Sintaxă simplă 1: Magia ghilimelelor simple și duble PowerShell.
Ghilimelele simple pot fi citate cu ghilimele duble. Și invers.
Ghilimelele simple și duble pot fi @引用 cu @''.
BAT nu a funcționat.


Narator misionar:
Am pus multă gândire la designul tutorialului. Nu ai citit că partea de istorie a ceea ce am scris a fost foarte [simplă și brută]? Istoria se poartă dintr-o singură lovitură.
Dar din moment ce am spus-o, nu e o prostie, vreau doar ca elevii să fie clar că de la win7-win2008, obiectificarea scripturilor a devenit populară. Conduce la următorul capitol de explicație orientată pe obiect.
Orice tutorial introductiv PS ar trebui să menționeze diferența dintre orientat pe caracter și orientat pe obiecte. Este pur și simplu potrivit să aducem acest subiect în istoria liniei de comandă.

---------- Capitolul 2 Minunatul -------------- al orientării pe obiecte
Ce este un obiect, de ce este orientat pe obiecte și de ce Microsoft întărește roata?

Exemplul orientat pe obiecte 1:
Întrebare: Mănânc 2,2 mere pe zi, câte mere mănânc în 17 zile?
A:
Este disponibil 2.2 x 17. De asemenea, este posibil să se folosească i++ suportat de orice limbaj de scripting.
pentru ($i = 1; $i -18; $i++)
{
        $Apple = 2,2 + $Apple
        scrie-gazdă $i,$Apple
}

--------------------------------------------
De îndată ce întrebarea se schimbă, nu-ți voi spune numărul de zile, doar îți voi spune,
Mănânc 2,2 mere pe zi, câte mere am consumat între 20 ianuarie și 20 iunie 2017?
$days = ((data de obținere '2017-06-20') - (data de obținere '2017-01-20')).zile #值151


Mănânc 2,2 mere pe zi, câte mere mănânc între 20 ianuarie și 20 iunie 2020?
$days = ((get-date '2020-06-20') - (get-date '2020-01-20').zile #值152

pentru ($i=(data de obținere "2020-01-20"); $i -lt (data de obținere "2020-06-20"); $i=$i.adddays(1))
{
        $Apple = 2,2 + $Apple
        scrie-gazdă $i,$Apple
}

Concluzie: În cazul obiectului date, numărarea zilelor, orelor etc. este simplă. [for,,i++] este comun, dar nu m-am gândit niciodată că numărul i ar putea fi de tip date.

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



Care sunt avantajele orientării pe obiecte?
Înainte de orientarea pe obiecte, aveam doar șiruri și întregi.
1 Există un obiect.
----- [Tip de personaj]-----
Gliful are system.string, care este cel mai de bază.
Memorie System.Text.StringBuilder, șiruri mari care se schimbă frecvent

----- [Tip numeric]-----
system.int32, system.int64, system.decimal, system.double, System.Numerics.BigInteger întreg infinit.
Folosit frecvent este int32, zecimal.

Dacă 1/3*3 este egal cu 1 sau 0,9999 depinde de tipul de date.
----- [Array]-----
matricea system.array
Array-ul system.arraylist se schimbă frecvent, de exemplu rescrierea, adăugarea sau ștergerea mereu, trebuie să folosești acest lucru. Viteza este relativ mare.
System.Collections.Generic.HashSet array-uri de deduplicare. La fel ca obiectul set din Python.

-----【Formă】-----
1 ieșire de comandă. De exemplu, dir, get-process.
2. Când scriem scripturi, folosim obiecte și atribute pentru a construi.

----- [Alții] -----
Tabele hash, fișiere etc.



2 are atribute. Atributele sunt argumente și sunt mai mici decât șirurile. Înainte să nu existe atribute, trebuie să filtrăm și să filtrăm șirurile cu [brain burning regular], denumite [șirul de deducție]. Dacă ai atribute, nu ai nevoie de ele.
3 Există o cale. Metoda este programul, codul. Nu e nevoie să rescrii tu însuți. Lilac cu siguranță nu este bun, nu există nicio șansă, există și o scriere personală, nesigură, nu îndrăznești să o folosești.
Metodele pot fi funcții ps auto-scrise, metode auto-scrise în clasele ps.
Metoda pe care o scrii singur poate fi temporar [fuzionată] într-o clasă terță.
Metoda pe care o scrii singur poate fi temporar [fuzionată] în clasa .net.

Care sunt dezavantajele orientării pe obiecte?
Predicatorul predă PowerShell celor care folosesc winxp. Persoana a spus că PowerShell nu este bun, obiectul consumă prea multă memorie, și are dreptate.
În cmd returnez 100 de nume de fișiere (șiruri) cu dir. În PowerShell, folosesc dir pentru a returna 100 de obiecte de fișier, iar Powershell ocupă multă memorie.
Dar acum este diferit:
1. Conținutul inutil nu ar trebui să existe în variabile. Sau să-l distrugă imediat după utilizare pentru a reduce consumul de memorie.
2. Pierderea memoriei este suficientă. Pentru că performanța procesorului nu mai poate crește, creștem frenetic memoria în încercarea de a schimba spațiu pentru timp.
3. Vrem funcționalități mai puternice, iar orientarea pe obiecte este cea mai de bază în zilele noastre. Care nu este orientată pe obiecte, py, php, java, .net, c++?

Rezumat:
1 Obiectele sunt mai mari și consumă mai mult timp de memorie decât șirurile.
2. Există mai multe metode pentru orientarea pe obiect și funcții mai puternice.
3 atribute sunt mai mici decât granularitatea șirurilor, ceea ce este extrem de convenabil de folosit. Am evitat [folosirea nebunească a sforilor normale care arde creierul pentru filtrare]!


=== Folosirea nebunească a obișnuitelor care ard creierul pentru a filtra exemple, versiunea bat a gateway-ului implicit ping ===
@echo off&set, local enableableedexpansion
Echo caută gateway-ul implicit...

pentru /f "usebackq delims=" %%i în ('ipconfig /all') do (
echo %%i|find /i "gateway">nul|| echo %%i|find "default gateway" >nul
dacă "!errorlevel!" =="0" (
pentru /f "tokens=2 delims=:" %%a în ("%%i") faceți pentru /f "delims= " %%m în ("%%a") setați ipgate=%%m
)
)

Gateway-ul implicit echo este: !ipgate!
=========== ping gateway.ps1 implicit============
$default gateway = (get-netroute -DestinationPrefix 0.0.0.0/0). NextHop
&ping.exe $ Gateway implicit

# conexiune de test $ gateway implicit
=======================






Î: Chiar dacă orientarea pe obiecte este atât de bună, de unde provin aceste obiecte?
R: Din biblioteca .net.


---------- Capitolul 3 Introducere în -------------- .NET


Î: Câte ramuri de versiune are .NET Core?
A:
În prezent există trei versiuni.
.NET 2.0 Cea mai recentă versiune a .NET 3.51
.NET 4.0 Cea mai recentă versiune a .NET 4.70
.NET Core 1.x Cea mai recentă versiune a .NET 1.2 pentru sistemele Apple, Linux și sisteme încorporate.
.NET Core 2.x Cea mai recentă versiune a .NET 2.0 pentru sistemele Apple, Linux și sisteme embedded.



Î: Câte ramuri funcționale are .net?
A:
Ramura desktop în .NET. WinForm. Pentru dezvoltarea de ferestre desktop.
Bibliotecă de sunete
asp.net în .NET și .NET Core. Bibliotecă de funcții pentru serverul web. Obișnuiam să deschid un server web B/S.
F# în .NET și .NET Core. Conține biblioteci matematice, biblioteci de funcții trigonometrice etc.
PowerShell în .NET și .NET Core. Conține interfețe comune de gestionare a sistemului, cum ar fi fișierele script.
Linux
◦Ubuntu 14.04 \ 16.04
◦CentOS/RHEL 7 și versiuni superioare
◦deschide SUSE 42 și mai sus
◦Arch Linux (archl inux nu are număr de versiune)
◦LINUX container docker
◦Container Linux AppImage (aplicație portabilă binară unică) https://github.com/probonopd/AppImageKit



MAC OS X
◦OS X 10.11


Î: Cum se conectează un program .NET (program C#) la un server MySQL?
A:
Accesează site-ul oficial mysql pentru a descărca conectorul pentru limbajul .NET.
mysql-connector-net-6.9.9-noinstall.zip--->v4.5--->MySql.Data.dll
Adaugă clasa MySql.Data în .net și adaugă interfața bazei de date.



Concluzie:
Calculatorul WinXP instalează mai întâi .net 3.51, Windows 7 și Windows 2008, apoi instalează mai întâi .net 4.62 sau mai mult.

.NET există de mulți ani și nu există prea multe programe care să suporte .NET în afară de Java. Toate ramurile .net, interfețele (baze de date, WeChat etc.). )
Acele DLL-uri, acele biblioteci, PowerShell pot fi numite. Este exact același cu exe-ul scris în C#.


Î: Pe lângă interfața ramurilor .NET, care sunt propriile biblioteci (module) ale PowerShell?
A:
Vă rugăm să vedeți următorul capitol

---------- Capitolul 4 Biblioteci încorporate, biblioteci externe și biblioteci terțe utilizate frecvent în PowerShell --------------

Ajutor misionar:
Acest capitol nu poate fi discutat, dar este doar o listă de biblioteci și manuale. Adaugă acest capitol la favorite. După ce te uiți la aceste biblioteci, vei ști ce poate face PowerShell.



Adresă manuală Win2012: (Cel mai frecvent folosit modul AD)
https://technet.microsoft.com/zh-cn/library/dn249523(v=wps.630).aspx
AD Managementul grupurilor de utilizatori, DHCP, DNS, Imprimantă, Partajare fișiere, IIS, Disc, NIC,



exchange2016
https://technet.microsoft.com/zh-cn/library/bb124413.aspx
Active Directory 12         
Anti-Spam și Anti-Malware 59  
Acces client 100
Agent de extensie 4
Adrese de email și agende de adrese 37
Federație și configurație hibridă  
Disponibilitate ridicată  
Flux de corespondență  
Cutia poștală  
Bază de date cu cutii poștale  
Server de cutie poștală  
Mutare și migrare  
Organizare  
Permisiuni  
Politică și conformitate  
Securitate  
Sănătatea, monitorizarea și performanța serverului  
Distribuie și colaborează  
Mesaj Unificat  
Utilizatori și grupuri  



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 și mașini virtuale de nivel enterprise.


Clienți:
Servicii, procese, jurnale, registre, directoare de fișiere, management la distanță. Sarcini cronometrate.



Internet:
FTP, mail, plug-in client SSH pentru conexiunea serverului Linux.


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


Voce text 2


Interfață grafică.


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


Sursa software-ului PowerShell site-ul oficial --- biblioteca oficială PowerShell.
https://www.powershellgallery.com


Celelalte biblioteci Niu x sunt toate pe github. În plus, misionarii publică regulat [Niu x Magic Weapon] de la [Hidden Foot Pavilion], care este o bibliotecă utilă de la terți pentru PowerShell.


---------- Capitolul 5 Începătorii trebuie să învețe cum să ajute la folosirea comenzilor--------------


Î: Cum știu versiunea PowerShell?
A:
$PSVersionTable



Î: Nu știu modulul, cum să-l găsesc?
A:
get-module -ListAvailable


Î: Cum găsesc comenzi când știu doar o parte din ele?
A:
get-command *serviciu*



Î: Știu comanda, dar nu știu ce parametri sunt în comandă, cum să listez parametrii?
A:
get-help write-host -Parameter *
show-command write-host


Î: Știu parametrul, dar nu știu care comandă are acest parametru, cum găsesc comanda?
A:
Codare get-command -ParameterName



Î: Cum pot obține ajutor cu o comandă din linia de comandă?
A:
cer-ajutor-obține-întâlnire

-Exemple exemple de comenzi
- Manual online online




Î: Nu știu metoda de atribut a comenzii (nu știu obiectul), cum să o găsesc?
A:
"ABC" | membru get-
Get-Date | membru get-



Î: Unde este manualul chinezesc .NET?
A:
msdn。 Cele mai de bază proprietăți și metode ale stringurilor se găsesc în manual.
https://msdn.microsoft.com/zh-cn/library/system.string.aspx



---------- Capitolul 6 Introducere în comenzile comune --------------

Prima comandă de învățat este dir
Î: De ce să folosești powershell dir [adică Get-ChildItem] în loc de cmd dir?
A:
Orientat spre obiecte, metodă puternică și multe atribute.
$file = dir a:\pscode\temp183\aaa.txt
$file. Nume complet #返回全路径属性
$file. BaseName #返回文件名属性
$file. Extensie #返回扩展名属性
$file. LastWriteTime #返回最后写入时间属性



Prima sintaxă de învățat este sintaxa pe tablou. $a = @(xxx comandă)
Î: Uneori trebuie să folosești [comenzi externe bazate pe caractere] pentru a împărți valorile returnate în tablouri pe unități de comportament.
A:
$a = @(ipconfig)
$a[8] #第9行


Utilizarea get-childitem:
Parametri adăugați în PowerShell 3.0 și versiuni ulterioare

Fișierul get-childitem d:\xxx -#过滤, doar fișierele de ieșire
-Filtrarea directoarelor, directoarele doar de ieșire
-Filtrare ascunsă, doar ieșire ascunsă


Î: Deschide un fișier, segmentează după comportament, pune-l într-un tablou?
A:
$a = Get-Content a:\pscode\temp183\aaa.txt -ReadCount 0



Î: Deschide un fișier, ca un șir mare, și stochează întreaga variabilă?
A:
$a = Get-Content a:\pscode\temp183\aaa.txt -raw


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


Î: Cum rulez comenzi în fundal?
A:
Există o "comandă" cmd /c în vremuri străvechi.
Acum există powershell /c "comandă", sau powershell -c "comandă",
PowerShell -fișier "script.ps1" -argument 1 aaaa -parametru 2 1234
start-process -path xxx.exe -ArgumentList '-parametru1 aaaa -parametru2 1234'


Î: Vreau să rulez scriptul cu un alt utilizator local, dar PowerShell nu are runas. Comenzi similare pentru exe?
A:
Există diverse sesiuni în PowerShell.
IP + port + username + parolă = o sesiune, trebuie doar să schimb numele de utilizator, parola și poți schimba permisiunile. Pentru că permisiunile sunt legate de utilizator.
În mod similar, trebuie să creez doar n sesiuni pentru a le folosi, fără să schimb utilizatorul.
Cel mai important new-pssession are parametrul -Credential, introdu parola utilizatorului, care nu este același lucru cu runas. Exe este la fel? Ce altceva mai este SmbSession?
Deci nu cred că este necesar să folosești rune în PowerShell. exe。
Trebuie doar să folosești acele comenzi cu session și Credential, nu?

Verificați comenzile cu numele [Credential] în numele parametrului:
comanda get-order -ParameterName Credential

Vizualizați comenzile cu caracterul [session] în comandă:
get-command *sesiune*


Î: Cum trimit un e-mail folosind PowerShell?
A:
Trimite-mesajMailMesaj -Subiect 'Subiect'
-De la "contul tău hotmail @hotmail.com" -La "emailul tău QQ @qq.com" '
-SmtpServer "smtp.live.com" -port 587 -useSsl -acreditare "contul tău hotmail @hotmail.com" '
-Atașamente$Attachments -BodyAsHTML -corpul $HTML conținutul emailului

Notă:
1 utilizarexxx@QQ.com+ Parola ta QQ + comanda de mai sus Trimiterea unui email nu funcționează. Pentru securitatea parolelor QQ, Tencent cere parole de email independente.  
2 Trimiterea din cutia poștală QQ nu este posibilă implicit. Este dezactivat și trebuie să activezi SMTP în setări.
3 PowerShell 3.0 și versiunile superioare suportă doar parametri de port. Pentru Windows 7, trebuie să instalezi mai întâi cea mai recentă versiune de PS




Î: Monitorizează CPU-ul Win, disc, rețea, IO, etc.
A:
Monitor de performanță sau
Get-Counter preia datele contoarelor de performanță atât de pe calculatoare locale, cât și de la distanță.

Î: Cum pot vedea ce obiecte de la contor sunt disponibile?
A:
Totul este în manual.
Verificați care sunt principalele categorii de utilizări:
Get-Counter -ListSet * | Sort-Object CounterSetName | Format-Table CounterSetName


De exemplu, acum știu că categoria discului este (PhysicalDisk), apoi verific subcategoriile din disc, folosesc:
(Get-Counter -ListSet PhysicalDisk). Trasee




Î: Cum pot vizualiza jurnalele?
A:
Vizualizator de evenimente, sau
get-eventlog



Î: Cum execut stringurile?
A:
$cmd 1 = 'xxxx'
Invocare-Expresie $cmd 1


Ei bine, am învățat multe despre comenzile individuale, să aruncăm o privire la execuția scripturilor Powershell.


---------- Capitolul 7 Scripting, Depanare și Rulare a Capitolului 7 PS1 --------------
Un script este o combinație și o suprapunere a instrucțiunilor de comandă. Scenariul este lipici, mergi prin jur căutând pe alții pe care să-i suni, caută roți pentru a asambla mașina. În loc să faci roți, pentru ca alții să le folosească.



Cainiao a întrebat: Cum să scrii un scenariu?
Bătrâna pasăre a răspuns:
1 Detaliile problemei trebuie clarificate. De exemplu: fă prăjituri cu lună.
2 Ideile de rezolvare a problemelor sunt, de asemenea, practic finalizate. Făină și apă, pune umplutura, aburește la abur.
3 Ce comenzi și variabile să folosești. Adaugă cinci boabe, pune-le într-o matriță și stoarce.
4 Scrie aproximativ mai întâi, scrie aproximativ.
5 Depanare a trecut.
6 Scrie în detaliu. Ia în considerare situația eroarei, plus codul de eroare, mesajul de eroare. Eliminați codul predispus la eroare care nu este ușor compatibil. Rescrie codul care nu performează bine.
Până în acest punct, un scenariu bun poate să nu arate bine, dar ar trebui să fie foarte util.
7 Fin lucrat. Refactorizare, scrierea fragmentelor de cod reutilizate în funcții. Rescrie numele variabilelor astfel încât oamenii să le poată înțelege dintr-o privire. Formatează bine codul și fă indentarea.


Î: Ce IDE este folosit pentru a scrie PS1?
A:
Cel mai recomandat este să folosești Visual Studio Code, plus plug-in-ul PowerShell.
Caracteristici: Prompturi de cod, completare automată, formatare a codului, indentare pentru a alege spațiu sau tab, setări pentru codificarea fișierelor.
Există un plugin numit FTP-sync, care poate scrie scripturi PS1 în VSCode din Windows și le poate sincroniza automat cu directorul Linux când este salvat.



Î: Ce unelte sunt folosite pentru depanarea PS1?
A:
Cea mai recomandată viață powergui nu folosește o locomotivă, chiar dacă este un erou, scriptul PS va sări și va raporta o eroare!
VSCODE este de asemenea în regulă



Î: Ce instrumente folosiți pentru formatarea codului?
A:
Tot ce ar trebui indentat este infundat, iar semnele egale sunt aliniate.

PowerShell ISE + ISE Plugin [ISESteroids]

Instalare:
Install-Module -Nume ISESteroids

ISE funcționează:
Start-Steroids





Î: Ce unelte folosești pentru a face ca codul să fie frumos de culoare?
A:
1 Folosiți instrumentele de mai sus pentru a formata codul.
2 Folosește PowerShellise + Missionary DIY Color Matching Edition 2016.
3 Ia poza. Este produs cel mai plăcut și frumos colorat cod PowerShell din lume.

Toate IDE-urile de mai sus sunt în chineză.




Î: Cum numesc un scenariu? xxx.ps1
A:
Se recomandă să începi cu 1---2 litere și să folosești numele fișierului chinezesc pentru restul. adică [BF face backup la toate files_ vechi și șterge .ps1 de acum 10 zile]
Astfel, tastează mai întâi [bf], apoi apasă tab pentru a completa numele scriptului.




Î: Cum activez permisiunea de execuție a scriptului PowerShell?
A:
echo Următorul cod poate fi rulat în cmd cu privilegii de administrator sau în PowerShell cu privilegii de administrator.
Echo dacă folosești o telecomandă PowerShell Remoting. Atât mașina locală, cât și cea la distanță trebuie rulate cu privilegii de administrator.
"C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -comanda "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
"C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -comanda "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
& "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -comanda "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
& "C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -comanda "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
Pauză



Î: Care sunt dezavantajele locomotivei (powergui)?
A:
Nu se poate seta culoarea de fundal.




Î: Care sunt dezavantajele vscode?
A:
$ și numele variabilei nu au aceeași culoare.
Funcțiile de depanare sunt lente și uneori blocate.




Î: Care sunt dezavantajele ISE?
A:
Nu poți alege să salvezi sau să convertești codarea.
Indentează la [spațiu], [tab] ambele. În alte programe de editare a textului, se afișează indentarea.




---------- Capitolul 8 Exercițiu de luptă propriu-zis --------------
Grupul a 6504748 și a scris această parte singuri.

5. Exemplul 1: Pornește și dezactivează serviciul
6. Exemplul 2: Control Firewall (Deschide, Închide, Regulă)
7. Exemplul 3: Setați o politică (de exemplu politica de parolă)



---------- Capitolul 9 Aceste cursuri opționale suplimentare Ești interesat? --------------
Scripturi PowerShell, argumente pe linia de comandă transmit valori și exemple de variabile de bin-bound
http://www.cnblogs.com/piapia/p/5910255.html




Lăsăm Powershell să ruleze doar un singur script pe rând (exemplu de excludere mutuală a proceselor)
http://www.cnblogs.com/piapia/p/5647205.html



interfață powershell pentru personaje, interfață powershell plus WPF, joc 2048
http://www.cnblogs.com/piapia/p/5531945.html


Două crawlere în PowerShell
http://www.cnblogs.com/piapia/p/5367556.html



Script PowerShell: Generator de parole aleatorii
http://www.cnblogs.com/piapia/p/5184114.html



Exemplu de algoritm recursiv PowerShell
http://www.cnblogs.com/piapia/archive/2013/01/29/2881011.html



Calculatorul vocal PowerShell
http://www.cnblogs.com/piapia/archive/2012/10/20/2731506.html



1 Listați toate fișierele criptate EFS. 2Decriptarea tuturor fișierelor criptate EFS
http://www.cnblogs.com/piapia/p/4702514.html
Este un instrument scris pentru administratorii de sistem și administratorii de rețea.
După ce un angajat își părăsește locul de muncă, discul său presupune că există 10.000 de fișiere (directoare), dintre care 3 directoare de fișiere criptate prin EFS. În Explorer, aceste trei fișiere sunt verzi.
Dar dacă dai click pe (10.000 de cataloage) unul câte unul, indiferent dacă este verde sau nu, vei fi epuizat.
În acest moment, administratorul de rețea folosește contul WIN al angajatului, se conectează la PC-ul angajatului și folosește acest script pentru a lista toate fișierele criptate EFS.


---------- Capitolul 10 Vă rog să puneți o întrebare--------------
Doamnelor și domnilor, dacă este ceva de raportat, părăsiți instanța fără nimic.



----------Capitolul 11 Capitolul Linux--------------

Missionary: Atâta timp cât poți instala versiunea Linux a PowerShell, ai nevoie doar de scripturi PS1, nu de scripturi SH.
Interpretare:
1 Pe scurt, bash are doar sintaxă, fără comenzi și biblioteci.
2 bash are doar 1% funcții de sintaxă, PowerShell nu poate implementa asta. Este normal, nu există două frunze exact la fel în lume.
Asta înseamnă că ai nevoie doar de scriptul PS1, fără sh.
3 bash este prea vechi, aceeași funcție, Powershell poate fi implementat și poate economisi timp, de exemplu 10.000 de fors goale, Powershell trebuie să economisească 90% din timp.
4 Învață să folosești /usr/bin/powershell în loc de /usr/bin/bash. Alte comenzi Linux, pipeline-uri, vechi kung fu etc., sunt folosite exact la fel ca în bash.
5 Folosiți treptat comenzi și biblioteci PowerShell orientate pe obiecte, simple și puternice, în loc de comenzi Linux care consumă epuizarea creierului, sau ambele. ---Acesta este principiul general, schița generală.


Î: Ce versiuni de Linux pot instala PowerShell?
A:
◦Ubuntu 14.04 / 16.04
◦CentOS/RHEL 7 și versiuni superioare
◦deschide SUSE 42 și mai sus
◦Arch Linux (archl inux nu are număr de versiune)
◦LINUX container docker
◦Container Linux AppImage (aplicație portabilă binară unică) https://github.com/probonopd/AppImageKit





Î: De ce se spune că linia de comandă a Windows este mai puternică decât Linux?
A:
Comenzile din 1 win au evoluat în PowerShell orientat pe obiecte. Linux încă nu funcționează. De la win7 la win2012r2, evoluția se încheie.

2 Obișnuiam să aud că Unix are multe comenzi Linux și este foarte puternic. Dar acum îți spun că comenzile Powershell sunt de cel puțin zece ori mai multe decât comenzile Linux. Oricum, nu am învățat toată viața mea.

3 Linux depinde mai mult de grafic, cu prea puține comenzi. Iar comanda de câștig este mult mai mult decât Linux.
3.1 În orice Linux, comenzile din serverul de email sunt din ce în ce mai complete decât în Exchange? Mai convenabil decât schimbul?
3.2 Legătura serverului DNS din Linux nu este la fel de convenabilă ca comanda DNS Win. Are bind o comandă [pentru a adăuga o înregistrare IPv4 A la un nume de domeniu? Nu depinde încă de grafica web?
Unii spun să folosești nsupdate. Nu este vorba despre a crea un text și apoi a rula textul. Care este diferența dintre a înlocui [fișierul de zonă DNS] cu sed și apoi a reîncărca [zona DNS]?

4 În noua versiune de win, sau în powershell, totul este [comandă + parametru]. Și cea mai mare parte a Linux este încă [text sed].
4.1 Luați ca exemplu adresa IP atribuită plăcii de rețea.
Conexiunea NMCLI Add Tip Ethernet Con-Name NEW_STATIC ifname ENO1234567 IP4 192.168.1.111 GW4 192.168.1.1,
Nu este mai convenabil decât să folosești sed pentru a extrage fișierul ifcfg-eth0?

5 Orice limbaj procesează date, la fel și scriptingul. Cu ajutorul obiectelor, PowerShell este mai convenabil decât awk. Shenma csv, excel, xml, json
Tabel SQL, tabel NOSQL. html, etc.




Î: Cum implementează PowerShell [sed -i "s/ce să cauți/înlocuiești cu /g"?
A:
@(Nume fișier Get-Content) -înlocuiește 'aaa', 'bbb' | Nume de fișier set-Content $aaa
Adică, deschid fișierul, îl înlocuiesc, salvează fișierul.



Î: De ce folosesc din ce în ce mai puțini oameni SED în Linux?
A:
Argument 1: AWK poate înlocui SED, dar SED nu poate înlocui AWK.
sed, adică, pur și simplu găsește înlocuirea. AWK are pentru a implementa procesări complexe.

Argument 2: AWK folosește regularul standard, iar regularul lui sed este același cu cel al sed, dar părțile sunt diferite.
Învățarea SED înseamnă că două seturi de standarde regulate incompatibile în creier se luptă între ele.



Î: Deci e corect să înveți AWK?
A:
Să înveți PowerShell este mai ușor decât să înveți AWK.
PowerShell folosește [split și apoi split], [if și if], where-object, string.substing(), string[-3], etc.
Descompune problema stringurilor strat cu strat. Mai simplu decât Awk obișnuit.




Î: Pot fi folosite pipeline-urile și AWK în PowerShell?
A:
Poți chema awk în PowerShell, exact la fel ca în Bash. Artele marțiale vechi sunt complet Torino.



Î: Cum să implementezi funcția [awk '{print $3}'] în PowerShell?
A:
($line -split "\s+|\t+") [0] #第一行
($line -split "\s+|\t+") [2] #第三行       

Get-Content /xxx/yyy.txt | foreach-object {$_.split()[2]} #awk '{print $3}'


Î: Cum pot implementa funcția [fișier awk -f a.awk] folosind PowerShell?
A:
Practic, aceasta este o funcție de filtrare care folosește o conductă. În PowerShell, acest lucru se numește filtru sau filtru.
PowerShell suportă combinația de comandă + țeavă + filtru. Ca în Comanda 1 | Filtrul 1 | Comandă 2 | Filtru 2 | Filtrul 3
filtru filtru1
{
Funcționalitate asemănătoare AWK
}





Î: Există [xargs] în PowerShell?
A:
Variabila pipe folosită în conductă se numește [$psitem], iar aliasul său este [$_].
PowerShell folosește foreach-object și $_ pentru a implementa funcția xarg-urilor.





Î: Există un număr [<] [<<] în PowerShell?
A:
Nu.
Poate că simbolul [<] de la dreapta la stânga este gândirea anti-umană. Multe comenzi din PowerShell au fost schimbate în stânga spre dreapta.
Dacă get-random < (1..100) nu este legal în PowerShell, cel legal ar trebui să fie get-random -inputobject (1..100), sau 1. 100 |get-random
Mai puțin de 1% dintre comenzile ciudate [trebuie] să se bazeze pe simbolul [<], care poate fi realizat prin apelarea cmd în PowerShell sau bash (PowerShell pentru Linux) în PowerShell.
De exemplu, $a = bash -x "comanda 1 < comanda 2" #linux
De exemplu, $a = cmd -c "comanda 1 < comanda 2" #cmd




Î: Există o comandă de așteptare în PowerShell? Cum să te conectezi la un server SSH Linux din Win cu PowerShell?
A:
1. Da. Pentru unele nevoi ciudate și parțiale de răspuns la uși, există module terțe.
2 Nu. PowerShell nu folosește comanda de așteptare, ci o sesiune.

Folosește Powershell + biblioteca client SSH + IP + port + nume utilizator + parolă pentru a se combina într-o conexiune și a trimite comenzi către această conexiune. Codul este următorul:
$connection 1 = New-SSHSesion -Nume computer 1.1.1.1 -Port 22 -Acreditare aaaa #将提示输入密码
$to return = Invoke-SSHCommand -Comandă {cat /etc/issue} -SSHSession $Connection 1

Această funcționalitate standard, cum ar fi (MongoDB, mysql, ssh, ftp, http, telnet etc.), are drivere sau module. PS și. .netprogram, prin conexiunea driverului, trimite comenzi și acceptă date.
Beneficiile utilizării modulelor sau driverelor pentru a trimite și primi [date] sunt:
Datele vor fi convertite într-un obiect .net, care la rândul său va fi transformat într-un obiect PS. Altfel, totul este vorba de corzi, iar [artele marțiale orientate pe obiect] ale sectei PS sunt inutile.


Luând MongoDB ca exemplu, care sunt avantajele folosirii modulelor sau driverelor pentru a trimite comenzi? Cine vorbește?
Simt că beneficiile sunt:
1 Multithreading. Firul de fundal rulează și nu ocupă firul curent.
2. Putem [deconecta la jumătatea drumului] de la sesiune oricând, executa alte coduri PS, funcții și [revenim la sesiune oricând]. Scripturile sunt mai flexibile de scris și ușor de depanat.
3session aduce mai mulți utilizatori, iar utilizatori diferiți pot avea permisiuni diferite pentru server.




Î: Există su, runas command în PowerShell? Cum să rulezi comanda altui utilizator cu PowerShell?
A:
Nu.
În PowerShell, rularea comenzilor native Linux și a pipeline-urilor este fără efort. De exemplu:
sshaaa@127.0.0.1"Executat cu privilegii AAA de utilizator, comanda xxx"  
sshpass -p user_password sshaaa@192.168.1.1



Î: Două mașini Linux cu SSHD? Cum să conectezi și să trimiți comenzi cu PowerShell?
A:
Pe lângă metoda de mai sus, poți folosi și metoda de creare a unei noi sesiuni Linux. (Conectat de la Linux la un alt SSHD)
Notă: Această metodă necesită editarea fișierului /etc/ssh/sshd_config. Adaugă următoarea frază
Subsystem powershell powershell -sshs -NoLogo -NoProfile
După aceea, repornește serverul SSHD.
Manualul detaliat este aici:
https://github.com/PowerShell/PowerShell/tree/master/demos/SSHRemoting

Comanda:
$connect 2 = New-PSSession -Host Name 127.0.0.1 -UserName user006 #手动输入密码或用-Opțiunea KeyFilePath
invoke-command -session $connect 2 -scrip{filter}tBlock {new-item ~/ccc.txt}


Rezumat:
Clientul Win, conectat la serverul Linux. În prezent, modulele terțe sunt necesare, desigur, acesta este un modul din biblioteca oficială, doar folosește modulul de instalare PoshSSH.
Client Linux, conectat la serverul Linux. Trebuie să editezi fișierul /etc/ssh/sshd_config.
Clientul Linux, conectat la serverul Win. Trebuie să activezi serviciul pe server. Ai încredere în serverul clientului.
Clientul Win, conectat la serverul Win. Trebuie să activezi serviciul pe server. Ai încredere în serverul clientului.


Î: Există [grep] în PowerShell?
A:
Comanda select-string este folosită în powershell.
Doar din punct de vedere al codării, select-string=smart, grep=stupid + au un defect clar :mrgreen:
Când există un antet BOM, select-string-ul recunoaște automat tipul de codare a fișierului.
Când nu există un antet BOM, nu este nevoie să schimbi mediul shell ca linux+grep și nu este nevoie să salvezi fișierele conform unui anumit cod. Trebuie doar să specifici parametrul de codare -encoding conform codării fișierului.
Iar grep nu are această funcție, adică există un defect grav de [imposibilitatea de a specifica tipul de codare a fișierului].
Desigur, grep nu este inutil, grep are niște parametri, are funcții unice suplimentare, select-string nu, aici grep este mai puternic decât select-string.



Î: Există o [evaluare] în PowerShell?
A:
Folosește Invoke-Expression pentru a executa șiruri în Powershell.



Î: Există un -f de coadă în PowerShell? Este posibil să se genereze noile linii generate ale unui fișier în timp real.
A:
Get-Content D:\a.txt -Tail 10 -ReadCount 0 -Wait



Î: Vreau să folosesc o tastatură mică și vreau și un terminal de 256 de culori, deci cum ar trebui configurat xshell?
A:
Terminal --- Terminal Tip --- [plastilă-256color] sau [export TERM=plastilă-256color]
Terminalul --- tastatura --- implicit sau Linux.

Eterm-256color poate
Gnome-256Color nu funcționează
Konsole-256Color nu funcționează
Putty-256Color
PowerShell Misionar Distribuție Originală 2017-02-15
RXVT-256COLOR nu funcționează
screen-256color nu funcționează
ST-256COLOR
VTE-256COLOR nu funcționează
Xterm-256Color nu funcționează
Același principiu se aplică și pentru SecureCRT




Î: Cine este mai puternic, shell sau python?
A:
Fiecare are propriile puncte forte și se poate completa reciproc. Dar nu sunt complementare. Mai multe detalii mai jos.


Î: De ce este versiunea Linux a PowerShell mai potrivită pentru ca personalul de operațiuni și mentenanță să scrie scripturi? (Comparativ cu versiunea Linux de Python)
A:
1 Python are funcții orientate pe obiecte, iar versiunea Linux a PowerShell este disponibilă.

2 Python nu are linie de comandă.
2.1 Python nu poate fi terminalul implicit pentru SSH, dar PowerShell pentru Linux poate. Vezi capitolul: "Două mașini Linux cu SSHD? Cum să conectezi și să trimiți comenzi cu PowerShell? 》
2.2 Folosirea comenzilor shell (awk, grep etc.) în python este foarte incomodă. Trebuie să adaug multă sintaxă și cod PY. PowerShell pentru Linux rulează comenzile awk exact ca în bash.

3 Python nu are pipe-uri. Este foarte dificil să transmiți valori între n [programe de linie de comandă]. Trebuie să adaug multă sintaxă și cod PY. Versiunea Linux a PowerShell are pipeline-uri, iar rularea comenzilor awk este la fel ca bash.

4 Python are versiunea 2, versiunea 3 nu este compatibilă cu cancerul! Întrebare. PowerShell pentru Linux nu are o astfel de problemă.
4.1 Aceste întrebări conțin probleme de programare.

Concluzie:
Comenzile shell precum grep nu sunt bune pentru suport de programare, nu la fel de bune ca problemele de codare din 4.1 de mai sus în PowerShell acasă. Plus cele 2,3 puncte de mai sus.
Îi face pe cei din Linux să se simtă inconfortabil, dar foarte puțini folosesc comenzi externe în py. [biblioteca comenzilor PY] și [comanda shell] sunt moarte și practic nu se pot completa reciproc. Versiunea Linux a PS este diferită.




Î: De ce se spune că powershell este mai bun decât shell?
A:
1 PowerShell este orientat pe obiecte, iar proprietățile returnează date disponibile direct. Acest lucru este mult mai rar frecvent decât în limbajele de scriptare a caracterelor (bat, shell) care necesită deducții de șiruri.
Născut cu mai puțin [conținut de care trebuie scăpat].
2 Substituție prin căutare a șirurilor, există metode în PowerShell care nu necesită scăpare, în clasa .NET. De exemplu:
[string]$a = 'abc\\def'
$b = $a.replace('\\','when')
#返回: [ABC ca apărător]
Pentru a determina dacă un IP este legitim, poți folosi metoda TryParse() în clasa IPAddress.
Pe scurt, sugestia mea este să folosești cât mai multe metode .net, să folosești cât mai puțin regex sau să folosești doar regulate simple.
3 PowerShell folosește ['] ca simbol de evadare. ['] este folosit mai rar decât [\] și mult mai puțin folosit ca simbol de evadare.
3.1 Când scrii scripturi de baze de date, există mai multe conflicte de ['].
De exemplu, ['tabel'] va intra în conflict cu ['t], cum ar fi ['biao'] va intra în conflict cu ['b], iar ulterior am rezolvat-o cu ['tabel'].
Căutare și înlocuire de șiruri de 4 ps, are un motor obișnuit, este compatibil cu Linux și folosește și [\] ca scăpare.
Totuși, există o funcție specială de scăpare a șirurilor [[Regex]::Escape()], care este evadată prima, apoi găsită și înlocuită, iar codul este foarte ușor de citit.
$Original șir înainte de evadare = '\+\&*|]'
$escaped string = [regex]::escape($original string înainte de escape)
-------------
Exemple de scriere
[string]$a = 'abc\\def'
$Original șir înainte de evadare = '\'
$Escaped String = [Regex]::Escape($Original String Before Escape) #[\]--->[\\]
$b = [Regex]::replace($a,$Escaped String, 'Când')
$b #返回 [ABC Dangdang DEF]
-------------
5 bash și awk, fiecare are propriul său scop, fiecare are propria evadare. Împreună, este ușor ca A să-l afecteze pe B, iar A îl înghite pe B.
De asemenea, este ușor să ai probleme când întâlnești ['], ["], [\], și [*].
E ca și cum ai purta două straturi de pantaloni lungi, tragi unul și celălalt strat se mișcă și el, trebuie să te îngrijorezi de compatibilitatea lor.
Este un cancer și este greu de rezolvat.
Dar ciupirea, această problemă poate fi evitată într-o anumită măsură. Aceasta necesită ca persoana care a scris carcasa să corecteze problema mirositoarei.
[Pune codul awk în fișierul .awk separat, nu pe linia de comandă]
PowerShell nu are această problemă, pune-l pe linia de comandă, pune-l în script, nu are niciun efect.








Precedent:.net/C# folosește Attributes pentru a implementa AOP simplu
Următor:.net/c# Speedy IP Open Port Scanner v2.0 Versiunea Ultimate
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com