---------- Hoofdstuk 1 Windows Scriptgeschiedenis --------------
1 De eerste generatie scriptvleermuizen. Het begon met win95, win98--------- en eindigde rond 2008. Functies: Karaktergerichte commando's, met commandoregel en pijplijn. 2 Tweede generatie script VBS. Functies: Alleen functies, waarden doorgeven, aanroepen. 3 Derde generatie script-powershell. Vanaf 2012 is het commando volledig geëvolueerd naar objectgeoriënteerd. Bijvoorbeeld, tasklist en get-process zijn herhaalde wielkenmerken: objectgeoriënteerd. Ze erven de voordelen van de vorige twee generaties schriften.
V: Waarom PowerShell leren? A: De missionaris antwoordde dat hij één jaar en vijf jaar zou studeren om BAT te doen. Eenvoudige syntaxis en sterke bibliotheekfuncties! De enige ter wereld die objecten ondersteunt met commando's aan beide kanten van de pipeline. d.w.z. objectgeoriënteerd commando 1 | Objectgeoriënteerd commando 2
Windows en Linux zijn verschillend: In het PowerShell-script op Win, Steun CR, LF, CRLF kom binnen. Ondersteuning voor multithreading en multi-process gelijktijdigheid. Het is eenvoudig om [Text2-geluid], "Report Captain, disk is full" in te sluiten. Het inbedden van een grafische interface is eenvoudig. (Wanneer de pop-upinterface je vraagt een gebruikersnaam, wachtwoord, single select, multiple select, enzovoort in te voeren.) Dit zijn de jaloezieën van Linux-scripts.
PowerShell is anders dan Python: Het is makkelijk om Chinees te gebruiken in PowerShell. Chinese schriftnaam, variabele naam, opmerking. Chinese enkele aanhalingstekens, Chinese dubbele aanhalingstekens. Herkent automatisch GBK, UTF8, Unicode-codering. Pipeline-ondersteuningsobjecten, waar Python-scripts jaloers op zijn.
Eenvoudig voorbeeld van syntaxis 1: De magie van powershell enkele en dubbele aanhalingstekens. Enkele aanhalingstekens kunnen met dubbele aanhalingstekens worden geciteerd. En andersom. Enkele en dubbele aanhalingstekens kunnen met @'' worden @引用. BAT werkte niet.
Missionarisverteller: Ik heb veel nagedacht over het ontwerp van de tutorial. Heb je het geschiedenisgedeelte van wat ik schreef niet gelezen dat heel [simpel en ruw] was? De geschiedenis wordt met één slag gedragen. Maar aangezien ik het gezegd heb, is het geen onzin, ik wil alleen dat studenten duidelijk maken dat sinds win7-win2008 de objectivering van scripts populair is geworden. Leidt naar het volgende hoofdstuk van objectgeoriënteerde verklaring. Elke PS-introductietutorial zou het verschil tussen karaktergeoriënteerd en objectgeoriënteerd moeten vermelden. Het is gewoon gepast om dit onderwerp in de geschiedenis van de commandoregel te wrijven.
---------- Hoofdstuk 2 De Wonderlijke -------------- van Objectgeoriënteerd Wat is een object, waarom is het objectgeoriënteerd, en waarom versterkt Microsoft het wiel?
Objectgeoriënteerd voorbeeld 1: Vraag: Ik eet 2,2 appels per dag, hoeveel appels eet ik in 17 dagen? A: 2,2 x 17 is beschikbaar. Het is ook mogelijk om i++ te gebruiken die door elke scripttaal wordt ondersteund. voor ($i = 1; $i -Tweede Deel 18; $i++)
{ $Apple = 2,2 + $Apple schrijf-presentator $i,$Apple
}
-------------------------------------------- Zodra de vraag verandert, zal ik je niet het aantal dagen vertellen, alleen zeggen, Ik eet 2,2 appels per dag, hoeveel appels eet ik van 20 januari tot 20 juni 2017? $days = ((ophaaldatum '2017-06-20') - (ophaaldatum '2017-01-20')).dagen #值151
Ik eet 2,2 appels per dag, hoeveel appels eet ik van 20 januari tot 20 juni 2020? $days = ((ophaaldatum '2020-06-20') - (ophaaldatum '2020-01-20')).dagen #值152
voor ($i=(ophaaldatum '2020-01-20'); $i -lt (ophaaldatum '2020-06-20'); $i=$i.adddays(1))
{ $Apple = 2,2 + $Apple schrijf-presentator $i,$Apple
}
Conclusie: Met het datumobject is het tellen van dagen, uren, enzovoort eenvoudig. [voor,,i++] is gebruikelijk, maar ik had nooit gedacht dat het getal i date-type kon zijn.
------------------------------------------
Wat zijn de voordelen van objectgeoriënteerd? Voor objectgeoriënteerd hebben we alleen strings en gehele getallen. 1 Er is een voorwerp. ----- [Karaktertype]----- De glyph heeft system.string, wat het meest basale is. System.Text.StringBuilder geheugen, vaak veranderend, grote strings
----- [Numeriek type]----- system.int32, system.int64, system.decimaal, system.double, System.Numerics.BigInteger oneindig geheel getal. Veelgebruikt is int32, decimaal.
Of 1/3*3 gelijk is aan 1 of 0,9999 hangt af van het datatype. ----- [Array]----- system.array array System.arraylist array verandert vaak, zoals altijd herschrijven, toevoegen of verwijderen; je moet dit gebruiken. De snelheid is relatief hoog. System.Collections.Generic.HashSet dedupliceert arrays. Hetzelfde als het setobject van Python.
-----【Form】----- 1 commando-uitvoer. Bijvoorbeeld dir, get-process. 2. Bij het schrijven van scripts gebruiken we objecten en attributen om te construeren.
----- [Anderen] ----- hashtabellen, bestanden, enzovoort.
2 heeft attributen. Attributen zijn argumenten en zijn kleiner dan strings. Voordat er geen attributen meer zijn, moeten we strings filteren en filteren met [hersenverbrandend regular], aangeduid als [deductiestring]. Als je attributen hebt, heb je ze niet nodig. 3 Er is een weg. De methode is het programma, de code. Je hoeft het zelf niet te herschrijven. Bat is zeker niet goed, dat kan niet, er is ook een persoonlijke schrijfstijl, onbetrouwbaar, durf het niet te gebruiken. Methoden kunnen zelfgeschreven ps-functies zijn, zelfgeschreven methoden in ps-klassen. De methode die je zelf schrijft kan tijdelijk worden samengevoegd met een derde partij klasse. De methode die je zelf schrijft kan tijdelijk [samengevoegd] worden in de .net-klasse.
Wat zijn de nadelen van objectgeoriënteerd? De predikant leert powershell aan mensen die winxp gebruiken. De persoon zei dat PowerShell niet goed is, het object te geheugenintensief is, en hij heeft gelijk. In cmd geef ik 100 bestandsnamen (strings) terug met dir. In PowerShell gebruik ik dir om 100 bestandsobjecten terug te geven, en Powershell neemt veel geheugen in beslag. Maar nu is het anders: 1. Onnodige inhoud mag niet bestaan in variabelen. Of vernietig het direct na gebruik om het geheugengebruik te verminderen. 2. De geheugenverlies is genoeg. Omdat de CPU-prestaties niet langer kunnen stijgen, vergroten we het geheugen in een wanhopige poging ruimte te vervangen door tijd. 3. We willen krachtigere functies, en objectoriëntatie is tegenwoordig het meest basaal. Welke is niet objectgeoriënteerd, py, php, java, .net, c++?
Samenvatting: 1 Objecten zijn groter en geheugenintensiever dan strings. 2. Er zijn meer methoden voor objectoriëntatie en sterkere functies. 3 attributen zijn kleiner dan stringgranulariteit, wat erg handig is in gebruik. Vermijd de [gekke gebruik van hersenbrandende reguliere om te filteren] strijkers!
=== Gek gebruik van hersenverbrandende regulars om voorbeelden te filteren, batversie van ping standaard gateway === @echo off&setlocal maakt vertraagde uitbreiding mogelijk Echo zoekt naar de standaard gateway...
voor /f "usebackq delims=" %%i in ('ipconfig /all') doe ( echo %%i|find /i "gateway">nul|| echo %%i|find "default gateway" >nul als "!errorlevel!" =="0" ( voor /f "tokens=2 delims=:" %%a in ("%%i") doe voor /f "delims= " %%m in ("%%a") do set ipgate=%%m
)
)
De standaard gateway van Echo is: !ipgate! =========== de standaard gateway.ps1 pingen============ $default gateway = (get-netroute -DestinationPrefix 0.0.0.0/0). NextHop & ping.exe $ Standaard Gateway
# test-verbinding $ standaard gateway =======================
V: Zelfs als objectgeoriënteerd zo goed is, waar komen deze objecten dan vandaan? A: Uit de .net-bibliotheek.
---------- Hoofdstuk 3 Introductie tot .NET --------------
V: Hoeveel versie-branchs heeft .NET Core? A: Er zijn momenteel drie versies. .NET 2.0 De nieuwste versie van .NET 3.51 .NET 4.0 De nieuwste versie van .NET 4.70 .NET Core 1.x De nieuwste versie van .NET 1.2 voor Apple-systemen, Linux-systemen en embedded systemen. .NET Core 2.x De nieuwste versie van .NET 2.0 voor Apple-systemen, Linux-systemen en embedded systemen.
V: Hoeveel functionele takken heeft .net? A: Desktopbranch in .NET. WinForm. Voor het ontwikkelen van desktopvensters. Geluidsbibliotheek asp.net in .NET en .NET Core. Webserverfunctiebibliotheek. Vroeger opende ik een B/S-webserver. F# in .NET en .NET Core. Bevat wiskundige bibliotheken, trigonometrische functiebibliotheken, enzovoort. PowerShell in .NET en .NET Core. Bevat veelvoorkomende systeembeheerinterfaces zoals scriptbestanden. Linux ◦Ubuntu 14.04 \ 16.04 ◦CentOS/RHEL 7 en hoger ◦open SUSE 42 en hoger ◦Arch Linux (archl inux heeft geen versienummer) ◦LINUX docker container ◦Linux AppImage container (draagbare applicatie enkelvoudige binair) https://github.com/probonopd/AppImageKit
MAC OS X ◦OS X 10.11
V: Hoe maakt een .NET-programma (C#-programma) verbinding met een MySQL-server? A: Ga naar de officiële mysql-website om de connector voor de .NET-taal te downloaden. mysql-connector-net-6.9.9-noinstall.zip--->v4.5--->MySql.Data.dll Voeg de MySql.Data-klasse toe aan .net en voeg de database-interface toe.
Conclusie: WinXP-machine installeer eerst .net 3.51, win7 en win2008 machine, installeer eerst .net 4.62 of hoger.
.net bestaat al vele jaren, en er zijn niet veel software die .net ondersteunt dan Java. Alle .net-branchs, interfaces (databases, WeChat, enz.). ) Die DLL's, die bibliotheken, PowerShell kunnen worden aangeroepen. Het is precies hetzelfde als de exe geschreven in C#.
V: Naast de .NET-branchinterface, welke eigen bibliotheken (modules) zijn PowerShell zelf? A: Zie het volgende hoofdstuk
---------- Hoofdstuk 4 gebruikte vaak ingebouwde bibliotheken, externe bibliotheken en bibliotheken van derden in PowerShell --------------
Hulp bij zendelingen: Dit hoofdstuk kan niet besproken worden, maar het is slechts een lijst van bibliotheken en handleidingen. Bladwijzer dit hoofdstuk. Na het bekijken van deze bibliotheken weet je wat PowerShell kan doen.
Win2012 Handmatige Adres: (Meest gebruikte advertentiemodule)
https://technet.microsoft.com/zh-cn/library/dn249523(v=wps.630).aspx AD gebruikersgroepbeheer, DHCP, DNS, printer, bestandsdeling, IIS, schijf, netwerkkaart,
exchange2016
https://technet.microsoft.com/zh-cn/library/bb124413.aspx Active Directory 12 Anti-Spam en Anti-Malware 59 Klanttoegang 100 Extensieagent 4 E-mailadressen en adresboeken 37 Federatie en hybride configuratie Hoge beschikbaarheid Poststroom Brievenbus Mailboxdatabase Mailboxserver Verhuizen en migreren Organisatie Toestemmingen Beleid en naleving Beveiliging Servergezondheid, monitoring en prestaties Deel en werk samen Unified Message Gebruikers en groepen
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 en enterprise-grade virtuele machines.
Cliënten: Diensten en processen, logboeken, registers, bestandsdirectories, beheer op afstand. Getimede taken.
Internet: FTP, mail, SSH-clientplug-in voor Linux-serververbinding.
Sms: XML, HTML, CVS, JSON, EXCEL, enzovoort.
Tekst 2 stem
Grafische interface.
Microsoft Scripting Center
https://gallery.technet.microsoft.com/scrip{过滤}tcenter/
PowerShell software source officiële website --- officiële PowerShell-bibliotheek.
https://www.powershellgallery.com
De andere Niu X-bibliotheken staan allemaal op github. Daarnaast publiceren de missionarissen regelmatig de [Niu x Magisch Wapen] van [Hidden Foot Pavilion], een nuttige bibliotheek van een derde partij PowerShell.
---------- Hoofdstuk 5 Beginners moeten leren hoe ze het gebruik van commando's kunnen ondersteunen--------------
V: Hoe weet ik de PowerShell-versie? A: $PSVersionTable
V: Ik ken de module niet, hoe vind je die? A: get-module -ListBeschikbaar
V: Hoe vind ik commando's als ik er maar een deel van ken? A: get-command *service*
V: Ik ken het commando, maar ik weet niet welke parameters in het commando staan, hoe moet ik die parameters weergeven? A: get-help write-host -Parameter * show-command schrijf-host
V: Ik ken de parameter, maar ik weet niet welk commando deze parameter heeft, hoe vind ik het commando? A: get-command -ParameterName-codering
V: Hoe krijg ik hulp bij een commando via de commandoregel? A: Get-Help get-date
-Voorbeelden van commando's -online online handleiding
V: Ik ken de attribuutmethode van het commando niet (ik ken het object niet), hoe vind ik het? A: "ABC" | get-member get-date | get-member
V: Waar is de Chinese .NET-handleiding? A: msdn。 De meest basale eigenschappen en methoden van strings staan in de handleiding.
https://msdn.microsoft.com/zh-cn/library/system.string.aspx
---------- Hoofdstuk 6 Introductie tot Veelvoorkomende Commando's --------------
Het eerste commando om te leren is dir V: Waarom gebruik je powershell dir [d.w.z. Get-ChildItem] in plaats van cmd dir? A: Objectgericht, sterke methode en veel eigenschappen. $file = dir a:\pscode\temp183\aaa.txt $file. Volledige naam #返回全路径属性 $file. BaseName #返回文件名属性 $file. Uitbreiding #返回扩展名属性 $file. LastWriteTime #返回最后写入时间属性
De eerste syntaxis die je moet leren is array-syntaxis. $a = @(xxx commando) V: Soms moet je [karaktergebaseerde externe commando's] gebruiken om de returnwaarden in arrays te verdelen op basis van gedragseenheden. A: $a = @(ipconfig) $a[8] #第9行
Gebruik van get-childitem: Toegevoegde parameters in PowerShell 3.0 en hoger
get-childitem d:\xxx -file #过滤, alleen uitvoerbestanden uitvoeren -Directoryfiltering, alleen uitvoerdirectories -Verborgen filtering, alleen verborgen uitgang
V: Een bestand openen, segmenteren op gedrag, in een array plaatsen? A: $a = Get-Content a:\pscode\temp183\aaa.txt -ReadCount 0
V: Open een bestand als een grote string en sla de hele variabele op? A: $a = Get-Content a:\pscode\temp183\aaa.txt -raw
$a,$b,$c = 1,2,3
V: Hoe voer ik commando's op de achtergrond uit? A: Er was een cmd /c "commando" in de oudheid. Nu is er powershell /c "commando", of powershell -c "commando", PowerShell -bestand "script.ps1" -argument 1 aaaa -parameter 2 1234 start-process -path xxx.exe -ArgumentList '-parameter1 aaaa -parameter2 1234'
V: Ik wil het script uitvoeren met een andere lokale gebruiker, maar PowerShell heeft geen runas. Vergelijkbare exe-commando's? A: Er zijn verschillende sessies in PowerShell. ip + poort + gebruikersnaam + wachtwoord = een sessie, ik hoef alleen de gebruikersnaam te wijzigen, het wachtwoord te wijzigen, en jij kunt de rechten aanpassen. Omdat rechten aan de gebruiker zijn gekoppeld. Op dezelfde manier hoef ik alleen n sessies aan te maken om te gebruiken, zonder van gebruiker te wisselen. De belangrijkste new-pssession heeft de parameter -Credential, voer het gebruikerswachtwoord in, wat niet hetzelfde is als runas. Is exe hetzelfde? Wat is SmbSession nog meer? Dus ik denk niet dat het nodig is om runas in PowerShell te gebruiken. exe。 Je hoeft die commando's gewoon te gebruiken met session en Credential, toch?
Controleer de commando's met de naam [Credential] in de parameternaam: get-command -ParameterName Credential
Bekijk commando's met het [sessie]-personage in het commando: get-command *sessie*
V: Hoe stuur ik een e-mail met PowerShell? A: Verzend-MailBericht -Onderwerp 'Onderwerp' -Van "je hotmail-account @hotmail.com" -Naar "je QQ-e-mail @qq.com" ' -SmtpServer "smtp.live.com" -poort 587 -useSsl -credential "uw hotmail-account @hotmail.com" ' -Bijlagen $Attachments -BodyAsHTML -body $HTML de inhoud van de e-mail
Notitie: 1 Gebruikxxx@QQ.com+ Je QQ-wachtwoord + het bovenstaande commando Een e-mail sturen werkt niet. Omdat Tencent voor de beveiliging van QQ-wachtwoorden onafhankelijke e-mailwachtwoorden vereist. 2 Verzenden vanaf een QQ-mailbox is standaard niet mogelijk. Het is uitgeschakeld en je moet SMTP aanzetten in de instellingen. 3 PowerShell 3.0 en hoger ondersteunen alleen poortparameters. Voor win7 moet je eerst de nieuwste versie van PS installeren
V: Monitor de win-CPU, schijf, netwerk, IO, enzovoort. A: Prestatiemonitor of Get-Counter haalt prestatietellergegevens op van zowel lokale als externe computers.
V: Hoe kan ik zien welke counter-items beschikbaar zijn? A: Het staat allemaal in de handleiding. Bekijk wat de belangrijkste categorieën van gebruik zijn: Get-Counter -ListSet * | Sort-Object CounterSetName | Format-Table CounterSetName
Bijvoorbeeld, ik weet nu dat de schijfcategorie (PhysicalDisk) is, en controleer dan de subcategorieën in de schijf, gebruik: (get-counter -listSet PhysicalDisk). Paden
V: Hoe bekijk ik de logboeken? A: Event Viewer, of get-eventlog
V: Hoe voer ik strings uit? A: $cmd 1 = 'xxxx' Invoke-Expression $cmd 1
We hebben veel geleerd over individuele commando's, laten we eens kijken naar de uitvoering van Powershell-scripts.
---------- Hoofdstuk 7 PS1 Scripting, Debugging en Draaien -------------- Een script is een combinatie en overlay van commando-instructies. Het script is lijm, ga rond op zoek naar anderen om te bellen, zoek naar wielen om de auto in elkaar te zetten. In plaats van wielen te maken, voor anderen om te gebruiken.
Cainiao vroeg: Hoe schrijf je een script? De oude vogel antwoordde: 1 De details van het probleem moeten worden verduidelijkt. Bijvoorbeeld: maak maankoekjes. 2 De probleemoplossende ideeën zijn ook in feite afgerond. Bloem en water, de vulling erbij, stoom. 3 Welke commando's en variabelen te gebruiken. Voeg vijf korrels toe, doe ze in een vorm en knijp eruit. 4 Schrijf eerst globaal, schrijf globaal. 5 Debuggingen zijn doorgegaan. 6 Schrijf in detail. Beschouw de foutsituatie, plus de foutcode, het foutbericht. Verwijder foutgevoelige code die niet gemakkelijk compatibel is. Herschrijf code die niet goed presteert. Tot nu toe ziet een goed script er misschien niet goed uit, maar het zou wel heel nuttig moeten zijn. 7 Fijn vervaardigd. Refactoring, het schrijven van hergebruikte codefragmenten in functies. Herschrijf variabelenamen zodat mensen ze in één oogopslag kunnen begrijpen. Formatteren de code goed en de inspringing doen.
V: Welke IDE wordt gebruikt om PS1 te schrijven? A: Het meest aanbevolen is om Visual Studio Code te gebruiken, plus de PowerShell-plug-in. Functies: Codeprompts, autocomplete, codeformattering, inspringing om spatie of tabblad te kiezen, bestandscoderingsinstellingen. Er is een plugin genaamd FTP-sync, die PS1-scripts kan schrijven in Win's VSCode en deze automatisch synchroniseert met de Linux-map wanneer ze worden opgeslagen.
V: Welke tools worden gebruikt om PS1 te debuggen? A: De meest aanbevolen powergui life gebruikt geen locomotief, zelfs als het een held is, het PS-script springt ook en rapporteert een fout! VScode is ook prima
V: Welke tools gebruikt u voor code-opmaak? A: Alles wat ingesprongen moet worden, wordt ingesprongen, en de gelijke tekens zijn uitgelijnd.
PowerShell ISE + ISE Plugin [ISESteroids]
Installatie: Install-Module -Naam ISESteroids
ISE loopt: Start-Steroids
V: Welke tools gebruik je om de codekleur mooi te maken? A: 1 Gebruik de bovenstaande tools om de code te formatteren. 2 Gebruik PowerShellise + Missionary DIY kleurmatching 2016 editie. 3 Pak de foto. De mooiste en mooiste gekleurde PowerShell-code ter wereld wordt geproduceerd.
Al deze IDE's zijn in het Chinees.
V: Hoe geef ik een script een naam? xxx.ps1 A: Het wordt aanbevolen om te beginnen met 1---2 letters en voor de rest de Chinese bestandsnaam te gebruiken. Bijvoorbeeld: [BF maakt een back-up van alle oude files_ en verwijdert .ps1 van 10 dagen geleden] Op deze manier typ je eerst [bf] en klik je dan op tab om de scriptnaam compleet te maken.
V: Hoe schakel ik de PowerShell-scriptuitvoeringsrechten in? A: echo De volgende code kan worden uitgevoerd in cmd met beheerdersrechten of in PowerShell met beheerdersrechten. Echo als je PowerShell Remoting Remote gebruikt. Zowel de lokale machine als de externe machine moeten met beheerdersrechten worden uitgevoerd. "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -commando "Set-ExecutionPolicy -ExecutionPolicy Unrestricted" "C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -commando "Set-ExecutionPolicy -ExecutionPolicy Unrelimited" & "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -commando "Set-ExecutionPolicy -ExecutionPolicy Unrestricted" & "C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -commando "Set-ExecutionPolicy -ExecutionPolicy Unrestricted" Pauze
V: Wat zijn de nadelen van de locomotief (powergui)? A: Kan de achtergrondkleur niet instellen.
V: Wat zijn de nadelen van vscode? A: $ en variabelennaam hebben niet dezelfde kleur. Debuggingfuncties zijn traag en soms vastlopen.
V: Wat zijn de nadelen van ISE? A: Je kunt niet kiezen om de codering op te slaan of te converteren. Inspringen naar [spatie], [tab] beide. In andere tekstbewerkingssoftware wordt inspringing weergegeven.
---------- Hoofdstuk 8 Echte Gevechtsoefening -------------- De groep 6504748 en schreef dit deel zelf.
5. Voorbeeld 1: Zet de dienst aan en uit 6. Voorbeeld 2: Controlefirewall (Openen, Sluiten, Regelen) 7. Voorbeeld 3: Stel een beleid in (wachtwoordbeleid als voorbeeld)
---------- Hoofdstuk 9 Deze extra keuzevakken ben je geïnteresseerd? -------------- PowerShell-script, commandoregelargumenten geven waarden door en binden variabelenvoorbeelden
http://www.cnblogs.com/piapia/p/5910255.html
Laat PowerShell slechts één script tegelijk draaien (voorbeeld van proceswederzijdse uitsluiting)
http://www.cnblogs.com/piapia/p/5647205.html
powershell-karakterinterface, powershell plus WPF-interface, spel 2048
http://www.cnblogs.com/piapia/p/5531945.html
Twee crawlers in PowerShell
http://www.cnblogs.com/piapia/p/5367556.html
PowerShell-script: Willekeurige wachtwoordgenerator
http://www.cnblogs.com/piapia/p/5184114.html
Voorbeeld van een PowerShell-recursief algoritme
http://www.cnblogs.com/piapia/archive/2013/01/29/2881011.html
PowerShell Voice Calculator
http://www.cnblogs.com/piapia/archive/2012/10/20/2731506.html
1 Vermeld alle EFS-versleutelde bestanden. 2Decrypt alle EFS-versleutelde bestanden
http://www.cnblogs.com/piapia/p/4702514.html Het is een tool geschreven voor systeembeheerders en netwerkbeheerders. Nadat een werknemer zijn baan heeft verlaten, gaat zijn schijf ervan uit dat er 10.000 bestanden (directories) zijn, waarvan er 3 bestandsmappen zijn die door EFS zijn versleuteld. In Verkenner zijn deze drie bestanden groen. Maar als je één voor één op (10.000 catalogi) klikt, of het nu groen is of niet, ben je uitgeput. Op dit moment gebruikt de netwerkbeheerder het WIN-account van de medewerker, logt in op de pc van de werknemer en gebruikt dit script om alle EFS-versleutelde bestanden weer op te sommen.
---------- Hoofdstuk 10 Stel alsjeblieft een vraag-------------- Dames en heren, als er iets te melden valt, verlaat dan de rechtbank zonder iets.
----------Hoofdstuk 11 Linux Hoofdstuk--------------
Missionaris: Zolang je de Linux-versie van PowerShell kunt installeren, heb je alleen ps1-scripts nodig, geen sh-scripts. Interpretatie: 1 Kortom, bash heeft alleen syntaxis, geen commando's en bibliotheken. 2 bash heeft slechts 1% syntaxisfuncties, PowerShell kan het niet implementeren. Dit is normaal, geen twee bladeren zijn precies hetzelfde in de wereld. Dit betekent dat je alleen het PS1-script nodig hebt, geen SH. 3 bash is te oud, dezelfde functie, Powershell kan worden geïmplementeerd en kan ook tijd besparen, zoals 10.000 lege fors, Powershell moet 90% van de tijd besparen. 4 Leer /usr/bin/powershell te gebruiken in plaats van /usr/bin/bash. Andere Linux-commando's, pipelines, oude kungfu, enzovoort, worden precies hetzelfde gebruikt als in bash. 5 Gebruik geleidelijk objectgeoriënteerde, eenvoudige en krachtige PowerShell-commando's en -bibliotheken in plaats van hersenverbrandende Linux-commando's, of beide. ---Dit is het algemene principe, de algemene lijn.
V: Welke versies van Linux kunnen PowerShell installeren? A: ◦Ubuntu 14.04 / 16.04 ◦CentOS/RHEL 7 en hoger ◦open SUSE 42 en hoger ◦Arch Linux (archl inux heeft geen versienummer) ◦LINUX docker container ◦Linux AppImage container (draagbare applicatie enkelvoudige binair) https://github.com/probonopd/AppImageKit
V: Waarom wordt gezegd dat de commandoregel van win sterker is dan die van Linux? A: Commands in 1 win zijn geëvolueerd tot objectgeoriënteerd PowerShell. Linux werkt nog niet. Van win7 naar win2012r2 eindigt de evolutie.
2 Ik hoorde vroeger dat Unix veel Linux-commando's heeft en erg krachtig is. Maar nu vertel ik je dat PowerShell-commando's minstens tien keer zo hoog zijn als Linux-commando's. Hoe dan ook, ik heb het mijn hele leven niet geleerd.
Linux is meer grafafhankelijk, met te weinig commando's. En het win-commando is veel meer dan Linux. 3.1 In elke Linux zijn de commando's in de mailserver steeds completer dan in Exchange? Handiger dan ruilen? 3.2 De DNS-serverbinding van Linux is niet zo handig als het DNS-commando win. Heeft Bind een [commando] om een IPv4 A-record toe te voegen aan een domeinnaam? Nog niet afhankelijk van webgraphics? Sommige mensen zeggen dat je nsupdate moet gebruiken. Dat gaat niet om het maken van een tekst en die dan uitvoeren. Wat is het verschil tussen het vervangen van het [DNS zone-bestand] door sed en het opnieuw laden van de [DNS-zone]?
4 In de nieuwe versie van win, of in PowerShell, is het allemaal [commando + parameter]. En het grootste deel van Linux is nog steeds [sed-tekst]. 4.1 Neem het IP-adres dat aan de netwerkkaart is toegewezen als voorbeeld. NMCLI Connection Add Type Ethernet Con-Name NEW_STATIC IFNAME ENO1234567 IP4 192.168.1.111 GW4 192.168.1.1, Is het niet handiger dan sed gebruiken om het ifcfg-eth0-bestand te scrapen?
5 Elke taal verwerkt data, en scripting ook. Met behulp van objecten is PowerShell handiger dan awk. Shenma csv, excel, xml, json SQL-tabel, NOSQL-tabel. html, enzovoort.
V: Hoe implementeert PowerShell [sed -i "s/what to look for/replace with /g" bestandsnaam]? A: @(Get-Content bestandsnaam) -vervang 'aaa','bbb' | Set-Content bestandsnaam $aaa Dat wil zeggen, open het bestand, vervang het, sla het bestand op.
V: Waarom gebruiken steeds minder mensen SED in Linux? A: Argument 1: AWK kan SED vervangen, maar SED kan AWK niet vervangen. sed, dat wil zeggen, vind simpelweg de substitutie. AWK heeft voor en dergelijke om complexe verwerking te implementeren.
Argument 2: AWK gebruikt de standaard regular, en de regular van sed is hetzelfde als die van sed, maar de delen zijn verschillend. Het leren van SED betekent dat twee sets onverenigbare reguliere standaarden in de hersenen tegen elkaar vechten.
V: Dus het is juist om AWK te leren? A: PowerShell leren is makkelijker dan AWK leren. PowerShell gebruikt [split en then split], [if and if], where-object, string.substing(), string[-3], enzovoort. Breek het stringprobleem laag voor laag op. Eenvoudiger dan awk gewoon.
V: Kunnen pipelines en AWK worden gebruikt in PowerShell? A: Je kunt awk aanroepen in PowerShell, precies hetzelfde als in Bash. De oude vechtsporten zijn volledig Turijn.
V: Hoe implementeer je de [awk '{print $3}'] functie in PowerShell? A: ($line -split "\s+|\t+") [0] #第一行 ($line -split "\s+|\t+") [2] #第三行
Get-Content /xxx/yyy.txt | foreach-object {$_.split()[2]} #awk '{print $3}'
V: Hoe implementeer je de [awk -f a.awk file] functie met PowerShell? A: In wezen is dit een filterfunctie die een pijp gebruikt. In PowerShell wordt dit een filter of filter genoemd. PowerShell ondersteunt de combinatie van commando + pijp + filter. Zoals in Command 1 | Filter 1 | Commando 2 | Filter 2 | Filter 3 Filterfilter1
{ AWK-achtige functionaliteit
}
V: Is er [xargs] in PowerShell? A: De pipevariabele die in de pijplijn wordt gebruikt, heet [$psitem], en de alias is [$_]. PowerShell gebruikt foreach-object en $_ om de functie van xargs te implementeren.
V: Is er een [<] [<<] nummer in PowerShell? A: Nee. Misschien is het [<] symbool van rechts naar links anti-menselijk denken. Veel commando's in PowerShell zijn veranderd naar links naar rechts. Als get-random < (1..100) niet legaal is in PowerShell, moet de legale get-random -inputobject (1..100) zijn, of 1. 100 |get-random Minder dan 1% van de vreemde commando's [moet] vertrouwen op het [<]-symbool, wat kan worden bereikt door cmd in PowerShell aan te roepen of bash (PowerShell voor Linux) in PowerShell. Bijvoorbeeld, $a = bash -x "commando 1 < commando 2" #linux Bijvoorbeeld, $a = cmd -c "commando 1 < commando 2" #cmd
V: Is er een verwachtingscommando in PowerShell? Hoe verbind je met een Linux SSH-server vanuit Win met PowerShell? A: 1. Ja. Voor enkele vreemde en gedeeltelijke deurresponsbehoeften zijn er modules van derden. 2 Nee. PowerShell gebruikt het expect-commando niet, maar gebruikt een sessie.
Gebruik Powershell + SSH clientbibliotheek + IP + poort + gebruikersnaam + wachtwoord om het te combineren tot een verbinding en commando's naar deze verbinding te sturen. De code is als volgt: $connection 1 = New-SSHSession -ComputerName 1.1.1.1 -Port 22 -Credential aaaa #将提示输入密码 $to return = Invoke-SSHCommand -Command {cat /etc/issue} -SSHSession $Connection 1
Deze standaardfunctionaliteit zoals (MongoDB, mysql, ssh, ftp, http, telnet, enz.) heeft drivers of modules. PS en. .netprogram, via de driververbinding, commando's verzenden en data accepteren. De voordelen van het gebruik van modules of drivers om [data] te verzenden en ontvangen zijn: De data wordt omgezet in een .net-object, dat op zijn beurt weer wordt omgezet in een PS-object. Anders zijn het allemaal strings, en zijn de [objectgeoriënteerde vechtsporten] van de PS-sekte nutteloos.
Neem MongoDB als voorbeeld, wat zijn de voordelen van het gebruik van modules of drivers om commando's te verzenden? Wie praat? Ik vind dat de voordelen zijn: 1 Multithreading. De achtergronddraad draait en bezet niet de huidige draad. 2. We kunnen op elk moment [halverwege de verbinding maken] met de sessie, andere PS-code, functies uitvoeren en [op elk moment terugkeren naar de sessie]. Scripts zijn flexibeler om te schrijven en makkelijk te debuggen. 3session brengt meerdere gebruikers en verschillende gebruikers kunnen verschillende serverrechten hebben.
V: Is er een su, runas-commando in PowerShell? Hoe voer je het commando van een andere gebruiker uit met PowerShell? A: Nee. In PowerShell is het uitvoeren van Linux-native commando's en pijplijnen moeiteloos. Bijvoorbeeld: sshaaa@127.0.0.1"Uitgevoerd met AAA-rechten van de gebruiker, commando xxx" sshpass -p user_password sshaaa@192.168.1.1
V: Twee Linux-machines met SSHD? Hoe verbind je commando's met PowerShell en stuur je die verstuurd? A: Naast bovenstaande methode kun je ook de methode gebruiken om een nieuwe Linux-sessie aan te maken. (Verbonden van Linux met een andere SSHD) Opmerking: Deze methode vereist het bewerken van het /etc/ssh/sshd_config-bestand. Voeg de volgende regel toe Subsysteem powershell powershell -sshs -NoLogo -NoProfile Daarna start je de SSHD-server opnieuw op. De gedetailleerde handleiding is hier:
https://github.com/PowerShell/PowerShell/tree/master/demos/SSHRemoting
Bevelen: $connect 2 = New-PSSession -HostName 127.0.0.1 -UserName user006 #手动输入密码或用-KeyFilePath optie invoke-command -session $connect 2 -scrip{filter}tBlock {new-item ~/ccc.txt}
Samenvatting: Win-client, verbonden met de Linux-server. Momenteel zijn modules van derden verplicht, dit is natuurlijk een module in de officiële bibliotheek, gebruik gewoon de installatiemodule PoshSSH. Linux-client, verbonden met de Linux-server. Je moet het bestand /etc/ssh/sshd_config bewerken. Linux-client, verbonden met een Win-server. Je moet de service op de server aanzetten. Vertrouw op de server op de client. Win-client, verbonden met Win-server. Je moet de service op de server aanzetten. Vertrouw op de server op de client.
V: Is er [grep] in PowerShell? A: Het select-string commando wordt gebruikt in PowerShell. Vanuit codeerperspectief alleen al hebben select-string=smart, grep=stupid + een harde zwakte :mrgreen: Wanneer er een BOM-header is, herkent select-string automatisch het bestandscoderingstype. Wanneer er geen BOM-header is, is het niet nodig om de shellomgeving zoals linux+grep te wijzigen, en is het niet nodig om bestanden op te slaan volgens een bepaalde code. Je hoeft alleen de -encoderingsparameter op te geven volgens de bestandscodering. En grep heeft deze functie niet, dat wil zeggen, er is een harde fout van [kan niet het type bestandscodering specificeren]. Natuurlijk is grep niet nutteloos, grep heeft enkele parameters, heeft extra unieke functies, select-string niet, dit is waar grep sterker is dan select-string.
V: Is er een [evaluatie] in PowerShell? A: Gebruik Invoke-Expression om strings uit te voeren in PowerShell.
V: Is er een staart-f in PowerShell? Het is mogelijk om de nieuw gegenereerde regels van een bestand in realtime uit te geven. A: Get-Content D:\a.txt -Staart 10 -ReadCount 0 -Wacht
V: Ik wil een klein toetsenbord gebruiken en ook een terminal met 256 kleuren, dus hoe moet de xshell worden opgezet? A: Terminal --- Terminal Type --- [putty-256color] of [export TERM=putty-256color] Terminal --- toetsenbord --- standaard of Linux.
Eterm-256color kan gnome-256color werkt niet Konsole-256color werkt niet Putty-256color PowerShell Missionary Oorspronkelijk Delen 2017-02-15 RXVT-256COLOR werkt niet Screen-256color werkt niet ST-256COLOR VTE-256COLOR werkt niet xterm-256color werkt niet Hetzelfde principe geldt voor SecureCRT
V: Wie is krachtiger, shell of python? A: Elk heeft zijn eigen sterke punten en kan elkaar aanvullen. Maar ze vullen elkaar niet aan. Meer hierover hieronder.
V: Waarom is de Linux-versie van PowerShell geschikter voor bedienings- en onderhoudspersoneel om scripts te schrijven? (Vergeleken met de Linux-versie van Python) A: 1 Python heeft objectgeoriënteerde functies, en de Linux-versie van PowerShell is beschikbaar.
2 Python heeft geen commandoregel. 2.1 Python kan niet de standaardterminal voor SSH zijn, maar PowerShell voor Linux wel. Zie het hoofdstuk: "Twee Linux-machines met SSHD? Hoe verbind je commando's met PowerShell en stuur je die verstuurd? 》 2.2 Het gebruik van shell-commando's (awk, grep, enz.) in Python is erg omslachtig. Je moet veel py-syntaxis en code toevoegen. PowerShell voor Linux voert de awk-commando's net als bash uit.
3 Python heeft geen pipes. Het is erg lastig om waarden door te geven tussen n [commandoregelprogramma's]. Je moet veel py-syntaxis en code toevoegen. De Linux-versie van PowerShell heeft pipelines, en het uitvoeren van awk-commando's is hetzelfde als bash.
4 Python heeft versie 2, versie 3 is niet compatibel met Cancer! Vraag. PowerShell voor Linux heeft dat probleem niet. 4.1 Deze vragen bevatten codeerproblemen.
Conclusie: Shell-commando's zoals grep zijn niet goed voor codeerondersteuning, niet zo goed als de codeerproblemen van 4.1 hierboven in PowerShell thuis. Plus de bovenstaande 2,3 punten. Het maakt Linux-gebruikers ongemakkelijk, maar heel weinig mensen gebruiken externe commando's in py. [py command library] en [shell command] zijn dood en kunnen elkaar eigenlijk niet aanvullen. De Linux-versie van PS is anders.
V: Waarom wordt gezegd dat PowerShell beter is dan Shell? A: PowerShell is objectgeoriënteerd en eigenschappen geven direct beschikbare data terug. Dit komt veel minder vaak voor dan in character scripting-talen (bat, shell) die stringdeducties vereisen. Geboren met minder [inhoud waar je aan moet ontsnappen]. 2 Stringzoeksubstitutie, er zijn methoden in PowerShell die geen ontsnapping vereisen, in de .NET-klasse. Bijvoorbeeld: [string]$a = 'abc\\def' $b = $a.vervang('\\','wanneer') #返回: [ABC als verdediging] Om te bepalen of een IP legitiem is, kun je de TryParse()-methode gebruiken in de IPAddress-klasse. Kortom, mijn suggestie is om zoveel mogelijk .net-methoden te gebruiken, zo min mogelijk regex te gebruiken, of gewoon eenvoudige reguliere methoden te gebruiken. 3 PowerShell gebruikt ['] als escape-symbool. ['] wordt minder vaak gebruikt dan [\] en wordt veel minder gebruikt als ontsnappingssymbool. 3.1 Bij het schrijven van databasescripts zijn er meer conflicten van [']. Bijvoorbeeld, ['table'] zal conflicteren met ['t], zoals ['biao'] conflicteert met ['b], en ik heb het later opgelost met ['table']. 4 ps string search and replacement, heeft een gewone engine, is compatibel met Linux en gebruikt ook [\] als ontsnapping. Er is echter een speciale tekenreeks-escapefunctie [[Regex]::Escape()], die eerst wordt geëscaped en vervolgens gevonden en vervangen, en de code is zeer leesbaar. $Original string vóór escape = '\+\&*|]' $escaped string = [regex]::escape($original string before escaping) ------------- Voorbeelden van scripts [string]$a = 'abc\\def' $Original snaar voor ontsnapping = '\' $Escaped string = [regex]::ontsnappen($Original string vóór ontsnapping) #[\]--->[\\] $b = [Regex]::vervang($a,$Escaped String, 'When') $b #返回 [ABC Dangdang VERDEDIGING] ------------- 5 bash en awk, elk heeft zijn eigen voor, elk zijn eigen ontsnapping. Samen is het gemakkelijk voor A om B te beïnvloeden, en A slikt B door. Het is ook gemakkelijk om problemen te krijgen bij het tegenkomen van ['], ["], [\], en [*]. Het is alsof je twee lagen lange broeken draagt: je trekt de ene laag aan, en de andere laag beweegt ook, je moet je zorgen maken over hun compatibiliteit. Dit is kanker en moeilijk op te lossen. Maar pinch, dit probleem kan tot op zekere hoogte ook worden vermeden. Dit vereist dat degene die de shell heeft geschreven het stinkende probleem oplost. [Zet de awk-code apart in het .awk-bestand, niet op de commandoregel] PowerShell heeft dit probleem niet, zet het op de opdrachtregel, zet het in het script, het heeft geen effect.
|