PowerShell-opdrachten elke ontwikkelaar zou moeten weten: 50+ Cmdlets om dingen gedaan te krijgen, prestaties monitoren, debuggen

geplaatst in: Articles | 0

veel ontwikkelaars houden van PowerShell, en voor een goede reden: het voegt kracht, functionaliteit en flexibiliteit toe aan de Windows-opdrachtprompt, waar velen van ons veel tijd doorbrengen. Het komt echter met een beetje een leercurve, maar als je eenmaal de essentiële commando ‘ s Onder de knie hebt die je moet weten, is het productiviteit op steroïden.,

PowerShell commando ‘ s staan bekend als cmdlets, en deze cmdlets zijn de drijvende kracht achter de functionele mogelijkheden. Van commando ’s die de algehele Windows-ervaring verbeteren tot commando’ s die nuttig zijn voor ontwikkelingswerk, er zijn tientallen belangrijke commando ‘ s die ontwikkelaars moeten weten., We hebben samen deze lijst om te dienen als een handig naslagwerk voor degenen die net beginnen om de kracht van PowerShell, evenals degenen die willen om het niveau van hun PowerShell-ervaring, waaronder:

  • Basic PowerShell-Cmdlets
  • PowerShell Commando ‘ s om Dingen Gedaan te Krijgen
  • Cmdlets voor het Monitoren van Prestaties, het Testen en Debuggen

naast cmdlets er zijn tientallen parameters en methoden die u helpen om het meeste uit uw scripts., De WhatIf parameter is vooral handig voor het testen van PowerShell scripts zonder ze daadwerkelijk uit te voeren (@pluralsight). Er zijn doorgaans verschillende parameters en methoden beschikbaar voor elk commando. De onderstaande commando ‘ s zijn een goed uitgangspunt voor elke ontwikkelaar, maar om de voordelen volledig te realiseren, moet je parameters en andere methoden ook beheersen.

basis PowerShell-Cmdlets

Deze Basispowershell-opdrachten zijn nuttig voor het verkrijgen van informatie in verschillende formaten, het configureren van beveiliging en basisrapportage.,

Get-Command

Get-Command is een eenvoudig te gebruiken referentie-cmdlet die alle commando ‘ s weergeeft die beschikbaar zijn voor gebruik in uw huidige sessie.

Typ gewoon dit commando in:

get-command

De uitvoer zal er ongeveer zo uitzien (@MS_ITPro):

2. Get-Help

Het Get-Help commando is essentieel voor iedereen die PowerShell gebruikt, en biedt snelle toegang tot de informatie die je nodig hebt om alle beschikbare commando ‘ s uit te voeren en te werken.

Als u een aantal voorbeelden wilt, bijvoorbeeld, voer dan het volgende in (@jp_jofre):

3., Set-ExecutionPolicy

Microsoft schakelt standaard scripts uit om te voorkomen dat kwaadaardige scripts worden uitgevoerd in de PowerShell-omgeving. Ontwikkelaars willen echter scripts kunnen schrijven en uitvoeren, dus het commando Set-ExecutionPolicy stelt je in staat om het beveiligingsniveau rondom PowerShell scripts te bepalen. U kunt een van de vier beveiligingsniveaus instellen:

  • Restricted: dit is het standaard beveiligingsniveau dat het uitvoeren van PowerShell-scripts blokkeert. In dit beveiligingsniveau kunt u alleen interactief opdrachten invoeren.,
  • all Signed: met dit beveiligingsniveau kunnen scripts alleen worden uitgevoerd als ze zijn ondertekend door een betrouwbare uitgever.
  • Remote Signed: In dit beveiligingsniveau mogen alle PowerShell-scripts die lokaal zijn gemaakt, worden uitgevoerd. Scripts die op afstand zijn gemaakt, mogen alleen worden uitgevoerd als ze zijn ondertekend door een gerenommeerde uitgever.
  • onbeperkt: zoals de naam al doet vermoeden, staat het onbeperkte beveiligingsniveau alle scripts toe om te draaien door alle beperkingen uit het uitvoerbeleid te verwijderen.,

Als u in een onbekende omgeving werkt, kunt u eenvoudig achterhalen wat het huidige uitvoerbeleid is met behulp van dit commando:

Get-ExecutionPolicy

bekijk deze thread op SuperUser voor meer informatie over het configureren van het uitvoerbeleid in PowerShell. (@StackExchange)

Get-Service

Het is ook handig om te weten welke services op het systeem zijn geïnstalleerd., U kunt eenvoudig toegang krijgen tot deze informatie met het volgende commando:

Get-Service

De uitvoer zal er ongeveer als volgt uitzien (@ms_itpro):

Als u wilt weten of een specifieke service is geïnstalleerd, kunt u de-Name-schakelaar en de naam van de service toevoegen, en Windows zal de status van de service tonen. Daarnaast kunt u filtermogelijkheden gebruiken om een specifieke subset van momenteel geïnstalleerde services te retourneren., Het volgende voorbeeld zal resulteren in een uitvoer van gegevens van het Get-Service commando dat is doorgesluisd naar de Where-Object cmdlet, die dan alles filtert buiten de services die gestopt zijn:

Get-Service | Where-Object {$_.status -eq "stopped"}

Bekijk dit bericht voor enkele extra voorbeelden van Get-Service in actie.

5. ConvertTo-HTML

Als u gegevens wilt extraheren die u kunt gebruiken in een rapport of naar iemand anders kunt verzenden, is de ConvertTo-HTML een eenvoudige manier om dit te doen., Om het te gebruiken, pijp je de uitvoer van een ander commando naar het ConvertTo-HTML commando en gebruik je de-Property schakelaar om aan te geven welke uitvoereigenschappen je wilt in het HTML bestand. U moet ook een bestandsnaam opgeven.

bijvoorbeeld, de volgende code maakt een HTML-pagina aan die de PowerShell aliassen in de huidige console weergeeft:

PS C:\> get-alias | convertto-html > aliases.htmPS C:\> invoke-item aliases.htm

Bonus: de

Export-CSV

cmdlet functies op vrijwel dezelfde manier, maar exporteert gegevens naar a .CSV-bestand in plaats van HTML., Gebruik

Select-Object

om aan te geven welke eigenschappen u in de uitvoer wilt opnemen.

Bekijk dit artikel van 4sysops voor meer informatie over het effectief gebruiken van ConvertTo-HTML (@adbertram).

6. Get-EventLog

U kunt PowerShell gebruiken om de gebeurtenislogboeken van uw machine te ontleden met behulp van de Get-EventLog cmdlet. Er zijn verschillende parameters beschikbaar. Gebruik de schakelaar-Log gevolgd door de naam van het logbestand om een specifiek logbestand te bekijken., Je zou bijvoorbeeld het volgende commando gebruiken om het toepassingslogboek te bekijken:

Get-EventLog -Log "Application"

Bekijk nog een paar voorbeelden van Get-EventLog in actie in dit bericht (@nextofwindows). Andere veel voorkomende parameters zijn (@SS64):

  • -Verbose
  • Debug
  • -ErrorAction
  • -ErrorVariable
  • -WarningAction
  • -WarningVariable
  • -OutBuffer
  • -OutVariable

Get-Proces

Veel als het krijgen van een lijst van aangeboden diensten, het is vaak nuttig om te worden in staat om snel een lijst van alle actieve processen., Het Get-Process Commando plaatst deze informatie binnen handbereik.

Bonus: Gebruik Stop-proces om processen te stoppen die bevroren zijn of niet meer reageren. Als u niet zeker weet welk proces u omhoog houdt, gebruik Get-proces om snel het problematische proces te identificeren. Zodra u de naam of proces-ID hebt, gebruikt u Stop-proces om het te beëindigen.

Hier is een voorbeeld., Voer dit commando uit om alle momenteel draaiende exemplaren van Kladblok (@MS_ITPro) te beëindigen:

Stop-Process -processname notepad

u kunt ook jokertekens gebruiken, zoals het volgende voorbeeld dat alle exemplaren van Kladblok beëindigt evenals alle andere processen die beginnen met Opmerking:

Stop-Process -processname note*

Bekijk dit bericht voor meer informatie over het doden van processen met PowerShell (@HowToGeek):

8. Clear-History

Wat als u de items uit uw commandogeschiedenis wilt wissen? Eenvoudig te gebruiken de Clear-History cmdlet. U kunt het ook gebruiken om alleen specifieke commando ‘ s te verwijderen., Het volgende commando zou bijvoorbeeld commando ‘ s verwijderen die “help” bevatten of eindigen op “command”(@ms_itpro):

PS C:\> Clear-History -Command *help*, *command

Als u items aan een sessie wilt toevoegen, gebruik dan:

Add-History

Bekijk dit bericht voor nuttige informatie over het wissen van de geschiedenis en het vooraf laden van de geschiedenis met een lijst van bepaalde commando ‘ s (@ms_itpro).,

waar-Object

waar-Object is een van de belangrijkste cmdlets om te weten, omdat het u in staat stelt om een dataset te nemen en deze verder door te geven in uw pijplijn voor filtering (@jonathanmedd):

Get-Service | Where-Object {$_.Status -eq 'Running'}Status Name DisplayName------ ---- -----------Running AdobeARMservice Adobe Acrobat Update ServiceRunning AppHostSvc Application Host Helper ServiceRunning Appinfo Application InformationRunning AudioEndpointBu... Windows Audio Endpoint BuilderRunning Audiosrv Windows AudioRunning BFE Base Filtering EngineRunning BITS Background Intelligent Transfer Ser...Running BrokerInfrastru... Background Tasks Infrastructure Ser...Running Browser Computer BrowserRunning CDPSvc Connected Devices Platform Service

10. Set-AuthenticodeSignature

Als u uw werk veilig wilt houden tijdens de productie en wijzigingen wilt voorkomen, gebruikt u Set-AuthenticodeSignature om een Authenticode-handtekening toe te voegen aan een script of bestand.

PowerShell-opdrachten om dingen gedaan te krijgen

als het gaat om productiviteit, kan PowerShell u helpen om dingen gedaan te krijgen met de volgende opdrachten.

11., ForEach-Object

de cmdlet foreach-Object voert een bewerking uit tegen elk item in een opgegeven groep invoerobjecten. Hoewel veel cmdlets toch met elk object in een collectie werken, heb je ForEach-Object nodig voor die situaties waarin je andere wijzigingen wilt aanbrengen of specifieke opmaak wilt toepassen op alle objecten in een collectie.

Hier is een voorbeeld (@ms_itpro)., Als u een lijst met procesnamen wilt weergeven en deze namen in cyaan wilt weergeven, kunt u het volgende proberen:

Get-Process | Write-Host $_.name -foregroundcolor cyan

maar het bovenstaande geeft de volgende fout:

At line:1 char:25+ get-process | write-host <<<< $_.name -foregroundcolor cyan Write-Host : The input objectcannot be bound to any parameters for the command either because the command does nottake pipeline input or the input and its properties do not match any of the parametersthat take pipeline input.

omdat de Write-Host cmdlet niet begrijpt wat u wilt doen met de gegevens die via de pijplijn worden verzonden.

So, using the ForEach-Object cmdlet lost dit probleem op:

Get-Process | ForEach-Object {Write-Host $_.name -foregroundcolor cyan}

bekijk deze tutorial voor meer informatie over ForEach-Object en werken met loops (@tomsitpro).

12., Clear-Content

Als u de inhoud van een item wilt verwijderen maar het item zelf wilt behouden, gebruikt u de clear-Content cmdlet:

Clear-Content C:\Temp\TestFile.txt

u kunt dit commando ook gebruiken om de inhoud van alle bestanden met een opgegeven bestandsextensie te wissen. De volgende code zou de inhoud van alle bestanden te wissen met de .txt extensie, bijvoorbeeld:

Clear-Content -path * -filter *.TXT –force

u kunt ook jokertekens gebruiken. Plus, kunt u de inhoud van elk type bestand te wissen, van .txt bestanden naar .dokter, .xls, en meer.

Bekijk dit bericht voor meer details.

13., Checkpoint-Computer

Als u belangrijke wijzigingen aanbrengt of een riskant experiment uitvoert, kunt u een herstelpunt instellen op uw machine met de Checkpoint-Computer cmdlet.

merk op dat u slechts één keer per 24 uur een herstelpunt kunt maken met deze cmdlet. Als je het commando opnieuw uitvoert, zal het het vorige herstelpunt behouden:

Bekijk dit artikel van MCP Mag voor meer (@MCPmag).

vergelijk-Object

Het is vaak nuttig om twee objecten direct te kunnen vergelijken., U kunt dit doen met vergelijk-Object, dat een rapport genereert over de verschillen tussen twee verzamelingen zoals (@Marcam923):

15. ConvertFrom-StringData

gebruik ConvertFrom-StringData om een string met een of meer waardeparen om te zetten in een hash tabel. Hier is een voorbeeld van hoe het commando eruit ziet:

$settings = $TextData | ConvertFrom-StringData

Dit commando is nuttig in een verscheidenheid van situaties, zoals wanneer u de instellingen voor een PowerShell-script wilt opslaan om anderen in staat te stellen de instellingen te bewerken zonder direct in de scriptcode te werken.,

ConvertTo-SecureString

converteer een versleutelde standaardtekst naar een secure string of platte tekst naar een secure string met behulp van ConvertTo-SecureString. Deze cmdlet wordt gebruikt in combinatie met ConvertFrom-SecureString en Read-Host (@AdmArsenal):

ConvertTo-XML

Gebruik de cmdlet ConvertTo-XML om een XML-gebaseerde representatie van een object te maken. Dit wordt ook serialisatie genoemd, en het is een nuttig proces voor het opslaan van gegevens voor later hergebruik. Merk op dat het belangrijk is dat je expressie objecten naar de pijplijn schrijft., Alles wat Write-Host gebruikt, zal niet naar de pijplijn schrijven en kan daarom niet geserialiseerd worden. Hier is een voorbeeld van ConvertTo-XML in actie (@PetriFeed):

Get-Service wuauserv -ComputerName chi-dc04,chi-p50,chi-core01 |Export-Clixml -Path c:\work\wu.xml

de specifieke cmdlet gebruikt in het bovenstaande voorbeeld, Export-Clixml, is geschikt voor de meeste doeleinden. Het converteert de uitvoer van een PowerShell expressie naar XML en slaat het op in een bestand.

18. Nieuw-AppLockerPolicy

Nieuw-AppLockerPolicy maakt een nieuw AppLocker-beleid aan op basis van een lijst met bestandsinformatie en andere opties voor het maken van regels., In totaal zijn er vijf cmdlets waarmee u kunt communiceren met AppLocker, waaronder (@RootUsers_):

  • Get-AppLockerFileInformation: haalt de vereiste informatie voor het maken van AppLocker-regels uit een lijst met bestanden of het gebeurtenislogboek.
  • Get-AppLockerPolicy: wordt gebruikt om een lokaal, effectief of domeinapplocker-beleid op te halen.
  • Nieuw-AppLockerPolicy: zoals gezegd wordt deze cmdlet gebruikt voor het maken van Nieuw AppLocker-beleid.
  • Set-AppLockerPolicy: stelt het AppLocker-beleid in voor een opgegeven groepsbeleidsobject.,
  • Test-AppLockerPolicy: wordt gebruikt om te bepalen of een gebruiker of groep gebruikers in staat zal zijn bepaalde acties uit te voeren op basis van het beleid.

19. New-ItemProperty

New-ItemProperty maakt een nieuwe eigenschap aan voor een item en stelt de waarde ervan in. U kunt het gebruiken om registerwaarden en gegevens (eigenschappen van een registersleutel) te maken en te wijzigen, bijvoorbeeld.

bekijk deze tutorial uit mnaoumov.NET voor een aantal nuttige oplossingen met behulp van deze cmdlet (@mnaoumov).

20. Nieuw-Object

om een exemplaar van een Microsoft aan te maken .,NET Framework of COM-object (Component Object Model), gebruik de cmdlet nieuw-Object.

Hier is een voorbeeld dat een nieuw object maakt met behulp van New-Object, het opslaat in een variabele, het vervolgens pipes naar Add-Member, die vervolgens Eigenschappen of methoden toevoegt die gespecificeerd zijn in het gemaakte object (@gngrninja):

21. New-WebServiceProxy

New-WebServiceProxy maakt een webserviceproxy-object waarmee u de webservice vanuit PowerShell kunt gebruiken en beheren., Deze cmdlet is een mooi ding voor ontwikkelaars – het maakt het onnodig om veel complexe code te schrijven om iets in PowerShell te bereiken als je gewoon een andere service kunt bellen die het al mogelijk maakt.

Hier is een voorbeeld:

nu kunt u het volgende uitvoeren om een lijst met alle beschikbare methoden te bekijken:

$proxy | gm -memberType Method

22. New-WSManInstance

net als New-WebServiceProxy maakt New-WSManInstance een nieuwe instantie van een beheerbron.,

bekijk deze tutorial voor een volledig stap-voor-stap voorbeeld van hoe je de informatie krijgt die je nodig hebt om dit script succesvol uit te voeren (@jonathanmedd).

23., Nieuw-WSManSessionOption

Nieuw-WSManSessionOption maakt een nieuw management sessie hash-tabel die wordt gebruikt als input parameters naar andere WS-Management-cmdlets inclusief:

  • Get-WSManInstance
  • Set-WSManInstance
  • Beroepen-WSManAction
  • Connect-WSMan

Hier is de syntaxis (@SAPIENTech):

Selecteer-Object

De Select-Object cmdlet selecteert u de opgegeven eigenschappen van een enkel object of groep van objecten. Daarnaast kan het unieke objecten uit een array of een bepaald aantal objecten selecteren vanaf het begin of het einde van een array.,

PS > Get-Process | Sort-Object name -Descending | Select-Object -Index 0,1,2,3,4

Deze tutorial geeft meer informatie over de verschillende manieren waarop u Select-Object (@infosectactico) kunt gebruiken.

Er zijn andere cmdlets met soortgelijke functies, waaronder:

  • Select-String: vindt tekst in strings of bestanden.
  • Select-XML: zoekt tekst in een XML-tekenreeks of document.

25. Set-Alias

Set-Alias is een geweldig commando voor het verbeteren van de productiviteit. Hiermee kunt u een alias instellen voor een cmdlet of een ander commando-element in de huidige sessie (vergelijkbaar met een sneltoets), zodat u sneller kunt werken.,

het volgende voorbeeld stelt Notepad in op np in de huidige sessie met behulp van Set-Alias (@powershellatoms):

New-Alias np c:\windows\system32\notepad.exe

merk op dat u uw PowerShell-profiel ook kunt aanpassen met de aliassen die u het vaakst gebruikt (@howtogeek).

26. Set-StrictMode

Set-StrictMode stelt coderingsregels vast en dwingt deze af in scripts, scriptblokken en expressies. Het is een handig commando voor het afdwingen van de kwaliteit van de code en het voorkomen dat je verslapt en slordige code schrijft wanneer het 3: 00 uur is en je al twee dagen niet hebt geslapen (@adbertram).,

om het te gebruiken, zijn er twee parameters om te overwegen: -Off en-Version, en-Version heeft drie mogelijke waarden:

  • Versie 1.0: voorkomt dat u variabelen gebruikt die niet zijn geïnitialiseerd (zoals optie expliciet in VBScript)
  • Versie 2.0: voorkomt dat u variabelen gebruikt die niet zijn geïnitialiseerd en voorkomt ook het aanroepen van niet-bestaande eigenschappen op objecten, voorkomt dat u een functie aanroept zoals een methode, en verbiedt het aanmaken van variabelen zonder naam.,
  • versie Laatste: deze optie selecteert de nieuwste StrictMode versie die beschikbaar is en gebruikt deze. Dit is een goede optie omdat het betekent dat de nieuwste StrictMode versie wordt gebruikt, ongeacht de versie van PowerShell die u gebruikt.

Wachtopdracht

Wachtopdracht onderdrukt de opdrachtprompt totdat achtergrondtaken die in de huidige sessie worden uitgevoerd, zijn voltooid. Wait-Job toont echter niet de uitvoer van taken, maar kan worden gebruikt in combinatie met Receive-Job. Multithreading is mogelijk in PowerShell dankzij-Jobs.

Write-Progress

wie houdt niet van een statusbalk?, Monitor uw voortgang met behulp van Write-Progress, die een voortgangsbalk in een Windows PowerShell opdrachtvenster wordt weergegeven.

Hier is een voorbeeld dat u een volledige voortgangsbalk en runtime strings (@credera) geeft:

Cmdlets voor prestatiebewaking, testen en debuggen

er zijn ook een verscheidenheid aan cmdlets nuttig voor ontwikkelaars voor het oplossen van problemen, testen, debuggen en monitoring doeleinden. Hier zijn een paar die je moet weten.

Debug-proces

ontwikkelaars houden van debuggen! Nou, we vinden het nog leuker als er geen bugs te elimineren, maar helaas is dat niet altijd het geval., Met PowerShell kunt u een proces debuggen met behulp van de debug-Process cmdlet.

u kunt taken ook debuggen met behulp van Debug-Job (@MS_ITPro). En u kunt breekpunten instellen of de cmdlet Wait-Debugger gebruiken:

30. Disable-PSBreakpoint

Als u op een bepaald moment breekpunten hebt ingesteld maar deze wilt verwijderen, doe dit dan eenvoudig met Disable-PSBreakpoint, dat breekpunten in de huidige console uitschakelt. Hier is de syntaxis (@ActiveXperts):

Disable-PSBreakpoint Disable-PSBreakpoint 

Als u breekpunten in de huidige console wilt inschakelen, gebruik dan Enable-PSBreakpoint.,

Get-Counter

Get-Counter krijgt real-time prestatieteller gegevens van de prestatie monitoring instrumentatie in Windows OS. Het wordt gebruikt om prestatiegegevens op te halen van lokale of externe computers met specifieke voorbeeldintervallen die u opgeeft.

In dit voorbeeld krijgt u een teller set met een sample interval voor een opgegeven maximum sample (@ms_itpro):

PS C:\> Get-Counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 2 -MaxSamples 3

in het voorbeeld hieronder krijgt dit commando specifieke teller data van meerdere computers:

32., Export-Counter

Export-Counter exporteert PerformanceCounterSampleSet objecten als teller logbestanden. Er zijn twee eigenschappen beschikbaar:

  • Contrasamples: krijgt en stelt de gegevens voor de tellers in.
  • Timestamp: ontvangt en stelt de datum en tijd in waarop de voorbeeldgegevens werden verzameld.,

en verschillende methoden, die allemaal zijn overgenomen van Object:

  • is gelijk aan(Object)
  • Finalize()
  • GetHashCode()
  • GetType()
  • MemberwiseClone()
  • ToString()

bijvoorbeeld, het volgende commando gebruikt Get-Counter om verzamel processor tijd gegevens en exporteert het naar een .blg-bestand met Export-Counter (@TechGenix):

Get-Counter "\Processor(*)\% Processor Time" | Export-Counter -Path C:\Temp\PerfData.blg

33. Test-Path

Test-Path laat u controleren of items in een opgegeven pad bestaan., Bijvoorbeeld, als u van plan bent om een andere opdracht te gebruiken op een opgegeven bestand, moet u mogelijk controleren of het bestand bestaat om te voorkomen dat het gooien van een fout.

Test-Path C:\Scripts\Archive

als de map bestaat, zal deze waar retourneren; als deze niet bestaat, zal deze False retourneren.

het kan ook werken met de paden die door andere PowerShell-providers worden gebruikt. Als u bijvoorbeeld wilt weten of uw computer een omgevingsvariabele heeft met de naam username, kunt u het volgende gebruiken:

Test-Path Env:\username

Test-Path werkt met variabelen, certificaten, aliassen en functies., Bekijk dit bericht van TechNet voor meer details (@MS_ITPro).

34. Get-WinEvent

Kijk naar Windows event logs met behulp van Get-WinEvent. Voor een lijst met beschikbare logs, gebruik:

Get-WinEvent -ListLog *

om de details van een specifieke log te bekijken, vervang * door de naam (pijp de uitvoer naar format-list om alle details te bekijken):

Get-WinEvent -ListLog $logname | fl *

u kunt ook alle gebeurtenissen in een log bekijken met behulp van:

Get-WinEvent -LogName System

bekijk deze tutorial voor meer details (@rakheshster).,

Invoke-Troubleshooting Pack

Troubleshooting packs zijn verzamelingen van PowerShell-scripts en assemblies die u helpen bij het oplossen, diagnosticeren en repareren van veelvoorkomende systeemproblemen (@ITNinjaSite). Zoek pakketten voor probleemoplossing op:

u kunt dit script uitvoeren om een lijst te krijgen van alle pakketten voor probleemoplossing die beschikbaar zijn op het huidige systeem (@TechGenix):

Get-ChildItem C:\Windows\Diagnostic\System

voer dan vanuit een verhoogd PowerShell-venster een pakket voor probleemoplossing uit met het volgende commando:

Invoke-TroubleshootingPack (Get-TroubleshootingPack C:\Windows\diagnostics\system\networking)

36., Measure-Command

Als u bewerkingen in PowerShell wilt Timen, is Measure-Command een must-know cmdlet. Het meet hoe lang een script of scriptblock moet worden uitgevoerd. Hier is een voorbeeld (@ToddKlindt):

Measure-Command { Mount-SPContentDatabase –Name wss_content_portal –WebApplication http://portal.contoso.com }

De uitvoer is een TimeSpan object, dus het bevat eigenschappen zoals Uur, minuut, seconde, enz., en het is gemakkelijk om de output aan te passen aan uw voorkeuren.

Measure-Object

u wilt misschien ook weten hoe groot een bepaald object is., Gebruik Measure-Object om de numerieke eigenschappen van elk object te berekenen, inclusief tekens, woorden en regels in een string-object, zoals tekstbestanden.,

geef de naam en het type van meting uit te voeren, samen met de parameters zoals (@WindowsITPro):

  • -Som: voegt waarden
  • -Gemiddelde: berekent de gemiddelde waarde
  • -Minimum: vindt de minimum waarde
  • -Maximum: vindt de maximale waarde

Het volgende commando uit de som van de VirtualMemorySize waarden van eigenschappen voor alle objecten:

Get-Process | measure VirtualMemorySize -Sum

Nieuw-Event

Nieuwe Gebeurtenis wordt gebruikt voor het maken van een nieuwe afspraak., Een verwante cmdlet is New-EventLog, waarmee een nieuw gebeurtenislogboek en een nieuwe gebeurtenisbron op een lokale of externe computer worden gemaakt. Als je een automatiseringsengine hebt die wordt ondersteund door PowerShell, is het een goede gewoonte om een gebeurtenislogboek in te stellen (door een aangepast type gebeurtenislogboek te maken) dat alle berichten registreert die door PowerShell zijn verzonden. Dit is een voorbeeld waar u aangepaste Logging kunt implementeren in Logboeken.,

begin met het aanmaken van een nieuwe Lognaam voor gebeurtenissen (@BundaloVladimir):

New-EventLog -LogName Troubleshooting_Log -Source FalloutApp

om berichten naar uw nieuwe gebeurtenislogboek te sturen, voert u het volgende uit met behulp van de cmdlet Write-Log:

Write-EventLog -log Troubleshooting_Log -source FalloutApp -EntryType Information -eventID 10 -Message "FalloutApp has been successfully installed"

Receive-Job

Als u de resultaten van Windows PowerShell-achtergrondtaken in de huidige sessie gebruikt u receive-job. Dit wordt meestal gebruikt na het gebruik van Start-Job om een taak te beginnen wanneer u de specifieke resultaten moet bekijken.,

Receive-Job -Name HighMemProcess

bekijk deze handige tutorial over het gebruik van Receive-Job en wat te doen als er schijnbaar geen resultaten zijn (@proxb).

40. Register-Enginevent

deze cmdlet wordt gebruikt om zich te abonneren op de gebeurtenissen gegenereerd door de Windows PowerShell engine en de New-Event cmdlet. Het volgende commando abonneert bijvoorbeeld op een gebeurtenis wanneer de huidige PowerShell-sessie wordt afgesloten en informatie (zoals datum en tijd) wordt opgeslagen in een logbestand (@jonathanmedd):

Register-EngineEvent PowerShell.Exiting-Action {"PowerShell exited at " + (Get-Date) | Out-File c:\log.txt -Append}

41., Register-ObjectEvent

Register-ObjectEvent is vergelijkbaar met Register-EngineEvent, maar in plaats van zich te abonneren op gebeurtenissen die worden gegenereerd door de PowerShell engine en New-Event, abonneert het zich op gebeurtenissen die worden gegenereerd door een Microsoft.NET Framework-Object.

Hier is een voorbeeld (@NetworkWorld):

Er zijn andere Register – cmdlets die u nuttig kunt vinden, waaronder:

  • Register-PSSessionConfiguration: maakt en registreert een nieuwe sessieconfiguratie.
  • Register-WmiEvent: deze cmdlet abonneert zich op een WMI-gebeurtenis.

42., Remove-Event

wanneer u een event wilt verwijderen, gebruikt u de cmdlet Remove-Event. Als u een volledig gebeurtenislogboek wilt verwijderen, gebruikt u Remove-EventLog, waarmee een gebeurtenislogboek wordt verwijderd of een gebeurtenisbron wordt gedeponeerd.

als alternatief annuleert een event-abonnement, maar verwijdert een event niet uit de gebeurteniswachtrij (@SS64).

43. Set-PSDebug

deze cmdlet schakelt script-debugfuncties in en uit. Het stelt ook de trace niveau en schakelt StrictMode.,

Door Set-PSDebug aan de bovenkant van je scriptbestand te gebruiken net na het statement param () (indien van toepassing), kun je fouten voorkomen met scripts waar PowerShell geen adequate informatie over geeft voor het oplossen van problemen. Hier is een voorbeeld (@r_keith_hill):

44. Start-Sleep

Als u de activiteit in een script of sessie wilt onderbreken, gebruik dan Start-Sleep, waarmee de activiteit gedurende een bepaalde periode wordt gestopt.

Start-Sleep -Seconds xxxStart-Sleep -Milliseconds xxx

Als u een of meer draaiende services wilt pauzeren, gebruikt u Suspend-Service.

45., Tee-Object

Als u prestaties of codekwaliteit analyseert, is het handig om de uitvoer van een commando te kunnen bekijken. Tee-Object slaat de uitvoer van het commando op in een bestand of variabele en geeft het ook weer in de console als het de laatste variabele in de pijplijn is. Als het niet de laatste variabele in de pijplijn is, stuurt Tee-Object het door de pijplijn.

Hier is de syntaxis:

46. Test-AppLockerPolicy

Test-AppLockerPolicy evalueert of invoerbestanden voor een specifieke gebruiker mogen worden uitgevoerd op basis van het opgegeven AppLocker-beleid.,

Test-AppLockerPolicy -Path Test-AppLockerPolicy -Path 

Deze tutorial biedt meer informatie over de beschikbare parameters en voorbeelden van Test-AppLockerPolicy in actie (@powershellhelp).

Test-ComputerSecureChannel

deze cmdlet test en repareert de verbinding tussen een lokale computer en zijn domein. Zonder dit commando was de gebruikelijke oplossing voorheen om een computer uit zijn domein te verwijderen en deze vervolgens opnieuw aan te sluiten om de relatie te herstellen. Test-ComputerSecureChannel maakt het mogelijk om de verbinding in minder tijd te herstellen (@WindowsITPro).,

wanneer u als lokale beheerder bent aangemeld, voert u het volgende uit:

Test-ComputerSecureChannel –credential WINDOWSITPRO\Administrator –Repair

U kunt Test-Connection gebruiken om ICMP (Internet Control Message Protocol) echo request packets (pings) naar een of meer computers te sturen.

Testpad

gebruik Testpad om te bepalen of alle elementen van een pad bestaan. In wezen, het helpt u omgaan met fouten voordat ze zich voordoen. In zijn eenvoudigste vorm geeft het True or False (@MCPmag) terug:

PS C:\> test-path c:\TruePS C:\> test-path z:\fooFalse

49. Trace-Command

Trace-Command configureert en start de trace van een opgegeven commando of expressie., Om het te gebruiken, moet u ook Get-TraceSource gebruiken om te zoeken naar bepaalde namen met jokertekens:

PS&gt; Get-TraceSource -Name *param*

u kunt de uitvoer filteren om de beschrijving aan te passen aan het patroon dat u zoekt. Zodra u de mogelijke trace-naam hebt geà dentificeerd, gebruikt u Trace-Command om de antwoorden te krijgen die u nodig hebt. Hier is een voorbeeld:

Bekijk dit bericht voor meer details over het spelen van detective met Trace-Command (@PowerShellMag).

50. Write-Debug

Write-Debug schrijft Een debug-bericht naar de console., Wanneer je dit in een functie of script schrijft, doet het standaard niets; de berichten liggen in wezen op de loer totdat je ofwel je $DebugPreference wijzigt of de-debug schakelaar activeert wanneer je een functie of script aanroept. Wanneer $DebugPreference is ingesteld op’ inquire ‘ of de-debug schakelaar is geactiveerd, maakt het bericht een breekpunt, waardoor u een gemakkelijke manier om pop in debug mode.

neem dit voorbeeld (@RJasonMorgan):

het bovenstaande voorbeeld produceert het volgende wanneer uitgevoerd met-debug:

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *