Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 11695|Odgovoriti: 1

PowerShell uvodni vodič - različica v0.3

[Kopiraj povezavo]
Objavljeno na 19. 04. 2017 16:48:30 | | |


---------- Poglavje 1 Zgodovina skriptiranja Windows --------------


1 Prva generacija scenarijskih netopirjev. Začelo se je z win95, win98--------- in končalo okoli leta 2008. Značilnosti: Ukazi, usmerjeni na znake, z ukazno vrstico in cevovodom.
2 Druga generacija skript VBS. Funkcije: Samo funkcije, prehodne vrednosti, klici.
3 Skriptna PowerShell tretja generacija. Od leta 2012 se je ukaz popolnoma razvil v objektno usmerjen. Na primer, seznam opravil in get-process sta funkciji ponovljenega kolesa: objektno usmerjeni. Podedoval je prednosti prejšnjih dveh generacij scenarijev.



V: Zakaj se učiti PowerShell?
A:
Misijonar je odgovoril, da bo študiral eno leto in pet let za BAT. Preprosta sintaksa in močne funkcije knjižnice!
Edini na svetu, ki podpira objekte z ukazi na obeh straneh cevovoda. tj. objektno usmerjeni ukaz 1 | Objektno usmerjeni ukaz 2

Windows in Linux sta različna:
V PowerShell skripti na Winu,
Podprite CR, LF, CRLF vstopite. Podpora večnitnosti in večprocesni sočasnosti.
Enostavno je vgraditi [Text2 zvok], "Poročaj, kapitan, disk je poln".
Vgradnja grafičnega vmesnika je enostavna. (Ko vas pojavno okno prosi, da vnesete uporabniško ime, geslo, enkratno izbiro, večkratno izbiro itd.) To so zavisti Linux skript.

PowerShell se razlikuje od Pythona:
Kitajščino je enostavno uporabljati v PowerShellu. Kitajsko ime pisave, ime spremenljivke, komentar. Kitajski enojni narekovaji, kitajski dvojni narekovaji.
Samodejno prepozna GBK, UTF8, Unicode kodiranje. Objekti za podporo cevovodu, na katere so python skripte zelo zavidne.



Preprost primer sintakse 1: Čarobnost powershell enojnih in dvojnih narekovajev.
Enojni narekovaji, lahko se citirajo z dvojnimi narekovaji. In obratno.
Enojne in dvojne narekovaje lahko @引用 z @''.
BAT ni deloval.


Misijonarski pripovedovalec:
Veliko sem razmišljal o oblikovanju vodiča. Ali nisi prebral zgodovinskega dela tega, kar sem napisal, da je zelo [preprosto in grobo]? Zgodovino nosi en udarec.
A ker sem to rekel, ni neumnost, samo želim, da študenti jasno povedo, da je od win7 do win2008 [objektivizacija] skript postala priljubljena. Vodi do naslednjega poglavja objektno usmerjene razlage.
Vsak uvodni vodič za PS bi moral omeniti razliko med likom, usmerjenim v like, in objektno usmerjenim. Preprosto je primerno, da to temo vključimo v zgodovino ukazne vrstice.

---------- Poglavje 2 Čudovita -------------- objektno usmerjenega
Kaj je predmet, zakaj je objektno usmerjen in zakaj Microsoft krepi kolo?

Objektno usmerjen primer 1:
Vprašanje: Pojem 2,2 jabolka na dan, koliko jabolk pojem v 17 dneh?
A:
Na voljo je 2,2 x 17. Možno je tudi uporabljati i++, ki ga podpira katerikoli skriptni jezik.
za ($i = 1; $i -lt 18; $i++)
{
        $Apple = 2,2 + $Apple
        write-host $i,$Apple
}

--------------------------------------------
Takoj ko se vprašanje spremeni, ti ne bom povedal števila dni, samo povedal ti bom,
Jem 2,2 jabolka na dan, koliko jabolk pojem od 20. januarja do 20. junija 2017?
$days = (datum začetka '2017-06-20') - (datum nastanka '2017-01-20')). Dnevi #值151


Pojem 2,2 jabolka na dan, koliko jabolk pojem od 20. januarja do 20. junija 2020?
$days = (datum začetka '2020-06-20') - (datum datuma '2020-01-20')). Dnevi #值152

za ($i=(datum '2020-01-20'); $i -lt (datum datuma '2020-06-20'); $i=$i.adddays(1))
{
        $Apple = 2,2 + $Apple
        write-host $i,$Apple
}

Zaključek: Pri predmetu datuma je štetje dni, ur itd. preprosto. [for,,i++] je pogosto, a nikoli si nisem mislil, da je številka i lahko datum-tip.

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



Kakšne so prednosti objektno usmerjene?
Pred objektno usmerjenimi elementi imamo le nize in cela števila.
1 Obstaja predmet.
----- [Tip lika]-----
Glif ima system.string, ki je najbolj osnovni.
System.Text.StringBuilder pomnilnik, pogosto spreminjajoči se, veliki nizi

----- [Številčni tip]-----
system.int32, system.int64, system.decimal, system.double, System.Numerics.BigInteger neskončno celo število.
Pogosto se uporablja int32, decimalno.

Ali je 1/3*3 enako 1 ali 0,9999, je odvisno od vrste podatkov.
----- [Array]-----
system.array array array
System.arrayList se pogosto spreminja, na primer stalno prepisovanje, dodajanje ali brisanje, to morate uporabiti. Hitrost je razmeroma hitra.
System.Collections.Generic.HashSet deduplikirajo polja. Enako kot pri Pythonovem objektu set.

-----【Form】-----
1 izhod ukaza. Na primer, dir, get-process.
2. Pri pisanju skript uporabljamo objekte in atribute za konstrukcijo.

----- [Drugi] -----
zgoščevalne tabele, datoteke itd.



2 ima atribute. Atributi so argumenti in so manjši od nizov. Preden ni atributov, moramo nize filtrirati in filtrirati z [možgansko boljočo regularo], imenovano [niz dedukcij]. Če imaš atribute, jih ne potrebuješ.
3 Obstaja način. Metoda je program, koda. Ni potrebe, da bi ga sam prepisoval. Netopir zagotovo ni dober, ni možnosti, obstaja tudi osebno pisanje, nezanesljivo, ne upaj si ga uporabiti.
Metode so lahko samonapisane ps funkcije, samonapisane metode v ps razredih.
Metoda, ki jo napišete sami, se lahko začasno [združi] v razred tretje osebe.
Metodo, ki jo napišete sami, je mogoče začasno [združiti] v .net razred.

Kakšne so slabosti objektno usmerjene?
Pridigar uči powershell ljudem, ki uporabljajo winxp. Oseba je rekla, da PowerShell ni dober, da je predmet preveč pomnilniško zahteven, in ima prav.
V cmd vrnem 100 imen datotek (nizov) z dir. V PowerShellu uporabljam dir za vrnitev 100 datotečnih objektov, Powershell pa zavzame veliko pomnilnika.
A zdaj je drugače:
1. Nepotrebna vsebina ne bi smela obstajati v spremenljivkah. Ali pa ga uničite takoj po uporabi, da zmanjšate porabo pomnilnika.
2. Padec spomina je dovolj. Ker zmogljivost procesorja ne more več narasti, panično povečujemo pomnilnik v poskusu zamenjave prostora za čas.
3. Želimo si močnejše funkcije, objektna usmerjenost pa je danes najbolj osnovna. Kaj ni objektno usmerjeno, py, php, java, .net, c++?

Povzetek:
1 Objekti so večji in bolj pomnilniško zahtevni kot nizi.
2. Obstaja več metod za objektno usmerjenost in močnejše funkcije.
3 atributi so manjši od granularnosti nizov, kar je izjemno priročno za uporabo. Izognil sem se [nori uporabi možgansko bolečega rednega za filtriranje] godal!


=== Nora uporaba možgansko intenzivnih regularcev za filtriranje primerov, netopirjeva različica ping default gateway ===
@echo off&setlocal omogoči odloženo razširitev
Echo išče privzeti prehod...

for /f "usebackq delims=" %%i in ('ipconfig /all') do (
echo %%i|find /i "gateway">nul|| echo %%i|find "default gateway" >nul
če "!stopnja napake!" =="0" (
za /f "tokens=2 delims=:" %%a in ("%%i") do za /f "delims= " %%m in ("%%a") do set ipgate=%%m
)
)

Privzeti Echo prehod je: !ipgate!
=========== pingati privzeti gateway.ps1============
$default gateway = (get-netroute -DestinationPrefix 0.0.0.0/0). NextHop
& ping.exe $ Privzeti prehod

# test-povezava $ privzeti prehod
=======================






V: Tudi če je objektno usmerjenost tako dobra, od kod ti predmeti prihajajo?
O: Iz .net knjižnice.


---------- Poglavje 3 Uvod v .NET --------------


V: Koliko različic ima .NET Core?
A:
Trenutno obstajajo tri različice.
.NET 2.0 Najnovejša različica .NET 3.51
.NET 4.0 Najnovejša različica .NET 4.70
.NET Core 1.x Najnovejša različica .NET 1.2 za Apple sisteme, Linux sisteme in vgrajene sisteme.
.NET Core 2.x Najnovejša različica .NET 2.0 za Apple sisteme, Linux sisteme in vgrajene sisteme.



V: Koliko funkcionalnih vej ima .net?
A:
Namizna veja v .NET. WinForm. Za razvoj namiznih oken.
Zvočna knjižnica
asp.net v .NET in .NET Core. Knjižnica funkcij spletnega strežnika. Uporabljal sem za odpiranje B/S spletnega strežnika.
F# v .NET in .NET Core. Vsebuje matematične knjižnice, knjižnice trigonometričnih funkcij itd.
PowerShell v .NET in .NET Core. Vsebuje pogoste vmesnike za upravljanje sistema, kot so skriptne datoteke.
Linux
◦Ubuntu 14.04 \ 16.04
◦CentOS/RHEL 7 in višje
◦odprti SUSE 42 in višje
◦Arch Linux (archl inux nima številke različice)
◦LINUX docker container
◦Linux AppImage container (portable application single binary) https://github.com/probonopd/AppImageKit



MAC OS X
◦OS X 10.11


V: Kako se .NET program (C# program) poveže z MySQL strežnikom?
A:
Obiščite uradno spletno stran mysql, da prenesete konektor za .NET jezik.
mysql-connector-net-6.9.9-noinstall.zip--->v4.5--->MySql.Data.dll
Dodajte razred MySql.Data v .net in dodajte vmesnik baze podatkov.



Zaključek:
Na računalnikih WinXP je najprej namestil .NET 3.51, Win7 in Win2008, najprej namestil .NET 4.62 ali novejši.

.net obstaja že vrsto let in ni veliko programske opreme, ki podpira .net kot Java. Vse .net veje, vmesniki (baze podatkov, WeChat itd.). )
Ti dll-ji, te knjižnice, powershell lahko imenujemo. Je popolnoma enak kot exe, napisan v C#.


V: Poleg vmesnika .NET podružnice, kaj so PowerShellove lastne knjižnice (moduli)?
A:
Prosimo, oglejte si naslednje poglavje

---------- Poglavje 4 Pogosto uporabljene vgrajene knjižnice, zunanje knjižnice in knjižnice tretjih oseb v PowerShell --------------

Pomoč misijonarjem:
O tem poglavju ni mogoče razpravljati, gre le za seznam knjižnic in priročnikov. Shranite to poglavje med zaznamke. Po pregledu teh knjižnic boste vedeli, kaj PowerShell zmore.



Ročni naslov Win2012: (Najpogosteje uporabljen AD modul)
https://technet.microsoft.com/zh-cn/library/dn249523(v=wps.630).aspx
Upravljanje uporabniških skupin AD, DHCP, DNS, tiskalnik, deljenje datotek, IIS, disk, omrežna karta,



exchange2016
https://technet.microsoft.com/zh-cn/library/bb124413.aspx
Active Directory 12         
Proti neželeni pošti in proti zlonamerni programski opremi 59  
Dostop do odjemalcev 100
Razširitveni agent 4
E-poštni naslovi in naslovniki 37
Federacija in hibridna konfiguracija  
Visoka razpoložljivost  
Tok pošte  
Poštni nabiralnik  
Baza podatkov poštnega nabiralnika  
Strežnik poštnega predalnika  
Preselitev in migracija  
Organizacija  
Dovoljenja  
Politika in skladnost  
Varnost  
Zdravje strežnika, spremljanje in zmogljivost  
Delite in sodelujte  
Združeno sporočilo  
Uporabniki in skupine  



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 in virtualni stroji na ravni podjetij.


Stranke:
Storitve, procesi, dnevniki, registri, datotečni imeniki, oddaljeno upravljanje. Časovno omejene naloge.



Internet:
FTP, pošta, SSH odjemalski vtičnik za povezavo z Linux strežnikom.


Besedilno sporočilo:
XML, HTML, CVS, JSON, EXCEL itd.


Besedilo 2 glas


Grafični vmesnik.


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


PowerShell source uradna spletna stran --- uradna knjižnica PowerShell.
https://www.powershellgallery.com


Ostale Niu x knjižnice so vse na githubu. Poleg tega misijonarji redno izdajajo [Niu x Magic Weapon] iz [Hidden Foot Pavilion], ki je uporabna knjižnica PowerShella tretjih oseb.


---------- 5. poglavje Začetniki se morajo naučiti, kako pomagati pri uporabi ukazov--------------


V: Kako vem, katera je PowerShell verzija?
A:
$PSVersionTable



V: Ne poznam modula, kako ga najti?
A:
get-module -ListAvailable


V: Kako najdem ukaze, če poznam le del njih?
A:
get-command *storitev*



V: Poznam ukaz, vendar ne vem, kateri parametri so v ukazu, kako jih našteti?
A:
get-help write-host -Parameter *
show-command write-host


V: Poznam ta parameter, vendar ne vem, kateri ukaz ima ta parameter, kako naj ga najdem?
A:
kodiranje get-command -ParameterName



V: Kako lahko dobim pomoč pri ukazu iz ukazne vrstice?
A:
Dobi pomoč, dobi zmenek

-Primeri ukazov
-spletni priročnik




V: Ne poznam metode atributa ukaza (ne poznam objekta), kako ga najti?
A:
"abc" | get-member
zmenek | get-member



V: Kje je kitajski .NET priročnik?
A:
msdn。 Najbolj osnovne lastnosti in metode niza so v priročniku.
https://msdn.microsoft.com/zh-cn/library/system.string.aspx



---------- 6. poglavje Uvod v običajne ukaze --------------

Prvi ukaz, ki se ga naučiš, je dir
V: Zakaj uporabiti powershell dir [tj. Get-ChildItem] namesto cmd dir?
A:
Ciljno usmerjena, močna metoda in številne lastnosti.
$file = dir a:\pscode\temp183\aaa.txt
$file. Polno ime #返回全路径属性
$file. BaseName #返回文件名属性
$file. Podaljšanje #返回扩展名属性
$file. LastWriteTime #返回最后写入时间属性



Prva sintaksa, ki se jo je treba naučiti, je sintaksa polj. $a = @(xxx ukaz)
V: Včasih je treba uporabiti [zunanje ukaze, ki temeljijo na znakih], da povratne vrednosti razdelite v polja po enotah vedenja.
A:
$a = @(ipconfig)
$a[8] #第9行


Uporaba get-childitem:
Dodani parametri v PowerShell 3.0 in novejših

get-childitem d:\xxx -file #过滤, samo izhodne datoteke
-Filtriranje imenikov, izhod samo imenikov
-Skrito filtriranje, samo izhod skrito


V: Odprite datoteko, segmentirajte po vedenju, vstavite v polje?
A:
$a = Get-Content a:\pscode\temp183\aaa.txt -ReadCount 0



V: Odprite datoteko kot velik niz in shranite celotno spremenljivko?
A:
$a = Get-Content a:\pscode\temp183\aaa.txt -raw


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


V: Kako izvajam ukaze v ozadju?
A:
V starih časih je obstajal ukaz cmd /c.
Zdaj obstaja powershell /c "ukaz" ali powershell -c "ukaz",
PowerShell -datoteka "script.ps1" -argument 1 aaaa -parameter 2 1234
start-process -path xxx.exe -ArgumentList '-parameter1 aaaa -parameter2 1234'


V: Rad bi zagnal skripto z drugim lokalnim uporabnikom, vendar PowerShell nima run. EXE podobni ukazi?
A:
V PowerShellu obstajajo različne seje.
IP + port + uporabniško ime + geslo = seja, samo spremeniti moram uporabniško ime, geslo in ti lahko spremeniš dovoljenja. Ker so dovoljenja vezana na uporabnika.
Podobno moram ustvariti le n sej za uporabo, brez menjave uporabnikov.
Najpomembnejši new-pssession ima parameter -Credential – vnesi uporabniško geslo, kar ni isto kot runas. Je exe enako? Kaj še je SmbSession?
Zato mislim, da ni nujno uporabljati run v PowerShellu. exe。
Te ukaze moraš uporabljati s sejo in poverilnico, kajne?

Preverite ukaze z imenom [Credential] v imenu parametra:
get-command -Parameter Name Poverilnica

Oglejte si ukaze z znakom [session] v ukazu:
get-command *seja*


V: Kako pošljem e-pošto s PowerShellom?
A:
Send-MailMessage - Predmet 'Predmet'
-Iz "vašega hotmail računa @hotmail.com" -Do "vašega QQ e-poštnega naslova @qq.com" '
-SmtpServer "smtp.live.com" -port 587 -useSsl -poverilnica "tvoj hotmail račun @hotmail.com" '
-Priloge $Attachments -BodyAsHTML -telo $HTML vsebini e-pošte

Opomba:
1 uporabaxxx@QQ.com+ Vaše QQ geslo + zgornji ukaz Pošiljanje e-pošte ne deluje. Zaradi varnosti QQ gesel Tencent zahteva neodvisna gesla za e-pošto.  
2 Pošiljanje iz QQ poštnega predalnika privzeto ni mogoče. Je izklopljen in v nastavitvah morate vklopiti SMTP.
3 PowerShell 3.0 in novejši podpirajo le parametre vrat. Za win7 moraš najprej namestiti najnovejšo različico PS




V: Spremljajte CPU, disk, omrežje, IO itd.
A:
Monitor zmogljivosti ali
Get-Counter pridobiva podatke števca zmogljivosti tako z lokalnih kot oddaljenih računalnikov.

V: Kako lahko vidim, kateri predmeti za števec so na voljo?
A:
Vse je v priročniku.
Preverite, katere so glavne kategorije uporabe:
Get-Counter -ListSet * | Sort-Object CounterSetName | Format-tabela CounterSetName


Na primer, zdaj vem, da je kategorija diska (PhysicalDisk), nato pa preverim podkategorije na disku, uporabim:
(Get-Counter -ListSet PhysicalDisk). Poti




V: Kako si lahko ogledam dnevnike?
A:
Pregledovalnik dogodkov, ali
get-eventlog



V: Kako izvedem nize?
A:
$cmd 1 = 'xxxx'
Invoke-Expression $cmd 1


No, veliko smo se naučili o posameznih ukazih, poglejmo si izvajanje Powershell skript.


---------- Poglavje 7 PS1 Skriptiranje, odpravljanje napak in zagon --------------
Skripta je kombinacija in prekrivanje ukaznih ukazov. Scenarij je lepilo, pojdi naokrog in išči druge, ki jih lahko pokličeš, poglej okoli za sestavljanje avtomobila. Namesto da bi izdelovali kolesa, da jih uporabljajo drugi.



Cainiao je vprašal: Kako napisati scenarij?
Stara ptica je odgovorila:
1 Podrobnosti problema je treba pojasniti. Na primer: naredi mesečne kolačke.
2 Ideje za reševanje problemov so prav tako v bistvu dokončane. Moka in voda, nadev, para na pari.
3 Katere ukaze in spremenljivke uporabiti. Dodajte pet zrn, jih dajte v kalup in stisnite.
4 Piši približno najprej, piši grobo.
5 Odpravljanje napak je bilo opravljeno.
6 Pišite podrobno. Razmislite o situaciji z napako, poleg kode napake, sporočilu o napaki. Odstranite kodo, ki je nagnjena k napakam in ni enostavno združljiva. Prepiši kodo, ki ne deluje dobro.
Do zdaj dober scenarij morda ne izgleda dobro, a bi moral biti zelo uporaben.
7 Natančno izdelano. Refaktoriranje, pisanje ponovno uporabljenih kodnih odlomkov v funkcije. Prepiši imena spremenljivk, da jih ljudje razumejo na prvi pogled. Dobro formatirajte kodo in naredite zamik.


V: Kateri IDE se uporablja za pisanje PS1?
A:
Najbolj priporočljivo je uporabljati Visual Studio Code in PowerShell vtičnik.
Funkcije: Pozivi za kodo, samodejno dopolnjevanje, oblikovanje kode, zamik za izbiro presledka ali zavihka, nastavitve kodiranja datotek.
Obstaja vtičnik FTP-sync, ki lahko v Winov VSCode zapiše PS1 skripte in jih ob shranjevanju samodejno sinhronizira z Linux mapo.



V: Katera orodja se uporabljajo za odpravljanje napak na PS1?
A:
Najbolj priporočeni PowerGui Life ne uporablja lokomotive, tudi če je hero, bo PS skripta prav tako skočila in poročala o napaki!
vscode je prav tako v redu



V: Katera orodja uporabljate za oblikovanje kode?
A:
Vse, kar bi moralo biti zamikano, je vtisnjeno, enaki znaki pa so poravnani.

PowerShell ISE + ISE vtičnik [ISESteroids]

Namestitev:
Install-Module -ime ISESteroids

Poteka ISE:
Start-Steroids





V: Katera orodja uporabljate, da naredite barvo kode čudovito?
A:
1 Uporabite zgornja orodja za oblikovanje kode.
2 Uporabite PowerShellise + Missionary DIY barvno ujemanje izdaje 2016.
3 Ujemi sliko. Ustvarjena je najbolj prijetna in najlepše obarvana PowerShell koda na svetu.

Vsi zgoraj navedeni IDE-ji so v kitajščini.




V: Kako poimenujem scenarij? xxx.ps1
A:
Priporočljivo je, da začnete z 1---2 črkami, za ostalo pa uporabite kitajsko ime datoteke. npr. [bf varnostno kopira vse stare files_ in izbriše .ps1 od pred 10 dnevi]
Na ta način najprej vtipkaj [bf], nato pa pritisni tab, da dokončaš ime skripte.




V: Kako omogočim dovoljenje za izvajanje PowerShell skript?
A:
echo Naslednja koda se lahko izvaja v cmd z administratorskimi pravicami ali v PowerShellu s skrbniškimi pravicami.
Echo, če uporabljam PowerShell Oddaljeno oddaljeno funkcijo. Tako lokalni kot oddaljeni računalnik morata delovati z administratorskimi pravicami.
"C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -ukaz "Set-ExecutionPolicy -ExecutionPolicy Unrelimitedd"
"C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -ukaz "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
& "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -ukaz "Set-ExecutionPolicy -ExecutionPolicy Unrelimitedd"
& "C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -ukaz "Set-ExecutionPolicy -ExecutionPolicy Unrelimitedd"
Premor



V: Kakšne so slabosti lokomotive (powergui)?
A:
Ni mogoče nastaviti barve ozadja.




V: Kakšne so slabosti vscode?
A:
$ in ime spremenljivke nista iste barve.
Razhroščevalne funkcije so počasne in včasih zaklenjene.




V: Kakšne so slabosti ISE?
A:
Ne moreš izbrati, ali shraniš ali pretvoriš kodiranje.
Zamik na [presledek], [zavihek] oboje. V drugi programski opremi za urejanje besedila se prikaže zamik.




---------- Poglavje 8: Dejanska bojna vaja --------------
Skupina je 6504748 in ta del napisala sama.

5. Primer 1: Vklopite in izklopite storitev
6. Primer 2: Nadzorni požarni zid (Odpri, Zapri, Pravilo)
7. Primer 3: Nastavite politiko (na primer politika gesel)



---------- Poglavje 9 Te zanimajo te dodatne izbirne predmete? --------------
Primeri PowerShell skript, argumentov ukazne vrstice za prenos vrednosti in vezavnih spremenljivk
http://www.cnblogs.com/piapia/p/5910255.html




Naj PowerShell izvaja le en skript naenkrat (primer medsebojne izključitve procesov)
http://www.cnblogs.com/piapia/p/5647205.html



vmesnik za znake PowerShell, vmesnik PowerShell plus WPF, igra 2048
http://www.cnblogs.com/piapia/p/5531945.html


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



PowerShell skripta: generator naključnih gesel
http://www.cnblogs.com/piapia/p/5184114.html



Primer PowerShell rekurzivnega algoritma
http://www.cnblogs.com/piapia/archive/2013/01/29/2881011.html



PowerShell glasovni kalkulator
http://www.cnblogs.com/piapia/archive/2012/10/20/2731506.html



1 Naštej vse EFS šifrirane datoteke. 2Dešifriraj vse EFS šifrirane datoteke
http://www.cnblogs.com/piapia/p/4702514.html
Gre za orodje, namenjeno sistemskim in omrežnim administratorjem.
Ko zaposleni zapusti službo, njegov disk predpostavi, da je na njem 10.000 datotek (imenikov), od katerih so 3 mape datotek šifrirane z EFS. V Explorerju so te tri datoteke zelene.
Če pa kliknete na (10.000 katalogov) enega za drugim, ne glede na to, ali je zelen ali ne, boste izčrpani.
V tem času omrežni skrbnik uporablja WIN račun zaposlenega, se prijavi na zaposleni računalnik in s tem skriptom vpiše vse EFS šifrirane datoteke.


---------- Poglavje 10 Prosim, postavite vprašanje--------------
Dame in gospodje, če je kaj za poročati, zapustite sodišče brez ničesar.



----------Poglavje 11 Linux--------------

Misijonar: Dokler lahko namestiš Linux različico PowerShella, potrebuješ le ps1 skripte, brez sh skript.
Razlago:
1 Na kratko, bash ima samo sintakso, brez ukazov in knjižnic.
2 Bash ima le 1 % sintaktičnih funkcij, PowerShell tega ne more implementirati. To je normalno, noben list na svetu ni povsem enak.
To pomeni, da potrebuješ samo PS1 skripto, brez škodovanja.
3 bash je preveč star, ista funkcija, Powershell je mogoče implementirati, prav tako pa lahko prihrani čas, na primer 10.000 praznih for, Powershell pa mora prihraniti 90 % časa.
4 Nauči se uporabljati /usr/bin/powershell namesto /usr/bin/bash. Drugi Linux ukazi, cevovodi, stari kung fu itd. se uporabljajo natanko enako kot v Bashu.
5 Postopoma uporabljajte objektno usmerjene, preproste in zmogljive PowerShell ukaze in knjižnice namesto zamudnih Linux ukazov ali obojega. ---To je splošno načelo, splošni okvir.


V: Katere različice Linuxa lahko namestijo PowerShell?
A:
◦Ubuntu 14.04 / 16.04
◦CentOS/RHEL 7 in višje
◦odprti SUSE 42 in višje
◦Arch Linux (archl inux nima številke različice)
◦LINUX docker container
◦Linux AppImage container (portable application single binary) https://github.com/probonopd/AppImageKit





V: Zakaj pravijo, da je ukazna vrstica Win-a močnejša od Linuxa?
A:
Ukazi v 1 win so se razvili v objektno usmerjeni PowerShell. Linux še ne deluje. Od win7 do win2012r2 se evolucija konča.

2 Slišal sem, da ima Unix veliko Linux ukazov in je zelo zmogljiv. Ampak zdaj vam povem, da so PowerShell ukazi vsaj desetkrat pogostejši od linux ukazov. Kakorkoli, vse življenje se nisem nič naučil.

3 Linux je bolj odvisen od grafov, z premalo ukazi. In ukaz za win je veliko več kot Linux.
3.1 V katerem koli Linuxu so ukazi na poštnem strežniku vedno bolj popolni kot v Exchangeu? Bolj priročno kot izmenjava?
3.2 DNS server bind v Linuxu ni tako priročen kot DNS ukaz win. Ali ima bind ukaz [ukaz] za dodajanje ipv4 A zapisa k domeni? Še niste odvisni od spletnih grafik?
Nekateri pravijo, da je treba uporabljati nsupdate. Ne gre za to, da narediš besedilo in ga nato zaženeš. Kakšna je razlika med zamenjavo [DNS zone file] s sed in nato ponovnim nalaganjem [DNS zone]?

4 V novi različici WIN ali v PowerShellu je vse [ukaz + parameter]. In večina Linuxa je še vedno [besedilo].
4.1 Vzemimo IP naslov, dodeljen omrežni kartici kot primer.
nmcli povezava dodaj tip ethernet con-name NEW_STATIC ifname eno1234567 ip4 192.168.1.111 gw4 192.168.1.1,
Ali ni to bolj priročno kot uporaba sed za strganje datoteke ifcfg-eth0?

5 Vsak jezik obdeluje podatke, prav tako skriptiranje. S pomočjo objektov je PowerShell bolj priročen kot awk. Shenma csv, excel, xml, json
SQL tabela, noSQL tabela. html itd.




V: Kako PowerShell implementira [sed -i "s/what to look-for/replace with /g" datoteka]?
A:
@(Get-Content ime datoteke) -zamenjaj 'aaa','bbb' | Datoteka Set-Content $aaa
To pomeni, da odpreš datoteko, jo zamenjaš, shraniš datoteko.



V: Zakaj vse manj ljudi uporablja SED v Linuxu?
A:
Argument 1: AWK lahko nadomesti SED, SED pa ne more nadomestiti AWK.
sed, torej preprosto najdi substitucijo. AWK ima za in podobno implementacijo kompleksne obdelave.

Argument 2: AWK uporablja standardno regularo, regularna pri sed pa je enaka kot pri sed, vendar so deli različni.
Učenje SED pomeni, da se dva sklopa nezdružljivih rednih standardov v možganih borita med seboj.



V: Torej je prav, da se naučiš AWK?
A:
Učenje PowerShella je lažje kot učenje AWK.
PowerShell uporablja [split and then split], [if and if], where-object, string.substing(), string[-3] itd.
Razčlenite problem vrvic plast za plastjo. Enostavnejše kot običajno.




V: Ali je mogoče uporabljati cevovode in AWK v PowerShellu?
A:
V PowerShellu lahko pokličeš awk, natanko enako kot v Bashu. Stare borilne veščine so povsem torinske.



V: Kako implementirati funkcijo [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}'


V: Kako implementirati funkcijo [awk -f a.awk file] s PowerShellom?
A:
V bistvu gre za filtrirno funkcijo, ki uporablja cev. V PowerShellu temu pravimo filter ali filter.
PowerShell podpira kombinacijo ukazov + cevi + filtra. Kot v Command 1 | Filter 1 | Ukaz 2 | Filter 2 | Filter 3
filter filter1
{
Funkcionalnost, podobna AWK
}





V: Ali je v PowerShellu [xargs]?
A:
Cevna spremenljivka, uporabljena v cevovodu, se imenuje [$psitem], njen vzdevek pa je [$_].
PowerShell uporablja foreach-object in $_ za implementacijo funkcije xargs.





V: Ali obstaja številka [<] [<<] v PowerShellu?
A:
Ne.
Morda je [<] simbol z desne proti levi protičloveško razmišljanje. Veliko ukazov v PowerShellu je bilo spremenjenih z leve proti desni.
Če get-random < (1..100) ni dovoljen v PowerShellu, bi moral biti legalen get-random -inputobject (1..100), oziroma 1. 100 |get-random
Manj kot 1 % nenavadnih ukazov [mora] temeljiti na simbolu [<], kar je mogoče doseči z klicem cmd v PowerShellu ali bash (PowerShell za Linux) v PowerShellu.
Na primer, $a = bash -x "ukaz 1 < ukaz 2" #linux
Na primer, $a = cmd -c "ukaz 1 < ukaz 2" #cmd




V: Ali v PowerShellu obstaja ukaz 'expect'? Kako se povezati na Linux SSH strežnik iz Windows s PowerShellom?
A:
1. Da. Za nekatere nenavadne in delne potrebe odziva na vrata so na voljo moduli tretjih oseb.
2 Ne. PowerShell ne uporablja ukaza 'expect', ampak uporablja sejo.

Uporabite Powershell + SSH odjemalsko knjižnico + IP + port + uporabniško ime + geslo za združitev v povezavo in pošiljanje ukazov tej povezavi. Koda je naslednja:
$connection 1 = New-SSHSession -ComputerName 1.1.1.1 -Port 22 -Credentials aaaa #将提示输入密码
$to return = Call-SSHCommand -Command {cat /etc/issue} -SSHSession $Connection 1

Ta standardna funkcionalnost, kot so (MongoDB, mysql, ssh, ftp, http, telnet itd.), ima gonilnike ali module. ps in. .netprogram, preko povezave z gonilnikom, pošilja ukaze in sprejema podatke.
Prednosti uporabe modulov ali gonilnikov za pošiljanje in prejemanje [podatkov] so:
Podatki se pretvorijo v .net objekt, ki se nato pretvori v PS objekt. V nasprotnem primeru so vse vrvice, [predmetno usmerjene borilne veščine] PS sekte pa so vse neuporabne.


Če vzamemo MongoDB kot primer, kakšne so prednosti uporabe modulov ali gonilnikov za pošiljanje ukazov? Kdo govori?
Menim, da so prednosti:
1 Večnitnost. Ozadna nit teče in ne zaseda trenutne niti.
2. Kadarkoli lahko [prekinemo povezavo] iz seje, izvedemo drugo PS kodo, funkcije in [se kadarkoli vrnemo v sejo]. Skripte so bolj prilagodljive za pisanje in enostavne za odpravljanje napak.
3session pripelje več uporabnikov, različni uporabniki pa lahko imajo različne strežniške pravice.




V: Ali je v PowerShellu ukaz Su, Runa? Kako zagnati ukaz drugega uporabnika s PowerShellom?
A:
Ne.
V PowerShellu je izvajanje nativnih ukazov in cevovodov za Linux enostavno. Na primer:
sshaaa@127.0.0.1"Izvedeno z uporabniškimi AAA pravicami, ukaz xxx"  
sshpass -p user_password sshaaa@192.168.1.1



V: Dva Linux računalnika s SSHD? Kako povezati in poslati ukaze s PowerShellom?
A:
Poleg zgornje metode lahko uporabite tudi način ustvarjanja nove Linux seje. (Povezan z Linuxom na drug SSHD)
Opomba: Ta metoda zahteva urejanje datoteke /etc/ssh/sshd_config. Dodaj naslednjo vrstico
Podsistem powershell powershell -sshs -NoLogo -NoProfile
Nato ponovno zaženi SSHD strežnik.
Podroben priročnik je tukaj:
https://github.com/PowerShell/PowerShell/tree/master/demos/SSHRemoting

Ukaz:
$connect 2 = New-PSSession -HostName 127.0.0.1 -UserName user006 #手动输入密码或用-KeyFilePath možnost
invoke-command -session $connect 2 -scrip{filter}tBlock {new-item ~/ccc.txt}


Povzetek:
Win odjemalec je povezan z Linux strežnikom. Trenutno so potrebni moduli tretjih oseb, seveda, to je modul v uradni knjižnici, uporabite namestitveni modul PoshSSH.
Linux odjemalec je povezan z Linux strežnikom. Moraš urediti datoteko /etc/ssh/sshd_config.
Linux odjemalec je povezan z Win strežnikom. Storitev morate vklopiti na strežniku. Zaupaj strežniku na odjemalcu.
Win odjemalec je povezan z Win strežnikom. Storitev morate vklopiti na strežniku. Zaupaj strežniku na odjemalcu.


V: Ali je v PowerShellu [grep]?
A:
Ukaz select-string se uporablja v PowerShellu.
Samo z vidika kodiranja imajo select-string=smart, grep=stupid + močno napako :mrgreen:
Ko je na voljo glava BOM, select-string samodejno prepozna tip kodiranja datoteke.
Ko ni glave BOM, ni potrebe po spreminjanju okolja lupine, kot je linux+grep, prav tako ni potrebe po shranjevanju datotek glede na določeno kodo. Samo parametr kodiranja -encoding moraš določiti glede na kodiranje datoteke.
Grep te funkcije nima, torej obstaja trdna napaka [ni mogoče določiti vrste kodiranja datotek].
Seveda grep ni neuporaben, grep ima nekatere parametre, ima dodatne edinstvene funkcije, select-string pa ne, tu je grep močnejši od select-string.



V: Ali obstaja [eval] v PowerShellu?
A:
Uporabite Invoke-Expression za izvajanje nizov v PowerShellu.



V: Ali v PowerShellu obstaja rep -f? Možno je v realnem času izpisati novo generirane vrstice datoteke.
A:
Get-Content D:\a.txt -Tail 10 -ReadCount 0 -Wait



V: Želim uporabljati majhno tipkovnico in tudi terminal z 256 barvami, kako naj bo xshell nastavljen?
A:
Terminal --- tip terminala --- [putty-256color] ali [export TERM=putty-256color]
Terminal --- tipkovnica --- privzeto ali Linux.

Eterm-256color lahko
Gnome-256color ne deluje
konsole-256color ne deluje
Putty-256color
PowerShell Missionary Izvirna delitev 2017-02-15
RXVT-256COLOR ne deluje
Screen-256color ne deluje
ST-256COLOR
VTE-256COLOR ne deluje
xterm-256color ne deluje
Enako načelo velja za SecureCRT




V: Kdo je močnejši, shell ali python?
A:
Vsak ima svoje prednosti in se lahko medsebojno dopolnjuje. A niso dopolnjujoče. Več o tem spodaj.


V: Zakaj je Linux različica PowerShella bolj primerna za operativno in vzdrževalno osebje za pisanje skript? (V primerjavi z Linux različico Pythona)
A:
1 Python ima objektno usmerjene funkcije, na voljo pa je tudi Linux različica PowerShella.

2 Python nima ukazne vrstice.
2.1 Python ne more biti privzeti terminal za SSH, lahko pa PowerShell za Linux. Oglejte si poglavje: "Dva Linux računalnika s SSHD? Kako povezati in poslati ukaze s PowerShellom? 》
2.2 Uporaba ukazov lupine (awk, grep itd.) v pythonu je zelo zapletena. Dodati je treba veliko py-jevega sintakse in kode. PowerShell za Linux izvaja ukaze awk enako kot bash.

3 python nima cevi. Zelo zahtevno je prenašati vrednosti med n [ukaznimi programi]. Dodati je treba veliko py-jevega sintakse in kode. Linux različica PowerShella ima cevovode, izvajanje ukazov awk pa je enako kot bash.

4 Python ima različico 2, različica 3 ni združljiva z rakom! Vprašanje. PowerShell za Linux nima takšnih težav.
4.1 Ta vprašanja vsebujejo kodne naloge.

Zaključek:
Ukazi v lupini, kot je GREP, niso primerni za podporo programiranju, niso tako dobri kot kodni problemi v različici 4.1 zgoraj v PowerShellu doma. Plus zgornjih 2,3 točke.
Linux uporabnikom je zaradi tega neprijetno, a zelo malo ljudi uporablja zunanje ukaze v py. [py command library] in [shell command] sta mrtva in se praktično ne moreta dopolnjevati. Linux različica PS je drugačna.




V: Zakaj pravijo, da je PowerShell boljši od shella?
A:
1 PowerShell je objektno usmerjen, lastnosti pa vračajo neposredno razpoložljive podatke. To je veliko manj pogosto kot v skriptnih jezikih za znake (bat, shell), ki zahtevajo sklepanje nizov.
Rojen z manj [vsebine, ki jo je treba pobegniti].
2 Zamenjava za iskanje nizov, v PowerShellu obstajajo metode, ki ne zahtevajo escapinga, v razredu .NET. Na primer:
[string]$a = 'abc\\def'
$b = $a.nadomesti('\\','ko')
#返回: [ABC kot def]
Za ugotavljanje, ali je IP legitimen, lahko uporabite metodo TryParse() v razredu IPAddress.
Skratka, moj predlog je, da uporabite čim več .net metod, uporabite čim manj regex datotek ali pa preprosto uporabite preproste običajne datoteke.
3 PowerShell uporablja ['] kot escape simbol. ['] se manj pogosto uporablja kot [\] in je veliko manj uporabljen kot simbol za izhod.
3.1 Pri pisanju skript za podatkovne baze je več konfliktov ['].
Na primer, ['table'] bo v konfliktu z ['t], na primer ['biao'] bo v konfliktu z ['b], kasneje pa sem to rešil z ['table'].
4 ps iskanje in zamenjava nizov, ima običajen pogon, je združljiv z Linuxom in uporablja [\] kot pobeg.
Vendar pa obstaja posebna funkcija za unikanje niza [[Regex]::Escape()], ki se najprej escape, nato pa se najde in zamenja, koda pa je zelo berljiva.
$Original niz pred escape = '\+\&*|]'
$escaped niz = [regex]::escape($original niz pred escapingom)
-------------
Primeri scenarijev
[string]$a = 'abc\\def'
$Original niz pred escape = '\'
$Escaped Niz = [Regex]::Escape($Original String Before Escape) #[\]--->[\\]
$b = [Regex]::replace($a,$Escaped String, 'When')
$b #返回 [ABC Dangdang DEF]
-------------
5 udarcev in nezgodnih udarcev, vsak ima svoj način, vsak ima svoj pobeg. Skupaj je enostavno, da A vpliva na B, A pa pogoltne B.
Prav tako je enostavno priti do težav pri srečanju z ['], ["], [\] in [*].
To je kot da bi nosil dve plasti dolgih hlač, potegneš eno plast, druga plast se tudi premika, moraš skrbeti za njuno združljivost.
To je rak in ga je težko rešiti.
A ščip, temu problemu se je mogoče do neke mere tudi izogniti. To zahteva, da oseba, ki je napisala lupino, popravi ta smrdeči problem.
[Kodo awk vstavite ločeno v .awk datoteko, ne v ukazno vrstico]
PowerShell tega problema nima, vpiši ga v ukazno vrstico, v skripto, pa nima nobenega učinka.








Prejšnji:.net/C# uporablja atribute za implementacijo preprostega AOP
Naslednji:.net/c# Hitri IP Open Port Scanner v2.0 Ultimate različica
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com