---------- Kapittel 1 Windows skripthistorikk --------------
1 Den første generasjonen av skriptflaggermus. Det startet med win95, win98--------- og sluttet rundt 2008. Funksjoner: Tegnorienterte kommandoer, med kommandolinje og pipeline. 2 Andre generasjons skript VBS. Funksjoner: Kun funksjoner, overlevere verdier, kall. 3 Tredje generasjons skript-powershell. Fra og med 2012 har kommandoen utviklet seg fullt ut til objektorientert. For eksempel er oppgaveliste og get-process gjentatte hjulfunksjoner: objektorienterte. Arver fordelene fra de to foregående generasjonene av skriftsystemer.
Spørsmål: Hvorfor lære PowerShell? A: Misjonæren svarte at han ville studere i ett år og fem år for å BAT. Enkel syntaks og sterke bibliotekfunksjoner! Den eneste i verden som støtter objekter med kommandoer på begge sider av pipelinen. dvs. objektorientert kommando 1 | Objektorientert kommando 2
Windows og Linux er forskjellige: I PowerShell-skriptet på Win, Støtt CR, LF, CRLF kom inn. Støtte multitråding og multiprosess-samtidighet. Det er enkelt å legge inn [Text2-lyd], "Rapporter kaptein, disken er full". Å legge inn et grafisk grensesnitt er enkelt. (Når popup-grensesnittet ber deg skrive inn brukernavn, passord, enkeltvalg, flervalg osv.) Dette er misunnelsene rundt Linux-skript.
PowerShell er forskjellig fra Python: Det er enkelt å bruke kinesisk i PowerShell. Kinesisk skriftnavn, variabelnavn, kommentar. Kinesiske enkle anførselstegn, kinesiske doble anførselstegn. Gjenkjenner automatisk GBK, UTF8, Unicode-koding. pipeline-støtteobjekter, som Python-skript er misunnelige på.
Enkelt syntakseksempel 1: Magien med PowerShell enkelt- og dobbeltanførselstegn. Enkle anførselstegn kan siteres med doble anførselstegn. Og omvendt. Enkle og doble anførselstegn kan @引用 med @''. BAT fungerte ikke.
Misjonærforteller: Jeg har tenkt mye på utformingen av veiledningen. Leste du ikke historiedelen av det jeg skrev var veldig [enkel og grov]? Historien bæres med ett slag. Men siden jeg sier det, er det ikke tull, jeg vil bare at studentene skal gjøre det klart at siden win7-win2008 har [objektivisering] av skript blitt populært. Leder til neste kapittel i objektorientert forklaring. Enhver PS-introduksjonsveiledning bør nevne forskjellen mellom tegnorientert og objektorientert. Det er rett og slett passende å gni dette temaet inn i kommandolinjens historie.
---------- Kapittel 2 Den vidunderlige -------------- av objektorientert Hva er et objekt, hvorfor er det objektorientert, og hvorfor forsterker Microsoft hjulet?
Objektorientert eksempel 1: Spørsmål: Jeg spiser 2,2 epler om dagen, hvor mange epler spiser jeg på 17 dager? A: 2,2 x 17 er tilgjengelig. Det er også mulig å bruke i++ støttet av hvilket som helst skriptspråk. for ($i = 1; $i -Lt 18; $i++)
{ $Apple = 2,2 + $Apple Skriveprogramleder $i,$Apple
}
-------------------------------------------- Så snart spørsmålet endres, vil jeg ikke fortelle deg antall dager, bare fortelle deg, Jeg spiser 2,2 epler om dagen, hvor mange epler spiser jeg fra 20. januar til 20. juni 2017? $days = ((hent-dato '2017-06-20') - (hent-dato '2017-01-20')).dager #值151
Jeg spiser 2,2 epler om dagen, hvor mange epler spiser jeg fra 20. januar til 20. juni 2020? $days = ((hent-dato '2020-06-20') - (hent-dato '2020-01-20')).dager #值152
for ($i=(hent-dato '2020-01-20'); $i -lt (startdato '2020-06-20'); $i=$i.adddays(1))
{ $Apple = 2,2 + $Apple Skriveprogramleder $i,$Apple
}
Konklusjon: Med datoobjektet er det enkelt å telle dager, timer osv. [for,,i++] er vanlig, men jeg har aldri trodd at tallet i kunne være date-type.
------------------------------------------
Hva er fordelene med objektorientert? Før objektorientert har vi bare strenger og heltall. 1 Det finnes et objekt. ----- [Karaktertype]----- Glyfen har system.string, som er den mest grunnleggende. System.Text.StringBuilder-minne, ofte endrende, store strenger
----- [Numerisk type]----- system.int32, system.int64, system.desimal, system.double, System.Numerics.BigInteger uendelig heltall. Vanlig brukt er int32, desimal.
Om 1/3*3 er lik 1 eller 0,9999 avhenger av datatypen. ----- [Array]----- system.array-array system.arraylist-arraylisten endres ofte, som for eksempel alltid omskriving, tilføying eller sletting, du må bruke dette. Hastigheten er relativt høy. System.Collections.Generic.HashSet dedupliserer matriser. Samme som Pythons settobjekt.
-----【Form】----- 1 kommandoutgang. For eksempel reg, get-process. 2. Når vi skriver skript, bruker vi objekter og attributter for å konstruere.
----- [Andre] ----- Hashtabeller, filer osv.
2 har attributter. Attributter er argumenter og er mindre enn strenger. Før det ikke finnes noen attributter, må vi filtrere og filtrere strenger med [hjernebrennende regulær], kalt [deduksjonsstreng]. Hvis du har attributter, trenger du det ikke. 3 Det finnes en vei. Metoden er programmet, koden. Du trenger ikke å skrive om det selv. Bat er definitivt ikke bra, det er ikke mulig, det finnes også en personlig skriving, upålitelig, ikke våg å bruke den. Metoder kan være selvskrevne ps-funksjoner, selvskrevne metoder i ps-klasser. Metoden du skriver selv kan midlertidig [flettes] inn i en tredjepartsklasse. Metoden du skriver selv kan midlertidig [slås sammen] inn i .net-klassen.
Hva er ulempene med objektorientert? Predikanten lærer bort PowerShell til folk som bruker winxp. Personen sa at PowerShell ikke er bra, objektet krever for mye hukommelse, og han har rett. I cmd returnerer jeg 100 filnavn (strenger) med dir. I PowerShell bruker jeg filer for å returnere 100 filobjekter, og Powershell bruker mye minne. Men nå er det annerledes: 1. Unødvendig innhold bør ikke eksistere i variabler. Eller ødelegg den umiddelbart etter bruk for å redusere minnebruket. 2. Minnedroppet er nok. Fordi CPU-ytelsen ikke lenger kan øke, øker vi minne febrilsk i et forsøk på å bytte plass mot tid. 3. Vi ønsker kraftigere funksjoner, og objektorientering er det mest grunnleggende i dag. Som ikke er objektorientert, py, php, java, .net, c++?
Sammendrag: 1 Objekter er større og mer minnekrevende enn strenger. 2. Det finnes flere metoder for objektorientering og sterkere funksjoner. 3 attributter er mindre enn strenggranularitet, noe som er ekstremt praktisk å bruke. Unngikk [gal bruk av hjernebrennende vanlig for å filtrere] strengene!
=== Vanvittig bruk av hjernebrennende faste for å filtrere eksempler, flaggermusversjon av ping standard gateway === @echo off&setlokal muliggjør forsinket ekspansjon Echo leter etter standard gateway...
for /f "usebackq delims=" %%i in ('ipconfig /all') do ( echo %%i|find /i "gateway">nul|| echo %%i|find "default gateway" >nul hvis "!errorlevel!" =="0" ( for /f "tokens=2 delims=:" %%a in ("%%i") do for /f "delims= " %%m in ("%%a") do set ipgate=%%m
)
)
Echo sin standardgateway er: !ipgate! =========== ping standard gateway.ps1============ $default gateway = (get-netroute -DestinationPrefix 0.0.0.0/0). NextHop & ping.exe $ Standard Gateway
# test-tilkobling $ standard gateway =======================
Spørsmål: Selv om objektorientert er så bra, hvor kommer disse objektene fra? Svar: Fra .net-biblioteket.
---------- Kapittel 3 Introduksjon til .NET --------------
Spørsmål: Hvor mange versjonsgrener har .NET Core? A: Det finnes for øyeblikket tre versjoner. .NET 2.0 Den nyeste versjonen av .NET 3.51 .NET 4.0 Den nyeste versjonen av .NET 4.70 .NET Core 1.x Den nyeste versjonen av .NET 1.2 for Apple-systemer, Linux-systemer og innebygde systemer. .NET Core 2.x Den nyeste versjonen av .NET 2.0 for Apple-systemer, Linux-systemer og innebygde systemer.
Spørsmål: Hvor mange funksjonelle grener har .net? A: Skrivebordsgren i .NET. WinForm. For å utvikle skrivebordsvinduer. Lydbibliotek asp.net i .NET og .NET Core. Webserverfunksjonsbibliotek. Pleide å åpne en B/S-webserver. F# i .NET og .NET Core. Inneholder matematiske biblioteker, trigonometriske funksjonsbiblioteker osv. PowerShell i .NET og .NET Core. Inneholder vanlige systemadministrasjonsgrensesnitt som skriptfiler. Linux ◦Ubuntu 14.04 \ 16.04 ◦CentOS/RHEL 7 og nyere ◦åpne SUSE 42 og høyere ◦Arch Linux (archl inux har ikke noe versjonsnummer) ◦LINUX docker-container ◦Linux AppImage-container (bærbar applikasjon enkeltbinær) https://github.com/probonopd/AppImageKit
MAC OS X ◦OS X 10.11
Spørsmål: Hvordan kobler et .NET-program (C#-program) seg til en MySQL-server? A: Gå til mysql sin offisielle nettside for å laste ned koblingen for .NET-språket. mysql-connector-net-6.9.9-noinstall.zip--->v4.5--->MySql.Data.dll Legg til MySql.Data-klassen i .net og legg til databasegrensesnittet.
Konklusjon: WinXP-maskinen installerer først .net 3.51, win7 og win2008-maskinen, installerer først .net 4.62 eller nyere.
.net har eksistert i mange år, og det finnes ikke mye programvare som støtter .net enn Java. Alle .net-grener, grensesnitt (databaser, WeChat, osv.). ) Disse DLL-ene, de bibliotekene, PowerShell kan kalles opp. Den er nøyaktig den samme som exe-filen skrevet i C#.
Spørsmål: I tillegg til .NET-grengrensesnittet, hva er PowerShells egne biblioteker (moduler)? A: Se neste kapittel
---------- kapittel 4 brukte ofte innebygde biblioteker, eksterne biblioteker og tredjepartsbiblioteker i PowerShell --------------
Misjonshjelp: Dette kapittelet kan ikke diskuteres, men det er bare en liste over biblioteker og manualer. Bokmerk dette kapittelet. Etter å ha sett på disse bibliotekene, vil du vite hva PowerShell kan gjøre.
Win2012 manuell adresse: (mest brukte annonsemodul)
https://technet.microsoft.com/zh-cn/library/dn249523(v=wps.630).aspx AD brukergruppehåndtering, DHCP, DNS, skriver, fildeling, IIS, disk, nettverkskort,
Exchange2016
https://technet.microsoft.com/zh-cn/library/bb124413.aspx Active Directory 12 Anti-Spam og Anti-Malware 59 Klienttilgang 100 Forlengelsesagent 4 E-postadresser og adressebøker 37 Føderasjon og hybridkonfigurasjon Høy tilgjengelighet Postflyt Postkasse Postkassedatabase Postkasseserver Flytt og migrer Organisasjon Tillatelser Retningslinjer og etterlevelse Sikkerhet Serverhelse, overvåking og ytelse Del og samarbeid Enhetlig melding Brukere og 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 og virtuelle maskiner på bedriftsnivå.
Kunder: Tjenester, prosesser, logger, registre, filmapper, fjernstyring. Tidsbestemte oppgaver.
Internett: FTP, e-post, SSH-klient-plugin for Linux-servertilkobling.
Tekst: XML, HTML, CVS, JSON, EXCEL, osv.
Tekst 2 stemme
Grafisk grensesnitt.
Microsoft Skriptsenter
https://gallery.technet.microsoft.com/scrip{过滤}tcenter/
PowerShell programvarekilde offisielt nettsted --- offisielt PowerShell-bibliotek.
https://www.powershellgallery.com
De andre Niu x-bibliotekene ligger alle på github. I tillegg publiserer misjonærene jevnlig [Niu x Magisk Våpen] fra [Hidden Foot Pavilion], som er et nyttig tredjepartsbibliotek for PowerShell.
---------- Kapittel 5 Nybegynnere må lære seg å hjelpe bruken av kommandoer--------------
Spørsmål: Hvordan vet jeg PowerShell-versjonen? A: $PSVersionTable
Spørsmål: Jeg kjenner ikke modulen, hvordan finner jeg den? A: get-module -ListAvailable
Spørsmål: Hvordan finner jeg kommandoer når jeg bare kan deler av dem? A: get-kommando *tjeneste*
Spørsmål: Jeg kjenner kommandoen, men jeg vet ikke hvilke parametere som er i kommandoen, hvordan lister man opp parameterne? A: get-help write-host -Parameter * show-kommando skriv-vert
Spørsmål: Jeg kjenner parameteren, men jeg vet ikke hvilken kommando som har denne parameteren, hvordan finner jeg kommandoen? A: get-command -ParameterName-koding
Spørsmål: Hvordan får jeg hjelp med en kommando fra kommandolinjen? A: Få-Hjelp Få-Date
-Eksempler på kommandoer -nettbasert nettmanual
Spørsmål: Jeg kjenner ikke attributtmetoden til kommandoen (jeg kjenner ikke objektet), hvordan finner jeg det? A: "ABC" | Get-Member Get-date | Get-Member
Spørsmål: Hvor er den kinesiske .NET-manualen? A: msdn。 De mest grunnleggende strengegenskapene og metodene finnes i manualen.
https://msdn.microsoft.com/zh-cn/library/system.string.aspx
---------- Kapittel 6 Introduksjon til vanlige kommandoer --------------
Den første kommandoen du må lære er dir Spørsmål: Hvorfor bruke powershell-leder [dvs. Get-ChildItem] i stedet for cmd-dir? A: Objektorientert, sterk metode og mange egenskaper. $file = dir a:\pscode\temp183\aaa.txt $file. Fullnavn #返回全路径属性 $file. BaseName #返回文件名属性 $file. Utvidelse #返回扩展名属性 $file. LastWriteTime #返回最后写入时间属性
Den første syntaksen du må lære er array-syntaks. $a = @(xxx kommando) Spørsmål: Noen ganger må du bruke [tegnbaserte eksterne kommandoer] for å dele returverdiene inn i matriser etter atferdsenheter. A: $a = @(ipconfig) $a[8] #第9行
Get-childitem-bruk: Lagt til parametere i PowerShell 3.0 og nyere
get-childitem d:\xxx -file #过滤, kun utdatafiler -Katalogfiltrering, kun utdatamapper -Skjult filtrering, kun skjult utgang
Spørsmål: Åpne en fil, segmentere etter oppførsel, legge i et array? A: $a = Get-Content a:\pscode\temp183\aaa.txt -ReadCount 0
Spørsmål: Åpne en fil, som en stor streng, og lagre hele variabelen? A: $a = Get-Content a:\pscode\temp183\aaa.txt -raw
$a,$b,$c = 1,2,3
Spørsmål: Hvordan kjører jeg kommandoer i bakgrunnen? A: Det fantes en cmd /c "kommando" i oldtiden. Nå finnes 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'
Spørsmål: Jeg vil kjøre skriptet med en annen lokal bruker, men PowerShell har ikke runas. Exe-lignende kommandoer? A: Det finnes ulike økter i PowerShell. IP + port + brukernavn + passord = en økt, jeg trenger bare å endre brukernavn, endre passord, og du kan endre tillatelsene. Fordi tillatelser er knyttet til brukeren. På samme måte trenger jeg bare å lage n økter å bruke, uten å bytte bruker. Den viktigste new-pssession har -Credential-parameteren, skriv inn brukerpassordet, som ikke er det samme som runas. Er exe det samme? Hva annet er SmbSession? Så jeg tror ikke det er nødvendig å bruke runas i PowerShell. exe。 Du trenger vel bare å bruke disse kommandoene med session og Credential, ikke sant?
Sjekk kommandoene med navnet [Credential] i parameternavnet: get-command -ParameterName Credential
Vis kommandoer med [session]-tegnet i kommandoen: get-command *økt*
Spørsmål: Hvordan sender jeg en e-post ved hjelp av PowerShell? A: Send-MailMessage -Subjekt 'Emne' -Fra "din hotmail-konto @hotmail.com" -Til "din QQ-e-post @qq.com" ' -SmtpServer "smtp.live.com" -port 587 -useSsl -credential "your hotmail-konto @hotmail.com" ' -Vedlegg $Attachments -BodyAsHTML -body $HTML innholdet i e-posten
Notat: 1 Brukxxx@QQ.com+ QQ-passordet ditt + kommandoen ovenfor Å sende en e-post fungerer ikke. For sikkerheten til QQ-passord krever Tencent uavhengige e-postpassord. 2 Sending fra QQ-postboks er ikke mulig som standard. Den er slått av, og du må slå på SMTP i innstillingene. 3 PowerShell 3.0 og nyere støtter kun portparametere. For Win7 må du installere den nyeste versjonen av PS først
Spørsmål: Overvåk Windows CPU, disk, nettverk, IO, osv. A: Ytelsesmonitor eller Get-Counter henter ytelsetellerdata fra både lokale og eksterne datamaskiner.
Spørsmål: Hvordan kan jeg se hvilke motgjenstander som er tilgjengelige? A: Alt står i manualen. Sjekk hva som er hovedkategoriene av bruk: Get-Counter -ListSet * | Sort-Objekt CounterSetName | Format-tabell CounterSetName
For eksempel vet jeg nå at diskkategorien er (PhysicalDisk), og så sjekker jeg underkategoriene i disken, bruker: (Get-Counter -ListSet PhysicalDisk). Stier
Spørsmål: Hvordan ser jeg loggene? A: Hendelseslogg, eller get-eventlog
Spørsmål: Hvordan utfører jeg strenger? A: $cmd 1 = 'xxxx' Invoke-uttrykk $cmd 1
Vel, vi har lært mye om individuelle kommandoer, la oss se på utførelsen av Powershell-skript.
---------- Kapittel 7 PS1-skripting, feilsøking og kjøring -------------- Et skript er en kombinasjon og overlegg av kommandosetninger. Manuset er limt, gå rundt og leter etter andre å ringe, se etter hjul for å montere bilen. I stedet for å lage hjul, for andre å bruke.
Cainiao spurte: Hvordan skriver man et manus? Den gamle fuglen svarte: 1 Detaljene i problemet må klargjøres. For eksempel: lag månekaker. 2 Problemløsningsideene er også i hovedsak fullført. Mel og vann, tilsett fyllet, damp. 3 Hvilke kommandoer og variabler som skal brukes. Tilsett fem kjerner, sett dem i en form, og press. 4 Skriv grovt først, skriv omtrent. 5 feilsøking bestått. 6 Skriv i detalj. Tenk på feilsituasjonen, pluss feilkoden, feilmeldingen. Fjern feilutsatt kode som ikke er lett kompatibel. Skriv om kode som ikke fungerer godt. Frem til dette punktet kan et godt manus se ikke bra ut, men det bør være veldig nyttig. 7 Nøye utført. Refaktorering, å skrive gjenbrukte kodesnippets inn i funksjoner. Skriv om variabelnavn slik at folk kan forstå dem med et blikk. Formater koden godt og gjør innrykk.
Spørsmål: Hvilken IDE brukes til å skrive PS1? A: Det mest anbefalte er å bruke Visual Studio Code, pluss PowerShell-pluginen. Funksjoner: Kodeprompts, autokomplettering, kodeformatering, innrykk for å velge mellomrom eller tabulator, filkodingsinnstillinger. Det finnes en plugin kalt FTP-sync, som kan skrive PS1-skript i Windows VSCode og automatisk synkronisere dem til Linux-katalogen når de lagres.
Spørsmål: Hvilke verktøy brukes for å feilsøke PS1? A: Den mest anbefalte PowerGui Life bruker ikke et lokomotiv, selv om det er en helt, vil PS-skriptet også hoppe og rapportere en feil! VSCode er også greit
Spørsmål: Hvilke verktøy bruker du til kodeformatering? A: Alt som skal innrykkes er innrykket, og likhetstegnene er justert.
PowerShell ISE + ISE Plugin [ISESteroids]
Installasjon: Installasjonsmodul -Navn ISESteroider
ISE kjører: Start-steroider
Spørsmål: Hvilke verktøy bruker du for å gjøre kodens farge vakker? A: 1 Bruk verktøyene ovenfor for å formatere koden. 2 Bruk PowerShellise + Missionary DIY fargematching 2016-utgave. 3 Ta bildet. Verdens mest tiltalende og vakkert fargerike PowerShell-kode produseres.
Alle de ovennevnte IDE-ene er på kinesisk.
Spørsmål: Hvordan navngir jeg et manus? xxx.ps1 A: Det anbefales å starte med 1---2 bokstaver, og bruke det kinesiske filnavnet for resten. altså [BF tar backup av alle gamle files_ og sletter .ps1 fra for 10 dager siden] På denne måten, skriv [bf] først, og trykk deretter tab for å fullføre skriptnavnet.
Spørsmål: Hvordan aktiverer jeg PowerShell-skriptutførelsestillatelsen? A: echo Følgende kode kan kjøres i cmd med administratorrettigheter eller i PowerShell med administratorrettigheter. Echo hvis du bruker PowerShell fjernkontroll. Både den lokale maskinen og den eksterne maskinen må kjøres med administratorrettigheter. "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" pause
Spørsmål: Hva er ulempene med lokomotivet (powergui)? A: Kan ikke sette bakgrunnsfargen.
Spørsmål: Hva er ulempene med vscode? A: $ og variabelnavn har ikke samme farge. Debugging-funksjonene er trege og noen ganger fastlåst.
Spørsmål: Hva er ulempene med ISE? A: Du kan ikke velge å lagre eller konvertere kodingen. Innrykk til [mellomrom], [tab] begge. I andre tekstredigeringsprogrammer vises innrykk.
---------- Kapittel 8 Faktisk kampøvelse -------------- Gruppen 6504748 og skrev denne delen selv.
5. Eksempel 1: Slå tjenesten av og på 6. Eksempel 2: Kontrollbrannmur (Åpen, Lukk, Regel) 7. Eksempel 3: Sett en policy (passordpolicy som eksempel)
---------- Kapittel 9 Disse ekstra valgfagene Er du interessert? -------------- PowerShell-skript, kommandolinjeargumenter sender verdier og binder variabler eksempler
http://www.cnblogs.com/piapia/p/5910255.html
La PowerShell kjøre bare ett skript om gangen (eksempel på prosess med gjensidig utelukkelse).
http://www.cnblogs.com/piapia/p/5647205.html
powershell-karaktergrensesnitt, powershell pluss WPF-grensesnitt, 2048-spill
http://www.cnblogs.com/piapia/p/5531945.html
To crawlere i PowerShell
http://www.cnblogs.com/piapia/p/5367556.html
PowerShell-skript: Tilfeldig passordgenerator
http://www.cnblogs.com/piapia/p/5184114.html
Eksempel på en PowerShell-rekursiv algoritme
http://www.cnblogs.com/piapia/archive/2013/01/29/2881011.html
PowerShell Voice Kalkulator
http://www.cnblogs.com/piapia/archive/2012/10/20/2731506.html
1 List alle EFS-krypterte filer. 2Dekrypter alle EFS-krypterte filer
http://www.cnblogs.com/piapia/p/4702514.html Det er et verktøy skrevet for systemadministratorer og nettverksadministratorer. Etter at en ansatt slutter i jobben, antar disken at det finnes 10 000 filer (kataloger), hvorav det er 3 filmapper kryptert av EFS. I Utforsker er disse tre filene grønne. Men hvis du klikker på (10 000 kataloger) én etter én, enten det er grønt eller ikke, vil du bli utslitt. På dette tidspunktet bruker nettverksadministratoren den ansattes WIN-konto, logger inn på den ansattes PC, og bruker dette skriptet til å liste opp alle EFS-krypterte filer.
---------- kapittel 10, vennligst still et spørsmål-------------- Mine damer og herrer, hvis det er noe å rapportere, forlat retten uten noe.
----------Kapittel 11 Linux-kapittel--------------
Missionary: Så lenge du kan installere Linux-versjonen av PowerShell, trenger du bare ps1-skript, ingen sh-skript. Fortolkning: 1 Kort sagt har bash kun syntaks, ingen kommandoer og biblioteker. 2 bash har bare 1 % syntaksfunksjoner, PowerShell kan ikke implementere det. Dette er normalt, ingen to blader er helt like i verden. Dette betyr at du bare trenger PS1-skriptet, ingen SH. 3 bash er for gammelt, samme funksjon, Powershell kan implementeres, og det kan også spare tid, for eksempel 10 000 tomme fors, Powershell må spare 90 % av tiden. 4 Lær å bruke /usr/bin/powershell i stedet for /usr/bin/bash. Andre Linux-kommandoer, pipelines, gammel kung fu osv. brukes på nøyaktig samme måte som i bash. 5 Bruk gradvis objektorienterte, enkle og kraftige PowerShell-kommandoer og biblioteker i stedet for hjernebrennende Linux-kommandoer, eller begge deler. ---Dette er det generelle prinsippet, den generelle disposisjonen.
Spørsmål: Hvilke versjoner av Linux kan installere PowerShell? A: ◦Ubuntu 14.04 / 16.04 ◦CentOS/RHEL 7 og nyere ◦åpne SUSE 42 og høyere ◦Arch Linux (archl inux har ikke noe versjonsnummer) ◦LINUX docker-container ◦Linux AppImage-container (bærbar applikasjon enkeltbinær) https://github.com/probonopd/AppImageKit
Spørsmål: Hvorfor sies det at kommandolinjen til win er sterkere enn Linux? A: Kommandoer i 1 win har utviklet seg til objektorientert PowerShell. Linux fungerer ikke ennå. Fra win7 til win2012r2 slutter utviklingen.
2 Jeg pleide å høre at Unix har mange Linux-kommandoer og er veldig kraftig. Men nå sier jeg at PowerShell-kommandoer er minst ti ganger dyrere enn Linux-kommandoer. Uansett, jeg har uansett ikke lært det hele livet.
3 Linux er mer grafavhengig, med for få kommandoer. Og win-kommandoen er mye mer enn Linux. 3.1 På enhver Linux er kommandoene i e-postserveren mer og mer komplette enn i Exchange? Mer praktisk enn bytte? 3.2 DNS-serverbindingen i Linux er ikke like praktisk som DNS-kommandoen win. Har Bind en [kommando] for å legge til en ipv4 A-post i et domenenavn? Ikke avhengig av webgrafikk ennå? Noen sier man bør bruke nsupdate. Det handler ikke om å lage en tekst og så kjøre den. Hva er forskjellen på å erstatte [DNS-sonefilen] med sed og så laste inn [DNS-sonen]?
4 I den nye versjonen av win, eller i PowerShell, er det bare [kommando + parameter]. Og det meste av Linux er fortsatt [sed-tekst]. 4.1 Ta IP-adressen tildelt nettverkskortet som et eksempel. NMCLI-tilkobling Legg til type Ethernet CON-Name NEW_STATIC IFNAME ENO1234567 IP4 192.168.1.111 GW4 192.168.1.1, Er det ikke mer praktisk enn å bruke sed for å skrape ifcfg-eth0-filen?
5 Ethvert språk behandler data, og det gjør skripting også. Med hjelp av objekter er PowerShell mer praktisk enn awk. Shenma csv, excel, xml, json SQL-tabell, NOSQL-tabell. HTML, osv.
Spørsmål: Hvordan implementerer PowerShell [sed -i "s/what to look for/replace with /g" filnavn]? A: @(Get-Content filnavn) -bytt ut 'aaa','bbb' | Set-Content filnavn $aaa Det vil si, åpne filen, erstatte den, lagre filen.
Spørsmål: Hvorfor er det færre og færre som bruker SED i Linux? A: Argument 1: AWK kan erstatte SED, men SED kan ikke erstatte AWK. sed, det vil si bare finn substitusjonen. awk har for og lignende for å implementere kompleks prosessering.
Argument 2: AWK bruker standard regular, og regular til sed er den samme som til sed, men delene er forskjellige. Å lære SED betyr at to sett med uforenlige vanlige standarder i hjernen kjemper mot hverandre.
Spørsmål: Så det er riktig å lære AWK? A: Å lære PowerShell er enklere enn å lære AWK. PowerShell bruker [split og then split], [if og if], where-object, string.substing(), string[-3], osv. Bryt ned strengproblemet lag for lag. Enklere enn awk vanlig.
Spørsmål: Kan pipelines og AWK brukes i PowerShell? A: Du kan kalle awk i PowerShell, akkurat som i Bash. De gamle kampsportene er helt og holdent Torino.
Spørsmål: Hvordan implementere funksjonen [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}'
Spørsmål: Hvordan implementere funksjonen [awk -f a.awk file] ved hjelp av PowerShell? A: I hovedsak er dette en filtreringsfunksjon som bruker et rør. I PowerShell kalles dette et filter eller filter. PowerShell støtter kombinasjonen av kommando + pipe + filter. Som i Kommando 1 | Filter 1 | Kommando 2 | Filter 2 | Filter 3 filterfilter1
{ AWK-lignende funksjonalitet
}
Spørsmål: Finnes det [xargs] i PowerShell? A: Rørvariabelen som brukes i pipelinen kalles [$psitem], og aliaset er [$_]. PowerShell bruker foreach-object og $_ for å implementere funksjonen til xargs.
Spørsmål: Finnes det et [<] [<<] nummer i PowerShell? A: Nei. Kanskje [<]-symbolet fra høyre til venstre er anti-menneskelig tenkning. Mange kommandoer i PowerShell har blitt endret fra venstre mot høyre. Hvis get-random < (1..100) ikke er lovlig i PowerShell, bør den lovlige være get-random -inputobject (1..100), eller 1. 100 |get-random Mindre enn 1 % av merkelige kommandoer [må] basere seg på [<]-symbolet, noe som kan oppnås ved å kalle cmd i PowerShell eller bash (PowerShell for Linux) i PowerShell. For eksempel er $a = bash -x "kommando 1 < kommando 2" #linux For eksempel $a = cmd -c "kommando 1 < kommando 2" #cmd
Spørsmål: Finnes det en forventet kommando i PowerShell? Hvordan koble til en Linux SSH-server fra Win med PowerShell? A: 1. Ja. For noen merkelige og delvis dørresponsbehov finnes det tredjepartsmoduler. 2 Nei. PowerShell bruker ikke kommandoen expect, men bruker en økt.
Bruk Powershell + SSH klientbibliotek + IP + port + brukernavn + passord for å kombinere til en tilkobling og sende kommandoer til denne forbindelsen. Koden er som følger: $connection 1 = New-SSHSession -ComputerName 1.1.1.1 -Port 22 -Credential aaaa #将提示输入密码 $to returnere = Invoke-SSHCommand -Kommando {cat /etc/issue} -SSHSession $Connection 1
Denne standardfunksjonaliteten som (MongoDB, mysql, ssh, ftp, http, telnet, osv.) har drivere eller moduler. PS og. .netprogram, via drivertilkoblingen, sender kommandoer og aksepterer data. Fordelene ved å bruke moduler eller drivere for å sende og motta [data] er: Dataene vil bli konvertert til et .net-objekt, som igjen vil bli konvertert til et PS-objekt. Ellers er det bare strenger, og [objektorienterte kampsport] i PS-sekten er ubrukelige.
Tar vi MongoDB som eksempel, hva er fordelene med å bruke moduler eller drivere for å sende kommandoer? Hvem snakker? Jeg føler at fordelene er: 1 Multitråding. Bakgrunnstråden kjører og opptar ikke den nåværende tråden. 2. Vi kan [koble fra halvveis] fra økten når som helst, kjøre annen PS-kode, funksjoner, og [returnere til sesjonen når som helst]. Skript er mer fleksible å skrive og enkle å feilsøke. 3Session bringer flere brukere, og ulike brukere kan ha forskjellige servertillatelser.
Spørsmål: Finnes det su, runas-kommando i PowerShell? Hvordan kjører man en annen brukers kommando med PowerShell? A: Nei. I PowerShell er det enkelt å kjøre Linux-native kommandoer og pipelines. For eksempel: sshaaa@127.0.0.1"Utført med brukerens AAA-privilegier, kommando xxx" sshpass -p user_password sshaaa@192.168.1.1
Spørsmål: To Linux-maskiner med SSHD? Hvordan koble til og sende kommandoer med PowerShell? A: I tillegg til metoden ovenfor kan du også bruke metoden for å opprette en ny Linux-økt. (Koblet fra Linux til en annen SSHD) Merk: Denne metoden krever redigering av filen /etc/ssh/sshd_config. Legg til følgende linje Delsystem powershell powershell -sshs -NoLogo -NoProfile Etter det starter du SSHD-serveren på nytt. Den detaljerte manualen finner du her:
https://github.com/PowerShell/PowerShell/tree/master/demos/SSHRemoting
Kommando: $connect 2 = New-PSSession -HostName 127.0.0.1 -UserName user006 #手动输入密码或用-KeyFilePath-alternativet invoke-kommando -session $connect 2 -scrip{filter}tBlock {new-item ~/ccc.txt}
Sammendrag: Win-klient, koblet til Linux-server. For øyeblikket kreves tredjepartsmoduler, selvfølgelig, dette er en modul i det offisielle biblioteket, bare bruk installasjonsmodulen PoshSSH. Linux-klient, koblet til Linux-server. Du må redigere filen /etc/ssh/sshd_config. Linux-klient, koblet til Win-server. Du må slå på tjenesten på serveren. Stol på serveren på klienten. Win-klient, koblet til Win-serveren. Du må slå på tjenesten på serveren. Stol på serveren på klienten.
Spørsmål: Finnes det [grep] i PowerShell? A: Select-string-kommandoen brukes i PowerShell. Kun fra et kodeperspektiv har select-string=smart, grep=dum + en hard svakhet :mrgreen: Når det finnes en BOM-header, gjenkjenner select-string automatisk filkodingstypen. Når det ikke finnes noen BOM-header, er det ikke nødvendig å endre shell-miljøet som linux+grep, og det er ikke nødvendig å lagre filer i henhold til en bestemt kode. Du trenger bare å spesifisere -kodingsparameteren i henhold til filkodingen. Og grep har ikke denne funksjonen, det vil si at det finnes en hard feil med [kan ikke spesifisere filkodingstype]. Selvfølgelig er grep ikke ubrukelig, grep har noen parametere, har flere unike funksjoner, select-string har det ikke, her er grep sterkere enn select-string.
Spørsmål: Finnes det en [evaluering] i PowerShell? A: Bruk Invoke-Expression for å kjøre strenger i PowerShell.
Spørsmål: Finnes det en hale -f i PowerShell? Det er mulig å skrive ut de nylig genererte linjene i en fil i sanntid. A: Get-Content: D:\a.txt -Tail 10 -ReadCount 0 -Vent
Spørsmål: Jeg vil bruke et lite tastatur og vil også ha en terminal med 256 farger, så hvordan bør Xbox settes opp? A: Terminal --- Terminal Type --- [sparkel-256color] eller [eksport TERM=putty-256color] Terminal --- tastatur --- standard eller Linux.
Eterm-256color kan Gnome-256color fungerer ikke Konsole-256color fungerer ikke Putty-256color PowerShell Misjonær Original Del 2017-02-15 RXVT-256COLOR fungerer ikke Screen-256color fungerer ikke ST-256COLOR VTE-256COLOR fungerer ikke xterm-256color fungerer ikke Det samme prinsippet gjelder for SecureCRT
Spørsmål: Hvem er kraftigst, shell eller python? A: Hver har sine egne styrker og kan utfylle hverandre. Men de utfyller ikke hverandre. Mer om dette nedenfor.
Spørsmål: Hvorfor er Linux-versjonen av PowerShell mer egnet for drifts- og vedlikeholdspersonell til å skrive skript? (Sammenlignet med Linux-versjonen av Python) A: 1 Python har objektorienterte funksjoner, og Linux-versjonen av PowerShell er tilgjengelig.
2 Python har ikke kommandolinje. 2.1 Python kan ikke være standardterminal for SSH, men PowerShell for Linux kan. Se kapittelet: "To Linux-maskiner med SSHD? Hvordan koble til og sende kommandoer med PowerShell? 》 2.2 Å bruke shell-kommandoer (awk, grep, osv.) i Python er veldig tungvint. Må legge til mye py-syntaks og kode. PowerShell for Linux kjører awk-kommandoene akkurat som bash.
3 Python har ingen rør. Det er svært vanskelig å sende verdier mellom n [kommandolinjeprogrammer]. Må legge til mye py-syntaks og kode. Linux-versjonen av PowerShell har pipelines, og å kjøre awk-kommandoer er det samme som bash.
4 Python har versjon 2, versjon 3 er ikke kompatibel med Krepsen! Spørsmål. PowerShell for Linux har ikke et slikt problem. 4.1 Disse spørsmålene inneholder kodeproblemer.
Konklusjon: Shell-kommandoer som grep er ikke gode for kodestøtte, ikke like gode som kodeproblemene i 4.1 ovenfor i PowerShell hjemme. Pluss de ovennevnte 2,3 poengene. Det gjør Linux-folk ukomfortable, men svært få bruker eksterne kommandoer i py. [py command library] og [shell command] er døde og kan i praksis ikke utfylle hverandre. Linux-versjonen av PS er annerledes.
Spørsmål: Hvorfor sies det at PowerShell er bedre enn shell? A: 1 PowerShell er objektorientert, og egenskaper returnerer direkte tilgjengelige data. Dette er mye mindre vanlig enn i karakterskriptspråk (bat, shell) som krever strengdeduksjoner. Født med mindre [innhold som må unnslippes]. 2 Strengsøksubstitusjon, det finnes metoder i PowerShell som ikke krever escape, i .NET-klassen. For eksempel: [streng]$a = 'abc\\def' $b = $a.erstatte('\\','når') #返回: [ABC som forsvar] For å avgjøre om en IP er legitim, kan du bruke TryParse()-metoden i IPAddress-klassen. Kort sagt, mitt forslag er å bruke så mange .net-metoder som mulig, bruke så lite regex som mulig, eller bare bruke enkle regulars. 3 PowerShell bruker ['] som et escape-symbol. ['] brukes sjeldnere enn [\] og brukes mye mindre som et fluktsymbol. 3.1 Når man skriver databaseskript, oppstår det flere konflikter med [']. For eksempel vil ['table'] komme i konflikt med ['t], slik som ['biao'] vil komme i konflikt med ['b], og jeg løste det senere med ['table']. 4 ps strengsøk og utskifting, har en vanlig motor, er kompatibel med Linux, og bruker også [\] som en flukt. Det finnes imidlertid en spesiell streng-escape-funksjon [[Regex]::Escape()], som først escapes og deretter blir funnet og erstattet, og koden er svært lesbar. $Original streng før flukt = '\+\&*|]' $escaped streng = [regex]::escape($original streng før escape) ------------- Skrifteksempler [streng]$a = 'abc\\def' $Original streng før flukt = '\' $Escaped streng = [regex]::flukt($Original streng før flukt) #[\]--->[\\] $b = [Regex]::replace($a,$Escaped String, 'When') $b #返回 [ABC Dangdang DEF] ------------- 5 bash og awk, hver har sin egen for, hver sin egen fluktvei. Til sammen er det lett for A å påvirke B, og A svelger B. Det er også lett å få problemer når man møter ['], ["], [\], og [*]. Det er som å ha på seg to lag lange bukser, du trekker det ene laget, og det andre laget beveger seg også, du må bekymre deg for hvor kompatible de er. Dette er kreft og vanskelig å løse. Men pinch, dette problemet kan også unngås til en viss grad. Dette krever at personen som skrev skallet retter opp det stinkende problemet. [Legg awk-koden i .awk-filen separat, ikke på kommandolinjen] PowerShell har ikke dette problemet, legg det på kommandolinjen, legg det i skriptet, det har ingen effekt.
|