Articles

PowerShell Basics: Test-Path gebruiken om te controleren of een bestand bestaat met voorbeelden

Posted on

PowerShell Test-Path Cmdlet

Als er een probleem is met het vinden van een bestand, of het controleren op een container object, roep dan PowerShell’s Test-Path op; het zal reageren met een ‘True of False’.

  • Klassiek voorbeeld: PowerShell controleert of een bestand bestaat
  • PowerShell Test-Path -IsValid
  • PowerShell Test-Path -Exclude
  • Een Test-Path voorbeeld om je aan het denken te zetten
  • Test-Path -PathType

Klassiek voorbeeld: PowerShell Controleert Of Een Bestand Bestaat

Start met een eenvoudig script om het bestaan van je bestand te controleren.

# PowerShell Check If File Exists$WantFile = "C:\Windows\explorer.exe"Test-Path $WantFile

Note 1: Het enige resultaat dat PowerShell kan teruggeven is een true of een false. Test-Path schreeuwt echter om een ‘if’-statement om op de uitvoer te reageren, dus:-

Note 2: Zoals met al deze scripts, pas mijn voorbeelden aan uw omgeving aan.

Guy beveelt aan: SolarWinds Wake-On-LAN Utility (GRATIS TOOL)

Computers aanmoedigen om te slapen als ze niet in gebruik zijn is een geweldig idee – totdat je weg bent van je bureau en een bestand nodig hebt op die slapende machine op afstand!

WOL heeft ook zakelijke toepassingen, bijvoorbeeld machines wakker maken zodat ze update patches kunnen laten toepassen. Mijn echte reden om je aan te bevelen deze gratis tool te downloaden is dat het zo leuk is om die ‘Magic Packets’ te versturen. Probeer WOL eens uit – het is gratis.

SolarWinds Wake-On-LAN Download 100% GRATIS Tool

Test-Path Environmental Variables

Naast fysieke bestandslocaties, kun je Test-Path ook gebruiken om het register te ondervragen of zoals hier, Environmental Variables.

# PowerShell Test-Path for Environmental VariablesTest-Path env:\PathExt

Uitdaging: Welke van deze zijn echt Omgevingsvariabelen?
Public, Private, Temp, Tump en Tmp

PowerShell Test-Path -IsValid

Een van de ondergewaardeerde taken voor Test-Path is om te valideren dat het path-gedeelte van een script echt bestaat.

PowerShell Test-Path -Exclude

Hier volgt een real-life probleem, ik wilde zien of er bestanden die niet .gif, pnp, bmp of .jpg zijn, door elkaar zijn geraakt met mijn fotocollectie. Veronderstelling: de bestanden waarin ik (wij) geïnteresseerd zijn, staan opgeslagen in H:\ports_pictures

Note 3: U zult het bovenstaande bestand ingrijpend moeten wijzigen als u wilt dat het op uw computer werkt. Wijzig de waarden voor $ImageFiles en pas ook de -exclude bestandsextensies aan. Zie meer op PowerShell Else.

Guy Recommends: SolarWinds Engineer’s Toolset (GRATIS TRIAL)

Deze Engineer’s Toolset biedt een uitgebreide console met 50 hulpprogramma’s voor het oplossen van computerproblemen. Guy zegt dat het me helpt te monitoren wat er op het netwerk gebeurt, en dat elke tool me meer leert over hoe het onderliggende systeem werkt.

Er zijn zoveel goede gadgets; het is alsof je vrij spel hebt in een snoepwinkel. Gelukkig zijn de hulpprogramma’s logisch ingedeeld: monitoring, network discovery, diagnostic, en Cisco tools. Probeer de SolarWinds Engineer’s Toolset nu 14 dagen gratis uit!

SolarWinds Engineer’s Toolset Download 14-day FREE Trial

A Test-Path Example To Make You Think

Note 4: Ik heb dit script met opzet gemaakt. Praktisch gezien heeft het geen zin. Pas de waarde van Exclude *.* aan naar *.exe of *.dll. Zoals u ziet zijn wildcards toegestaan in het pad en in de extensies.

Note 5: Hier heb ik expliciet de -Path parameter gebruikt, echter, elke waarde na Test-Path wordt verondersteld de locatie te zijn, dus -Path is optioneel.

Note 6: Ik vind vaak dat experimenteren met Get-ChildItem naast Test-Path de sterke en zwakke punten van deze twee cmdlets blootlegt.

Onderzoek De PowerShell Test-Path Cmdlet

# Find out more about PowerShell Test-Path cmdletClear-HostGet-Help Test-Path -full

Note 7: Door Test-Path te ondervragen met Get-Help kunnen we nuttige parameters op het spoor komen, zoals -IsValid om het pad te controleren. Er zijn ook -Include en -exclude, die de inhoud van je zoekopdracht verfijnen. Het was dankzij Get-Help dat ik -PathType ontdekte.

Test-Path -PathType

Het belangrijkste doel van de -PathType parameter is om te controleren of het object een bestand of een map is. Het kan echter ook in het register worden gebruikt om te controleren op sleutels of gegevens.

Trap: HKLM: heeft die dubbele punt nodig. Als je gewoon delen van het register exporteert, en dan kopieert als:
HKEY_LOCAL_MACHINE\SOFTWARE\MicrosoftWindows NTCurrentVersionWinlogon
zijn er problemen.

HKEY_LOCAL_MACHINE is prima, de spatie tussen Windows en NT is geen probleem, maar het ontbreken van een dubbele punt is een show-stopper, het zou moeten zijn:
HKEY_LOCAL_MACHINE:\SOFTWARE\MicrosoftWindows NTCurrentVersion\Winlogon

Guy Recommends: Network Performance Monitor (GRATIS TRIAL)

SolarWinds Network Performance Monitor (NPM) helpt je te ontdekken wat er in 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 het oplossen van problemen 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

The Rest of the Path Family

Hier is een eenvoudige techniek om meer cmdlets te vinden. Get-Command -Noun levert vaak interessante resultaten op, bijvoorbeeld Resolve-Path.

# PowerShell Path Cmdlet ResearchClear-HostGet-Command -Noun Path
Convert-Path
Join-Path
Resolve-Path
Split-Path
Test-Path

Join-Path Voorbeeld

Hier is een mooi script om te vinden op welk station een bepaalde map staat.

Clear-Host$Folder = "Stuff"Get-PSDrive | Where-Object {$_.root -match ":\\" -and (Test-Path $(Join-Path $_.root $Folder))}

Note 8: Verander “Stuff” in de naam van de map waarnaar je op zoek bent.
Voorbeeld: $Folder = “Program Files”

Zie meer real-life taken voor PowerShell”

Samenvatting van PowerShell Test-Path Cmdlet

De klassieke taak voor PowerShell Test-Path is om te controleren of een bestand bestaat. U kunt het nut ervan echter uitbreiden door registerpaden te testen, of om te zoeken naar bestanden met een bepaalde extensie.

Meer Microsoft PowerShell-tutorials bekijken:

– PowerShell Home – Test-ServerHealth – Test-SystemHealth – Test-Connection – Test-Path

– PowerShell Logon Script – PowerShell add printer – PowerShell Schedule Task – Free CSVDE Tool

– Map Network Drive – Exchange 2010 PowerShell Cmdlets – Exchange 2010 Performance Monitor

E-mail me als je een beter script voorbeelden hebt. Meld ook eventuele feitelijke fouten, grammaticale fouten of gebroken links, ik zal blij zijn om de fout te corrigeren.

Geef een reactie

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