Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 11695|Svar: 1

PowerShell Komma igång handledning - version v0.3

[Kopiera länk]
Publicerad på 2017-04-19 16:48:30 | | |


---------- Kapitel 1 Windows skripthistorik --------------


1 Den första generationen av skriptfladdermöss. Det började med win95, win98--------- och slutade runt 2008. Funktioner: Teckenorienterade kommandon med kommandorad och pipeline.
2 Andra generationens skript VBS. Funktioner: Endast funktioner, överförda värden, anrop.
3 Tredje generationens skript-powershell. Från och med 2012 har kommandot utvecklats fullt ut till objektorienterat. Till exempel är tasklist och get-process upprepade hjulfunktioner: objektorienterade. Ärvde fördelarna från de två föregående generationernas skriftsystem.



F: Varför lära sig PowerShell?
A:
Missionären svarade att han skulle studera i ett år och fem år för att BAT:a. Enkel syntax och starka biblioteksfunktioner!
Den enda i världen som stödjer objekt med kommandon på båda sidor av pipelinen. dvs. objektorienterat kommando 1 | Objektorienterat kommando 2

Windows och Linux skiljer sig åt:
I PowerShell-skriptet på Win,
Stöd CR, LF, CRLF kom in. Stöd multitrådning och multiprocess-samtidighet.
Det är enkelt att bädda in [Text2-ljud], "Rapportera kapten, disken är full".
Att bädda in ett grafiskt gränssnitt är enkelt. (När popup-gränssnittet ber dig ange användarnamn, lösenord, single select, multiple select, etc.) Detta är avundsjukan kring Linux-skript.

PowerShell skiljer sig från Python:
Det är enkelt att använda kinesiska i PowerShell. Kinesiskt skriftnamn, variabelnamn, kommentar. Kinesiska enkla citattecken, kinesiska dubbla citattecken.
Känner automatiskt igen GBK, UTF8, Unicode-kodning. pipeline-stödobjekt, vilket Python-skript är avundsjuka på.



Enkelt syntaxexempel 1: Magin med powershell-enkla och dubbla citattecken.
Enkla citattecken kan citeras med dubbla citattecken. Och tvärtom.
Enkla och dubbla citattecken kan @引用 med @''.
BAT fungerade inte.


Missionärsberättare:
Jag har lagt mycket tanke på designen av handledningen. Läste du inte historiedelen av det jag skrev var väldigt [enkel och grov]? Historien bärs med ett enda drag.
Men eftersom jag sa det, är det inte nonsens, jag vill bara att studenterna ska göra det klart att sedan win7-win2008 har [objektifieringen] av skript blivit populär. Leder till nästa kapitel av objektorienterad förklaring.
Alla introduktionstutorials för PS bör nämna skillnaden mellan teckenorienterad och objektorienterad. Det är helt enkelt lämpligt att väva in detta ämne i kommandoradens historik.

---------- Kapitel 2 Den underbara -------------- av objektorienterad
Vad är ett objekt, varför är det objektorienterat, och varför förstärker Microsoft hjulet?

Objektorienterat exempel 1:
Fråga: Jag äter 2,2 äpplen om dagen, hur många äpplen äter jag på 17 dagar?
A:
2,2 x 17 finns tillgängligt. Det är också möjligt att använda i++ som stöds av vilket skriptspråk som helst.
för ($i = 1; $i -18 lt 1; $i++)
{
        $Apple = 2,2 + $Apple
        Skrivvärd $i,$Apple
}

--------------------------------------------
Så fort frågan ändras kommer jag inte att säga antalet dagar, bara säga till dig,
Jag äter 2,2 äpplen om dagen, hur många äpplen äter jag från 20 januari till 20 juni 2017?
$days = ((hämtadatum '2017-06-20') - (hämtadatum '2017-01-20')).dagar #值151


Jag äter 2,2 äpplen om dagen, hur många äpplen äter jag från 20 januari till 20 juni 2020?
$days = ((fär-datum '2020-06-20') - (fått-datum '2020-01-20')).dagar #值152

för ($i=(hämtadatum '2020-01-20'); $i -lt (startdatum '2020-06-20'); $i=$i.adddays(1))
{
        $Apple = 2,2 + $Apple
        Skrivvärd $i,$Apple
}

Slutsats: Med datumobjektet är det enkelt att räkna dagar, timmar osv. [för,,i++] är vanligt, men jag har aldrig trott att talet i kunde vara date-typ.

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



Vilka är fördelarna med objektorienterad?
Innan objektorientering har vi bara strängar och heltal.
1 Det finns ett föremål.
----- [Karaktärstyp]-----
Glyfen har system.string, vilket är den mest grundläggande.
System.Text.StringBuilder-minne, ofta föränderligt, stora strängar

----- [Numerisk typ]-----
system.int32, system.int64, system.decimal, system.dubbel, System.Numerics.BigInteger oändligt heltal.
Vanligt förekommande är int32, decimal.

Om 1/3*3 är lika med 1 eller 0,9999 beror på datatypen.
----- [Array]-----
system.array-array
System.arraylist-arraylistarrayen ändras ofta, till exempel alltid omskrivande, tillägg eller radering, du behöver använda detta. Hastigheten är relativt hög.
System.Collections.Generic.HashSet deduplicerade arrayer. Samma som pythons set-objekt.

-----【Form】-----
1 kommandoutgång. Till exempel reg, get-process.
2. När vi skriver skript använder vi objekt och attribut för att konstruera.

----- [Andra] -----
hashtabeller, filer, etc.



2 har attribut. Attribut är argument och är mindre än strängar. Innan det inte finns några attribut behöver vi filtrera och filtrera strängar med [hjärnbrännande reguljär], kallad [deduktionssträng]. Om du har attribut behöver du dem inte.
3 Det finns en väg. Metoden är programmet, koden. Du behöver inte skriva om det själv. Bat är definitivt inte bra, det finns ingen chans, det finns också en personlig text, opålitlig, våga inte använda den.
Metoder kan vara självskrivna ps-funktioner, självskrivna metoder i ps-klasser.
Metoden du skriver själv kan tillfälligt [slås samman] i en tredjepartsklass.
Metoden du skriver själv kan tillfälligt [slås in] i .net-klassen.

Vilka är nackdelarna med objektorienterad?
Predikanten lär ut PowerShell till personer som använder winxp. Personen sa att PowerShell inte är bra, objektet är för minneskrävande, och han har rätt.
I cmd returnerar jag 100 filnamn (strängar) med dir. I PowerShell använder jag Dir för att returnera 100 filobjekt, och Powershell tar mycket minne.
Men nu är det annorlunda:
1. Onödigt innehåll bör inte existera i variabler. Eller förstöra den direkt efter användning för att minska minnesanvändningen.
2. Minnesförlusten räcker. Eftersom CPU-prestandan inte längre kan öka, ökar vi frenetiskt minnet i ett försök att byta ut utrymme mot tid.
3. Vi vill ha kraftfullare funktioner, och objektorientering är det mest grundläggande nuförtiden. Vilket är inte objektorienterat, py, php, java, .net, c++?

Sammanfattning:
1 Objekt är större och mer minneskrävande än strängar.
2. Det finns fler metoder för objektorientering och starkare funktioner.
3 attribut är mindre än stränggranularitet, vilket är extremt smidigt att använda. Undvek [galen användning av hjärnbrännande vanliga filter för att filtrera] strängarna!


=== Galen användning av hjärnbrännande regelbundna användare för att filtrera exempel, bat-version av ping standardgateway ===
@echo av- och ställ lokal möjliggöring av fördröjd expansion
Echo letar efter standardgatewayen...

för /f "usebackq delims=" %%i in ('ipconfig /all') gör (
echo %%i|find /i "gateway">nul|| echo %%i|hitta "default gateway" >nul
Om "!errorlevel!" =="0" (
för /f "tokens=2 delims=:" %%a in ("%%i") gör för /f "delims= " %%m in ("%%a") do set ipgate=%%m
)
)

Echos standardgateway är: !ipgate!
=========== pinga standardgateway.ps1============
$default gateway = (get-netroute -DestinationPrefix 0.0.0.0/0). NextHop
& ping.exe $ Standardgateway

# test-anslutning $ standardgateway
=======================






F: Även om objektorienterat är så bra, varifrån kommer dessa objekt?
S: Från .net-biblioteket.


---------- Kapitel 3 Introduktion till .NET --------------


F: Hur många versionsgrenar har .NET Core?
A:
Det finns för närvarande tre versioner.
.NET 2.0 Den senaste versionen av .NET 3.51
.NET 4.0 Den senaste versionen av .NET 4.70
.NET Core 1.x Den senaste versionen av .NET 1.2 för Apple-system, Linux-system och inbyggda system.
.NET Core 2.x Den senaste versionen av .NET 2.0 för Apple-system, Linux-system och inbyggda system.



F: Hur många funktionella grenar har .net?
A:
Skrivbordsbranch i .NET. WinForm. För att utveckla skrivbordsfönster.
Ljudbibliotek
asp.net i .NET och .NET Core. Webbserverfunktionsbibliotek. Brukade öppna en B/S-webbserver.
F# i .NET och .NET Core. Innehåller matematikbibliotek, trigonometriska funktionsbibliotek, etc.
PowerShell i .NET och .NET Core. Innehåller vanliga systemhanteringsgränssnitt såsom skriptfiler.
Linux
◦Ubuntu 14.04 \ 16.04
◦CentOS/RHEL 7 och uppåt
◦öppna SUSE 42 och högre
◦Arch Linux (archl inux har inget versionsnummer)
◦LINUX docker-container
◦Linux AppImage-container (portabel applikation enkelbinär) https://github.com/probonopd/AppImageKit



MAC OS X
◦OS X 10.11


F: Hur ansluter ett .NET-program (C#-program) till en MySQL-server?
A:
Gå till mysql:s officiella webbplats för att ladda ner connectorn för .NET-språket.
mysql-connector-net-6.9.9-noinstall.zip--->v4.5--->MySql.Data.dll
Lägg till MySql.Data-klassen i .net och lägg till databasgränssnittet.



Slutsats:
Installera först .net 3.51, win7 och win2008 maskin, installera först .net 4.62 eller högre.

.net har funnits i många år, och det finns inte mycket mjukvara som stöder .net än Java. Alla .net-grenar, gränssnitt (databaser, WeChat, etc.). )
De där DLL:erna, de där biblioteken, PowerShell kan anropas. Det är exakt samma som exe-filen skriven i C#.


F: Utöver .NET-grengränssnittet, vilka är PowerShells egna bibliotek (moduler)?
A:
Se nästa kapitel

---------- Kapitel 4 användes ofta inbyggda bibliotek, externa bibliotek och tredjepartsbibliotek i PowerShell --------------

Missionärshjälp:
Detta kapitel kan inte diskuteras, utan är bara en lista över bibliotek och manualer. Bokmärk detta kapitel. Efter att ha tittat på dessa bibliotek kommer du att veta vad PowerShell kan göra.



Win2012 manuell adress: (mest använda annonsmodul)
https://technet.microsoft.com/zh-cn/library/dn249523(v=wps.630).aspx
AD användargruppshantering, DHCP, DNS, skrivare, fildelning, IIS, disk, nätverkskort,



Exchange2016
https://technet.microsoft.com/zh-cn/library/bb124413.aspx
Active Directory 12         
Anti-Spam och Anti-Malware 59  
Klientåtkomst 100
Förlängningsagent 4
E-postadresser och adressböcker 37
Federation och hybridkonfiguration  
Hög tillgänglighet  
Postflöde  
Brevlåda  
Brevlådedatabas  
Brevlådeserver  
Flytta och migrera  
Organisation  
Behörigheter  
Policy och efterlevnad  
Säkerhet  
Serverhälsa, övervakning och prestanda  
Dela och samarbeta  
Enhetligt budskap  
Användare och grupper  



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 och företagsklassade virtuella maskiner.


Kunder:
Tjänster, processer, loggar, register, filkataloger, fjärrhantering. Tidsbestämda uppgifter.



Internet:
FTP, mail, SSH-klientplugin för Linux-serveranslutning.


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


Text 2 röst


Grafiskt gränssnitt.


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


PowerShell Software Source officiella webbplats --- officiellt PowerShell-bibliotek.
https://www.powershellgallery.com


De andra Niu x-biblioteken finns alla på GitHub. Dessutom publicerar missionärerna regelbundet [Niu x Magiskt Vapnet] från [Hidden Foot Pavilion], som är ett användbart tredjepartsbibliotek för PowerShell.


---------- Kapitel 5 Nybörjare måste lära sig hur man hjälper till med användningen av kommandon--------------


F: Hur vet jag PowerShell-versionen?
A:
$PSVersionTable



F: Jag vet inte vilken modul det är, hur hittar man det?
A:
get-module -ListTillgänglig


F: Hur hittar jag kommandon när jag bara kan delar av dem?
A:
get-command *service*



F: Jag kan kommandot, men jag vet inte vilka parametrar som finns i kommandot, hur listar man parametrarna?
A:
get-help write-host -Parameter *
show-kommando skrivvärd


F: Jag känner till parametern, men jag vet inte vilket kommando som har den, hur hittar jag kommandot?
A:
get-command -ParameterName-kodning



F: Hur får jag hjälp med ett kommando från kommandoraden?
A:
Få-Hjälp Get-Date

-Exempel på kommandon
-onlinemanual online




F: Jag vet inte attributmetoden för kommandot (jag vet inte objektet), hur hittar man det?
A:
"ABC" | get-member
get-date | get-member



F: Var finns den kinesiska .NET-manualen?
A:
msdn。 De mest grundläggande strängegenskaperna och metoderna finns i manualen.
https://msdn.microsoft.com/zh-cn/library/system.string.aspx



---------- Kapitel 6 Introduktion till vanliga kommandon --------------

Det första kommandot att lära sig är dig
F: Varför använda PowerShell-dir:n [dvs. Get-ChildItem] istället för cmd-dir?
A:
Objektorienterad, stark metod och många egenskaper.
$file = dir a:\pscode\temp183\aaa.txt
$file. Fullnamn #返回全路径属性
$file. BaseName #返回文件名属性
$file. Förlängning #返回扩展名属性
$file. LastWriteTime #返回最后写入时间属性



Den första syntaxen att lära sig är arraysyntax. $a = @(xxx kommando)
F: Ibland måste du använda [teckenbaserade externa kommandon] för att dela upp returvärdena i arrayer efter beteendeenheter.
A:
$a = @(ipconfig)
$a[8] #第9行


Get-childitem-användning:
Tillagda parametrar i PowerShell 3.0 och senare

get-childitem d:\xxx -file #过滤, endast utdatafiler
-Katalogfiltrering, endast utmatningskataloger
-Dold filtrering, endast utgång dold


F: Öppna en fil, segmentera efter beteende, lägga i en array?
A:
$a = Get-Content a:\pscode\temp183\aaa.txt -ReadCount 0



F: Öppna en fil som en stor sträng och lagra hela variabeln?
A:
$a = Get-Content a:\pscode\temp183\aaa.txt -raw


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


F: Hur kör jag kommandon i bakgrunden?
A:
Det fanns ett cmd /c "kommando" i forntiden.
Nu finns det powershell /c "kommando", eller powershell -c "kommando",
PowerShell -file "script.ps1" -argument 1 aaaa -parameter 2 1234
start-process -path xxx.exe -ArgumentList '-parameter1 aaaa -parameter2 1234'


F: Jag vill köra skriptet med en annan lokal användare, men PowerShell har inga runas. Exe-liknande kommandon?
A:
Det finns olika sessioner i PowerShell.
IP + port + användarnamn + lösenord = en session, jag behöver bara ändra användarnamn, ändra lösenordet, och du kan ändra behörigheterna. För att behörigheter är knutna till användaren.
På samma sätt behöver jag bara skapa n sessioner att använda, utan att byta användare.
Den viktigaste new-pssession har parametern -Credential, ange användarlösenordet, vilket inte är samma som runas. Är exe likadant? Vad mer är SmbSession?
Så jag tror inte det är nödvändigt att använda runas i PowerShell. exe。
Du behöver bara använda de kommandona med session och Credential, eller hur?

Kontrollera kommandona med namnet [Credential] i parameternamnet:
get-command -ParameterName Credential

Visa kommandon med [session]-karaktären i kommandot:
get-command *session*


F: Hur skickar jag ett mejl med PowerShell?
A:
Skicka-MailMessage -Subjekt 'Ämne'
-Från "ditt hotmail-konto @hotmail.com" -Till "din QQ-e-post @qq.com" '
-SmtpServer "smtp.live.com" -port 587 -useSsl -credential "ditt hotmail-konto @hotmail.com" '
-Bilagor $Attachments -BodyAsHTML -body $HTML innehållet i e-postmeddelandet

Not:
1 användningxxx@QQ.com+ Ditt QQ-lösenord + ovanstående kommando Att skicka ett mejl fungerar inte. För säkerheten med QQ-lösenord kräver Tencent oberoende e-postlösenord.  
2 Att skicka från en QQ-brevlåda är inte möjligt som standard. Den är avstängd, och du måste slå på SMTP i inställningarna.
3 PowerShell 3.0 och nyare stöder endast portparametrar. För Win7 måste du installera den senaste versionen av PS först




F: Övervaka Windows CPU, disk, nätverk, IO, etc.
A:
Prestandaövervakare eller
Get-Counter hämtar prestandaräknardata från både lokala och fjärrdatorer.

F: Hur kan jag se vilka counter-föremål som finns tillgängliga?
A:
Allt står i manualen.
Kontrollera vilka som är huvudkategorierna av användningar:
Get-Counter -ListSet * | Sorter-objekt CounterSetName | Format-Table CounterSetName


Till exempel vet jag nu att diskkategorin är (PhysicalDisk), och sedan kontrollerar jag underkategorierna i disken, använder:
(Get-Counter -ListSet PhysicalDisk). Vägar




F: Hur ser jag loggarna?
A:
Event Viewer, eller
get-eventlog



F: Hur utför jag strängar?
A:
$cmd 1 = 'xxxx'
Invoke-uttryck $cmd 1


Vi har lärt oss mycket om individuella kommandon, låt oss titta på exekveringen av Powershell-skript.


---------- Kapitel 7 PS1-skriptning, felsökning och körning --------------
Ett skript är en kombination och överlagring av kommandosatser. Manuset är lim, gå runt och leta efter andra att ringa, leta efter hjul för att montera bilen. Istället för att tillverka hjul, för andra att använda.



Cainiao frågade: Hur skriver man ett manus?
Den gamle fågeln svarade:
1 Detaljerna i problemet måste klargöras. Till exempel: baka månkakor.
2 Problemlösningsidéerna är också i princip färdiga. Mjöl och vatten, lägg i fyllningen, ånga.
3 Vilka kommandon och variabler som ska användas. Tillsätt fem kärnor, lägg dem i en form och pressa dem.
4 Skriv ungefär först, skriv ungefär.
5 felsökningar godkändes.
6 Skriv i detalj. Tänk på felsituationen, plus felkoden, felmeddelandet. Ta bort felbenägen kod som inte är lätt kompatibel. Skriv om kod som inte presterar bra.
Fram till denna punkt kanske ett bra manus inte ser bra ut, men det borde vara mycket användbart.
7 Fint tillverkade. Refaktorering, att skriva återanvända kodfragment till funktioner. Skriv om variabelnamn så att folk kan förstå dem vid en snabb blick. Formatera koden väl och gör indragningen.


F: Vilken IDE används för att skriva PS1?
A:
Det mest rekommenderade är att använda Visual Studio Code, plus PowerShell-pluginet.
Funktioner: Kodpromptar, autokomplettering, kodformatering, indrag för att välja mellanslag eller flik, filkodningsinställningar.
Det finns ett plugin som heter FTP-sync, som kan skriva PS1-skript i Windows VSCode och automatiskt synkronisera dem till Linux-katalogen när de sparas.



F: Vilka verktyg används för att felsöka PS1?
A:
Den mest rekommenderade PowerGui Life använder inte ett lok, även om det är en hero, PS-skriptet hoppar också och rapporterar ett fel!
VSode är också okej



F: Vilka verktyg använder du för kodformatering?
A:
Allt som ska inskjutas är indraget, och likhetstecknen är justerade.

PowerShell ISE + ISE Plugin [ISESteroids]

Installation:
Installationsmodul -Namn ISESteroider

ISE kör:
Start-steroider





F: Vilka verktyg använder du för att göra kodfärgen vacker?
A:
1 Använd ovanstående verktyg för att formatera koden.
2 Använd PowerShellise + Missionary DIY färgmatchning 2016 edition.
3 Ta bilden. Världens mest tillfredsställande och vackert färgade PowerShell-kod produceras.

Alla ovanstående IDE:er är på kinesiska.




F: Hur namnger jag ett manus? xxx.ps1
A:
Det rekommenderas att börja med 1---2 bokstäver och använda det kinesiska filnamnet för resten. dvs. [BF säkerhetskopierar alla gamla files_ och raderar .ps1 från för 10 dagar sedan]
På så sätt skriver du [bf] först och trycker sedan på tab för att fylla i skriptnamnet.




F: Hur aktiverar jag PowerShell-skriptexekveringsbehörigheten?
A:
echo Följande kod kan köras i cmd med administratörsrättigheter eller i PowerShell med administratörsbehörighet.
Echo om jag använder PowerShell Fjärrkontroll. Både den lokala maskinen och fjärrmaskinen måste köras med administratörsbehörighet.
"C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -kommando "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
"C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -kommando "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
& "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -kommando "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
& "C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -kommando "Set-ExecutionPolicy -ExecutionPolicy Unrestricted"
paus



F: Vilka är nackdelarna med loket (powergui)?
A:
Kan inte ställa in bakgrundsfärgen.




F: Vilka är nackdelarna med vscode?
A:
$ och variabelnamnet har inte samma färg.
Felsökningsfunktioner är långsamma och ibland fastlåsta.




F: Vilka är nackdelarna med ISE?
A:
Du kan inte välja att spara eller konvertera kodningen.
Indraga till [mellanslag], [tab] båda. I annan textredigeringsprogramvara visas indrag.




---------- Kapitel 8 Faktiska stridsövningen --------------
Gruppen 6504748 och skrev denna del själva.

5. Exempel 1: Slå på och av tjänsten
6. Exempel 2: Kontrollbrandvägg (Öppna, Stäng, Regel)
7. Exempel 3: Sätt en policy (lösenordspolicy som exempel)



---------- Kapitel 9 Är du intresserad av dessa ytterligare valbara kurser? --------------
PowerShell-skript, kommandoradsargument skickar värden och binder variabler exempel
http://www.cnblogs.com/piapia/p/5910255.html




Låt PowerShell köra bara ett skript åt gången (exempel på ömsesidig uteslutning av processer)
http://www.cnblogs.com/piapia/p/5647205.html



powershell-karaktärsgränssnitt, powershell plus WPF-gränssnitt, 2048-spelet
http://www.cnblogs.com/piapia/p/5531945.html


Två crawlers i PowerShell
http://www.cnblogs.com/piapia/p/5367556.html



PowerShell-skript: Slumpmässig lösenordsgenerator
http://www.cnblogs.com/piapia/p/5184114.html



Exempel på en PowerShell-rekursiv algoritm
http://www.cnblogs.com/piapia/archive/2013/01/29/2881011.html



PowerShell röstkalkylator
http://www.cnblogs.com/piapia/archive/2012/10/20/2731506.html



1 Lista alla EFS-krypterade filer. 2Dekryptera alla EFS-krypterade filer
http://www.cnblogs.com/piapia/p/4702514.html
Det är ett verktyg skrivet för systemadministratörer och nätverksadministratörer.
Efter att en anställd lämnar sitt jobb antar hans disk att det finns 10 000 filer (kataloger), varav det finns 3 filkataloger krypterade av EFS. I Explorer är dessa tre filer gröna.
Men om du klickar på (10 000 kataloger) en efter en, oavsett om det är grönt eller inte, kommer du att vara utmattad.
Vid denna tidpunkt använder nätverksadministratören den anställdes WIN-konto, loggar in på den anställdes dator och använder detta skript för att lista alla EFS-krypterade filer.


---------- Kapitel 10 Var snäll och ställ en fråga--------------
Mina damer och herrar, om det finns något att rapportera, lämna domstolen utan något.



----------Kapitel 11 Linux-kapitel--------------

Missionär: Så länge du kan installera Linux-versionen av PowerShell behöver du bara PS1-skript, inga SH-skript.
Tolkning:
1 Kort sagt har bash endast syntax, inga kommandon och bibliotek.
2 bash har bara 1% syntaxfunktioner, PowerShell kan inte implementera det. Detta är normalt, inga två blad är exakt likadana i världen.
Det betyder att du bara behöver PS1-skriptet, inget SH.
3 bash är för gammal, samma funktion, Powershell kan implementeras och kan också spara tid, till exempel 10 000 tomma förar, Powershell behöver spara 90 % av tiden.
4 Lär dig använda /usr/bin/powershell istället för /usr/bin/bash. Andra Linux-kommandon, pipelines, gammal kung fu osv. används exakt som i bash.
5 Använd gradvis objektorienterade, enkla och kraftfulla PowerShell-kommandon och bibliotek istället för hjärnbrännande Linux-kommandon, eller båda. ---Detta är den allmänna principen, den allmänna dispositionen.


F: Vilka versioner av Linux kan installera PowerShell?
A:
◦Ubuntu 14.04 / 16.04
◦CentOS/RHEL 7 och uppåt
◦öppna SUSE 42 och högre
◦Arch Linux (archl inux har inget versionsnummer)
◦LINUX docker-container
◦Linux AppImage-container (portabel applikation enkelbinär) https://github.com/probonopd/AppImageKit





F: Varför sägs det att kommandoraden i win är starkare än Linux?
A:
Kommandon i 1 win har utvecklats till objektorienterad PowerShell. Linux fungerar inte än. Från win7 till win2012r2 tar evolutionen slut.

Jag brukade höra att Unix har många Linux-kommandon och är väldigt kraftfullt. Men nu säger jag att powershell-kommandon är minst tio gånger dyrare än linux-kommandon. Hur som helst, jag har ändå inte lärt mig hela mitt liv.

Linux är mer grafberoende, med för få kommandon. Och win-kommandot är mycket mer än Linux.
3.1 I vilken linux som helst är kommandona i mailservern mer och mer kompletta än i Exchange? Mer bekvämt än utbyte?
3.2 DNS-serverbindningen i Linux är inte lika bekväm som DNS-kommandot win. Har bind ett [kommando] för att lägga till en ipv4 A-post i ett domännamn? Inte beroende av webbgrafik än?
Vissa säger att man ska använda nsupdate. Det handlar inte om att skapa en text och sedan köra den. Vad är skillnaden mellan att ersätta [DNS-zonfilen] med sed och sedan ladda om [DNS-zonen]?

4 I den nya versionen av win, eller i PowerShell, är det helt [kommando + parameter]. Och det mesta av Linux är fortfarande [sed-text].
4.1 Ta IP-adressen som tilldelats nätverkskortet som exempel.
NMCLI-anslutning lägger till typ Ethernet CON-NAME NEW_STATIC IFNAME ENO1234567 IP4 192.168.1.111 GW4 192.168.1.1,
Är det inte smidigare än att använda sed för att skrapa ifcfg-eth0-filen?

5 Alla språk bearbetar data, och det gör även skriptning. Med hjälp av objekt är PowerShell mer bekvämt än awk. Shenma csv, excel, xml, json
SQL-tabell, NOSQL-tabell. html, osv.




F: Hur implementerar PowerShell [sed -i "s/what to look for/replace with /g" filnamn]?
A:
@(Get-Content filnamn) -byt ut 'aaa','bbb' | Set-Content filnamn $aaa
Det vill säga, öppna filen, ersätt den, spara filen.



F: Varför använder allt färre personer SED i Linux?
A:
Argument 1: AWK kan ersätta SED, men SED kan inte ersätta AWK.
sed, det vill säga, hitta helt enkelt substitutionen. awk har för och liknande för att implementera komplex bearbetning.

Argument 2: AWK använder den vanliga regularen, och den reguljära sed är densamma som sed, men delarna är olika.
Att lära sig SED innebär att två uppsättningar oförenliga regelbundna standarder i hjärnan kämpar mot varandra.



F: Så det är rätt att lära sig AWK?
A:
Att lära sig PowerShell är lättare än att lära sig AWK.
PowerShell använder [split och then split], [if och if], where-object, string.substing(), string[-3], etc.
Bryt ner strängproblemet lager för lager. Enklare än awk vanligt.




F: Kan pipelines och AWK användas i PowerShell?
A:
Du kan anropa awk i PowerShell, precis som i Bash. De gamla kampsporterna är helt och hållet Turin.



F: Hur implementerar man funktionen [awk '{print $3}'] i PowerShell?
A:
($line -split "\s+|\t+") [0] #第一行
($line -split "\s+|\t+") [2] #第三行       

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


F: Hur implementerar man funktionen [awk -f a.awk file] med PowerShell?
A:
I grund och botten är detta en filtreringsfunktion som använder ett rör. I PowerShell kallas detta ett filter eller filter.
PowerShell stöder kombinationen av kommando + rör + filter. Som i Kommando 1 | Filter 1 | Kommando 2 | Filter 2 | Filter 3
Filterfilter1
{
AWK-liknande funktionalitet
}





F: Finns det [xargs] i PowerShell?
A:
Rörvariabeln som används i pipelinen kallas [$psitem], och dess alias är [$_].
PowerShell använder foreach-object och $_ för att implementera funktionen xargs.





F: Finns det ett [<] [<<]-nummer i PowerShell?
A:
Nej.
Kanske är [<]-symbolen från höger till vänster anti-mänskligt tänkande. Många kommandon i PowerShell har ändrats från vänster till höger.
Om get-random < (1..100) inte är lagligt i PowerShell, bör den lagliga vara get-random -inputobject (1..100), eller 1. 100 |get-random
Mindre än 1 % av märkliga kommandon [måste] förlita sig på [<]-symbolen, vilket kan uppnås genom att anropa cmd i PowerShell eller bash (PowerShell för Linux) i PowerShell.
Till exempel $a = bash -x "kommando 1 < kommando 2" #linux
Till exempel $a = cmd -c "kommando 1 < kommando 2" #cmd




F: Finns det ett förväntat kommando i PowerShell? Hur ansluter man till en Linux SSH-server från Win med PowerShell?
A:
1. Ja. För vissa märkliga och delvisa dörrresponsbehov finns tredjepartsmoduler.
2 Nej. PowerShell använder inte kommandot expect, utan använder en session.

Använd Powershell + SSH klientbibliotek + IP + port + användarnamn + lösenord för att kombinera till en anslutning och skicka kommandon till denna anslutning. Koden är följande:
$connection 1 = New-SSHSession -ComputerName 1.1.1.1 -Port 22 -Credential aaaa #将提示输入密码
$to returnera = Invoke-SSHCommand -Command {cat /etc/issue} -SSHSession $Connection 1

Denna standardfunktionalitet såsom (MongoDB, mysql, ssh, ftp, http, telnet, etc.) har drivrutiner eller moduler. PS och. .netprogram, via drivrutinsanslutningen, skicka kommandon och acceptera data.
Fördelarna med att använda moduler eller drivrutiner för att skicka och ta emot [data] är:
Datan kommer att konverteras till ett .net-objekt, som i sin tur konverteras till ett PS-objekt. Annars är det bara strängar, och de [objektorienterade kampsporterna] från PS-sekten är värdelösa.


Tar vi MongoDB som exempel, vilka är fördelarna med att använda moduler eller drivrutiner för att skicka kommandon? Vem pratar?
Jag anser att fördelarna är:
1 Multitrådning. Bakgrundstråden körs och upptar inte den aktuella tråden.
2. Vi kan [koppla bort halvvägs] från sessionen när som helst, köra annan PS-kod, funktioner och [återvända till sessionen när som helst]. Skript är mer flexibla att skriva och lätta att felsöka.
3Session tar med flera användare, och olika användare kan ha olika serverbehörigheter.




F: Finns det su, runas-kommando i powershell? Hur kör man en annan användares kommando med PowerShell?
A:
Nej.
I PowerShell är det enkelt att köra Linux-inbyggda kommandon och pipelines. Till exempel:
sshaaa@127.0.0.1"Utförd med användarens AAA-privilegier, kommando xxx"  
sshpass -p user_password sshaaa@192.168.1.1



F: Två Linux-maskiner med SSHD? Hur kopplar man upp och skickar kommandon med PowerShell?
A:
Utöver metoden ovan kan du också använda metoden för att skapa en ny Linux-session. (Ansluten från Linux till en annan SSHD)
Obs: Denna metod kräver redigering av filen /etc/ssh/sshd_config. Lägg till följande rad
Delsystem powershell powershell -sshs -NoLogo -NoProfile
Efter det, starta om SSHD-servern.
Den detaljerade manualen finns här:
https://github.com/PowerShell/PowerShell/tree/master/demos/SSHRemoting

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


Sammanfattning:
Win-klient, ansluten till Linux-servern. För närvarande krävs tredjepartsmoduler, förstås, detta är en modul i det officiella biblioteket, använd bara installationsmodulen PoshSSH.
Linux-klient, ansluten till Linux-server. Du behöver redigera filen /etc/ssh/sshd_config.
Linux-klient, ansluten till Win-server. Du måste slå på tjänsten på servern. Lita på servern på klienten.
Win-klient, ansluten till Win-servern. Du måste slå på tjänsten på servern. Lita på servern på klienten.


F: Finns det [grep] i PowerShell?
A:
Select-string-kommandot används i PowerShell.
Ur ett kodningsperspektiv har select-string=smart, grep=dum+ en hård brist :mrgreen:
När det finns en stycklistehuvud känner select-string automatiskt igen filkodningstypen.
När det inte finns någon BOM-header finns det inget behov av att ändra skalmiljön som linux+grep, och det finns inget behov av att spara filer enligt viss kod. Du behöver bara ange parametern -encoding enligt filkodningen.
Och grep har inte denna funktion, det vill säga det finns en hård brist i [kan inte specificera filkodningstyp].
Självklart är grep inte värdelöst, grep har vissa parametrar, har ytterligare unika funktioner, select-string har det inte, det är här grep är starkare än select-string.



F: Finns det en [utvärdering] i PowerShell?
A:
Använd Invoke-Expression för att köra strängar i PowerShell.



F: Finns det en svans-f i PowerShell? Det är möjligt att skriva ut de nygenererade raderna i en fil i realtid.
A:
Get-Content D:\a.txt -Svans 10 -ReadCount 0 -Vänta



F: Jag vill använda ett litet tangentbord och vill också ha en terminal med 256 färger, så hur bör Xbox konfigureras?
A:
Terminal --- Terminal Typ --- [putty-256color] eller [export TERM=putty-256color]
Terminal --- tangentbord --- standard eller Linux.

Eterm-256color-burk
gnome-256color fungerar inte
Konsole-256color fungerar inte
Putty-256color
PowerShell Missionary Original Dela 2017-02-15
RXVT-256COLOR fungerar inte
screen-256color fungerar inte
ST-256COLOR
VTE-256COLOR fungerar inte
xterm-256color fungerar inte
Samma princip gäller för SecureCRT




F: Vem är kraftfullast, shell eller python?
A:
Varje har sina egna styrkor och kan komplettera varandra. Men de kompletterar inte varandra. Mer om detta nedan.


F: Varför är Linux-versionen av PowerShell mer lämplig för drift- och underhållspersonal att skriva skript? (Jämfört med Linux-versionen av Python)
A:
1 Python har objektorienterade funktioner, och Linux-versionen av PowerShell finns tillgänglig.

2 Python har ingen kommandorad.
2.1 Python kan inte vara standardterminal för SSH, men PowerShell för Linux kan. Se kapitlet: "Två Linux-maskiner med SSHD? Hur kopplar man upp och skickar kommandon med PowerShell? 》
2.2 Att använda shell-kommandon (awk, grep, etc.) i python är väldigt krångligt. Behöver lägga till mycket py-syntax och kod. PowerShell för Linux kör awk-kommandon precis som bash.

3 Python har inga rör. Det är mycket besvärligt att skicka värden mellan n [kommandoradsprogram]. Behöver lägga till mycket py-syntax och kod. Linux-versionen av PowerShell har pipelines, och att köra awk-kommandon är samma sak som bash.

4 Python har version 2, version 3 är inte kompatibel med Cancer! Fråga. PowerShell för Linux har inte det problemet.
4.1 Dessa frågor innehåller kodningsproblem.

Slutsats:
Shell-kommandon som grep är inte bra för kodningsstöd, inte lika bra som kodningsproblemen i 4.1 ovan i PowerShell hemma. Plus ovanstående 2,3 poäng.
Det gör att Linux-användare känner sig obekväma, men väldigt få använder externa kommandon i py. [Py kommandobibliotek] och [skalkommando] är döda och kan i princip inte komplettera varandra. Linux-versionen av PS är annorlunda.




F: Varför sägs det att PowerShell är bättre än Shell?
A:
1 PowerShell är objektorienterad, och egenskaper returnerar direkt tillgänglig data. Detta är mycket mindre vanligt än i teckenskriptspråk (bat, shell) som kräver strängdeduktion.
Född med mindre [innehåll som måste fly].
2 Strängsökningssubstitution, det finns metoder i PowerShell som inte kräver escape, i .NET-klassen. Till exempel:
[sträng]$a = 'abc\\def'
$b = $a.replace('\\','när')
#返回: [ABC som försvar]
För att avgöra om en IP är legitim kan du använda TryParse()-metoden i IPAddress-klassen.
Kort sagt är mitt förslag att använda så många .net-metoder som möjligt, använda så lite regex som möjligt, eller bara använda enkla vanliga användare.
3 PowerShell använder ['] som en escape-symbol. ['] används mindre vanligt än [\] och används mycket mindre som en flyktsymbol.
3.1 När man skriver databasskript uppstår fler konflikter med ['].
Till exempel kommer ['table'] att krocka med ['t], som ['biao'] kommer att krocka med ['b], och jag löste det senare med ['table'].
4 ps strängsökning och ersättning, har en vanlig motor, är kompatibel med Linux och använder även [\] som en flykt.
Det finns dock en speciell sträng-escape-funktion [[Regex]::Escape()], som först escapes och sedan hittas och ersätts, och koden är mycket lättläst.
$Original sträng före flykt = '\+\&*|]'
$escaped sträng = [regex]::escape($original sträng innan escape)
-------------
Skriptexempel
[sträng]$a = 'abc\\def'
$Original sträng före flykt = '\'
$Escaped sträng = [regex]::flykt($Original sträng före flykt) #[\]--->[\\]
$b = [Regex]::replace($a,$Escaped String, 'When')
$b #返回 [ABC Dangdang DEF]
-------------
5 bash och awk, var och en har sin egen för, var och en sin egen flyktväg. Tillsammans är det lätt för A att påverka B, och A sväljer B.
Det är också lätt att få problem när man stöter på ['], ["], [\] och [*].
Det är som att ha på sig två lager långbyxor, du drar på dig ett lager och det andra lagret rör sig också, du måste tänka på om de passar ihop.
Det här är cancer och svårt att lösa.
Men pinch, detta problem kan också undvikas till viss del. Detta kräver att den som skrev snäcket åtgärdar det illaluktande problemet.
[Lägg awk-koden separat i .awk-filen, inte på kommandoraden]
PowerShell har inte detta problem, lägg det på kommandoraden, lägg in det i skriptet, det har ingen effekt.








Föregående:.net/C# använder Attribut för att implementera enkel AOP
Nästa:.net/c# Speedy IP Open Port Scanner v2.0 Ultimate-version
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com