Articles

PowerShell Basics: Out-File cmdlet, -Append, -NoClobber met Code Voorbeelden

Posted on

PowerShell Schrijft naar Tekstbestand met: Out-File

Het bekijken van de uitvoer van een script op het scherm is allemaal goed en wel, maar vaak is het handiger om PowerShell te vertellen de uitvoer in een tekstbestand te schrijven. Dit is een taak voor Out-File.

Hier hebben we een PowerShell-instructie die je eenvoudig aan een bestaand script kunt vastschroeven. ….. | Out-File “Filename.txt”. Overigens is de eenvoud van Out-File een van de redenen om PowerShell te gebruiken in plaats van VBScript.

Topics for PowerShell Output to File

  • Inleiding tot Out-File
  • Ontdek Out-File met Get-Help
  • Example 1 – Starting with Out-File
  • Example 2 – Putting Out-File aan het werk
  • Example 3 – Meer parameters (-Append en -NoClobber)

Inleiding tot Out-File

De resultaten van een commando in een bestand schrijven is eenvoudig met Out-File van PowerShell. Het grootste gevaar is ‘over-denken’; onthoud gewoon dat PowerShell de basisbestandsbewerkingen automatisch uitvoert. Het is dus niet nodig om tijd te verspillen aan het zoeken naar niet-bestaande open-file, of save-file commando’s. Als het door Out-File opgegeven bestand nog niet bestaat, maakt PowerShell het zelfs voor je aan.

Dit cmdlet werkt bedrieglijk eenvoudig; ervan uitgaande dat het eerste deel van het script de resultaten oplevert, hoef je alleen maar de uitvoer om te leiden naar een bestand met een commando als:
… main PowerShell command | Out-File C:\ logsresult1.txt.

Voorbeeld 1 – Beginnen met Out-File

Dit voorbeeld is ontworpen om ons te concentreren op het Out-File commando. Hoe sneller we naar voorbeeld 2 gaan, hoe sneller we echt werk kunnen doen.

# PowerShell write to text fileGet-ChildItem "C:\Windows\System32" | Out-File "D:\Files\Sys32.txt"

Note 1: Terwijl Out-File het bestand aanmaakt, moet u er zeker van zijn dat het pad bestaat, omdat Out-File geen mappen kan aanmaken. In dit geval kunt u D: \Bestanden naar een bestaande map op uw machine.

Voorbeeld 2 – Out-File aan het werk zetten

Dit voorbeeld heeft extra mogelijkheden, die het script bruikbaarder maken. Dankzij de -recurse parameter, is het script ontworpen om in de subdirectories te boren. Het vraagteken ‘?’ introduceert een ‘Where-Object’ statement, het doel is om alleen de dll bestanden te filteren. In dit voorbeeld bevat de uitvoer alleen de twee bestandseigenschappen waarin we geïnteresseerd zijn: Name en CreationTime.

Note 3: De parameter -filepath is optioneel. Als u -filepath weglaat, leidt de intelligentie van PowerShell uit de reeks commando’s af dat “D:Bestanden” de plaats is om het bestand op te slaan. Als er geen spaties in het pad staan, dan kunt u zelfs de spreektekens weglaten.

Note 4: Als u de foutmelding ‘Cannot find part of the path’ krijgt, wijzig dan D: \Bestanden in een echte map op je machine.

Note 5: Ik probeer het backtick symbool ` niet te gebruiken, in plaats daarvan heb ik regel 2 afgesloten met het | pipe symbool.. Hierdoor realiseert PowerShell zich dat het commando doorgaat op de volgende regel.

Verbeteringen:

  1. Je zou gci “C:Windows\System32” -Recurse -ErrorAction SilentlyContinue
  2. Als zou het handig kunnen zijn om: Invoke-Item “D:\Files\dll.txt”

Guy Recommends: Network Performance Monitor (FREE TRIAL)

SolarWinds Network Performance Monitor (NPM) helpt je te ontdekken wat er op je netwerk gebeurt. Dit hulpprogramma begeleidt je ook bij het oplossen van problemen; het dashboard geeft aan of de hoofdoorzaak een verbroken verbinding, defecte apparatuur of overbelasting van bronnen is.

Wat ik het beste vind, is de manier waarop NPM oplossingen voor netwerkproblemen voorstelt. Het heeft ook de mogelijkheid om de gezondheid van individuele VMware virtuele machines te monitoren. Als je geïnteresseerd bent in troubleshooting, en het maken van netwerkkaarten, dan raad ik je aan om NPM 30 dagen gratis uit te proberen.

SolarWinds Network Performance Monitor Download 30-day FREE Trial

Research Out-File With Get-Help

Als ik een commando eenmaal aan de praat heb, en het bevalt me, dan wil ik meer weten. Get-Help onthult altijd minstens één parameter die ik voor lief had genomen, vergeten, of eerder over het hoofd had gezien, zo is het ook met PowerShell’s write to text file.

Clear-HostGet-Help Out-File -full

Note 2: Help Out-File -full werkt ook. Let erop dat er geen pipe (|) nodig is bij help.

Als je de -full switch toevoegt, dan onthult PowerShell’s help nuttige parameters, bijvoorbeeld -filepath (vanzelfsprekend) -Append (vergeten) -NoClobber (eerder over het hoofd gezien).

Zie meer voorbeelden van PowerShell’s uitvoer naar bestand”

Voorbeeld 3 – Meer parameters (-Append en -NoClobber)

Als u het script voor een tweede keer uitvoert, is het u dan opgevallen hoe Out-File informatie overschrijft? Als het de bedoeling was gegevens toe te voegen aan het eind van het bestand, dan zou een oplossing zijn Out-File te vervangen door add-Content. Vanwege de superieure opmaak geef ik er echter de voorkeur aan om Out-File te gebruiken en de parameter -Append toe te voegen.

PowerShell Out-File -Append

Out-File kan venijnig zijn omdat het het bestand overschrijft. Gelukkig heeft Out-File de parameter -Append, zodat je de gegevens gewoon aan het eind van bestaande entries kunt toevoegen.

# PowerShell Out-File -Append$File ="C:\PowerShell\Processes.txt"Get-Date | Out-File $FileGet-Process | Out-File $File -Append

Note 6: Je zou nog een -Append aan het eind van de regel Get-Date kunnen toevoegen.

Een ander -Append Voorbeeld

| Out-File -Filepath "D:\Files\dll.txt" -Append

PowerShell -NoClobber

Wat kan ‘No Clobber’ betekenen? Ben je je kleren kwijt? Niet zo, NoClobber betekent dat je het bestand niet moet overschrijven. Het lijkt mij dat je de -NoClobber zou gebruiken in omstandigheden waarin je van plan was om een heleboel bestanden op te slaan met iets verschillende namen, en je niet het risico wilde lopen dat de inhoud verloren zou gaan door overschrijven.

| Out-File -filepath "D:\Files\dll June.txt" -NoClobber

Note 7: Als u erop staat het script opnieuw uit te voeren, zorgt de -NoClobber parameter ervoor dat PowerShell een foutmelding genereert en zo beschermt dat het oorspronkelijke bestand niet wordt vervangen.

Invoke-Item is een nuttige techniek

Zie meer over Invoke-Item”

Aanbevolen: SolarWinds Permissions Analyzer for Active Directory (GRATIS TOOL)

Ik hou van de Permissions Analyzer for Active Directory omdat het me in staat stelt om in één oogopslag te zien WIE de rechten heeft om WAT te doen. Als je deze tool start, analyseert het de effectieve NTFS-machtigingen van een gebruiker voor een specifiek bestand of een specifieke map, en houdt het rekening met de toegang tot netwerkshares.

Denk eens aan alle frustratie die dit gratis hulpprogramma van SolarWinds je bespaart als je problemen moet oplossen met de toegang van gebruikers tot een bron. Probeer deze permissies monitor eens uit – het is gratis!

SolarWinds Permissions Analyzer for Active Directory Download 100% GRATIS Tool

PowerShell’s Content Family

Out-File is een erelid van de ‘Content’ familie, hier zijn de nevencommando’s. Ik gebruik deze andere commando’s niet vaak, omdat ze de gegevens niet opmaken zoals ik zou willen.

Add-Content (voegt toe)
Clear-Content
Get-Content
Set-Content (vervangt bestaande inhoud)

Out-Printer Cmdlet

Out-File heeft een zuster commando genaamd out-Printer. Als je probeert:
Help out-Printer

Dan zie je dat je de naam van de printer niet hoeft op te geven, PowerShell selecteert automatisch de standaard printer, net zoals je vanuit elke andere toepassing zou afdrukken.

U zou kunnen experimenteren door out-Printer te vervangen door een van de bovenstaande Out-File commando’s

Out-GridView

Met PowerShell v 2.0 kunt u uitvoeren naar een GridView.

Export-Csv ook Import-Csv

Spreadsheets zijn een handig middel voor het importeren en exporteren van objecten in Active Directory. Begin met het toevoegen van export-Csv aan QAD-scripts die een lijst van gebruikers of computers bevatten.

Guy Recommends: SolarWinds Admin Bundle for Active Directory (GRATIS TOOL)

Importeer gebruikers vanuit een spreadsheet. Geef gewoon een lijst van de gebruikers met hun velden in de bovenste rij, en sla op als .csv bestand. Start dan dit GRATIS hulpprogramma en match de velden met de attributen van AD, klik en importeer de gebruikers.

Als optie kunt u de naam van de OU opgeven waar de nieuwe accounts zullen worden geboren. Download uw GRATIS bulk import tool.

SolarWinds Admin Bundle Download 100% GRATIS Tool Bundle

Als u meer uitgebreide applicatie analyse software nodig heeft, Download dan een gratis trial van SAM (Server & Application Monitor)

Een andere techniek: PowerShell Redirection

In veel opzichten is dit de eenvoudigste techniek tot nu toe. Voeg gewoon het groter dan teken toe >. De belangrijkste reden om de uitvoer van een PowerShell commando om te leiden is echter wanneer je foutmeldingen of waarschuwingen wilt vastleggen.

Get-Service > D:\PShell\Services.txt

Note 8: Dit is hetzelfde als Get-Service | Out-File D:\PShell\Services.txt

De killer reden om deze techniek te gebruiken is als je waarschuwingsberichten wilt omleiden, bijvoorbeeld als je wilt zien of een service jkl bestaat:

Get-Service jkl 2> D:\PShell\Services.txt

Note 9: Het belangrijkste redirect commando is 2>

Zie meer Over PowerShell 3.0 Redirection”

Samenvatting van PowerShell’s Out-File Cmdlet

Trouw me; u zult veel gebruik maken van de mogelijkheid van PowerShell om naar een tekstbestand te schrijven. Out-File is het perfecte commando om de resultaten naar een tekstbestand te pipen. Dit is een eenvoudig commando om aan bestaande cmdlets toe te voegen. Het grootste gevaar voor nieuwelingen is het zoeken naar niet-bestaande commando’s; onthoud dat PowerShell zorgt voor zowel het openen als het sluiten van het genoemde bestand.

Footnote:
Dank aan Danny Beaman voor het corrigeren van 3 fouten op deze pagina.

Zie meer Microsoft PowerShell bestand tutorials:

– PowerShell Home – Add-Content – Get-Content – Set-Content – PowerShell -Filter – Test-Path

– PowerShell Get-ChildItem – Get-ChildItem -Include – Get-ChildItem -Exclude – Compare-Object

– PowerShell Registry – Get-Credential – PowerShell ItemProperty – PowerShell ItemPropery GCI

Mail me aub als je een beter voorbeeld script hebt. Meld ook eventuele feitelijke fouten, grammaticale fouten of gebroken links, ik zal de fout graag herstellen.

Geef een reactie

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