Articles

PowerShell Basics: Using Test-Path to Check if a File Exists with Examples

Posted on

PowerShell Test-Path Cmdlet

Jeśli jest problem z odnalezieniem pliku, lub sprawdzeniem obiektu kontenera, wtedy wywołaj Test-Path PowerShella; odpowie on 'True or False'.

  • Przykład klasyczny: PowerShell sprawdza, czy plik istnieje
  • PowerShell Test-Path -IsValid
  • PowerShell Test-Path -Exclude
  • Przykład Test-Path, abyś pomyślał
  • Test-Path -PathType

Klasyczny przykład: PowerShell sprawdza, czy plik istnieje

Zacznij od prostego skryptu, aby sprawdzić istnienie pliku.

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

Uwaga 1: Jedynym wynikiem, jaki PowerShell może zwrócić, jest true lub false. Jednakże, Test-Path wymaga instrukcji 'if', aby działać na wyjściu, a więc:-

Uwaga 2: Jak w przypadku wszystkich tych skryptów, proszę zmienić moje przykłady, aby dopasować je do swojego środowiska.

Guy Poleca: SolarWinds Wake-On-LAN Utility (FREE TOOL)

Zachęcanie komputerów do uśpienia, gdy nie są używane, jest świetnym pomysłem – dopóki nie oddalisz się od biurka i nie będziesz potrzebował pliku na tej zdalnie śpiącej maszynie!

WOL ma również zastosowania biznesowe, na przykład, do uśpienia maszyn, aby można było zaaplikować im łatki aktualizacyjne. Moim prawdziwym powodem, dla którego polecam Ci pobranie tego darmowego narzędzia jest to, że wysyłanie tych 'Magicznych Pakietów' jest tak bardzo zabawne. Wypróbuj WOL – jest za darmo.

SolarWinds Wake-On-LAN Download 100% FREE Tool

Test-Path Zmienne środowiskowe

Oprócz fizycznej lokalizacji plików, możesz również wykorzystać Test-Path do sprawdzenia rejestru lub jak tutaj, Zmiennych środowiskowych.

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

Wyzwanie: Które z nich są naprawdę Zmiennymi Środowiskowymi?
Public, Private, Temp, Tump i Tmp

PowerShell Test-Path -IsValid

Jednym z niedocenianych zadań Test-Path jest sprawdzenie, czy ścieżka do skryptu naprawdę istnieje.

PowerShell Test-Path -Exclude

Jest to problem z życia wzięty, chciałem sprawdzić czy są jakieś pliki, które nie są .gif, pnp, bmp lub .jpg, które namieszały w mojej kolekcji zdjęć. Założenie: pliki, które mnie (nas) interesują są przechowywane w H:\u2001fun_pictures\u2002

Uwaga 3: Będziesz musiał radykalnie edytować powyższy plik, jeśli chcesz, aby działał na twoim komputerze. Zmień wartości dla $ImageFiles, a także dostosuj rozszerzenie pliku -exclude. Zobacz więcej na PowerShell Else.

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

Ten zestaw narzędzi inżynierskich zapewnia wszechstronną konsolę 50 narzędzi do rozwiązywania problemów z komputerem. Guy mówi, że pomaga mi monitorować to, co dzieje się w sieci, a każde narzędzie uczy mnie więcej o tym, jak działa podstawowy system.

Jest tak wiele dobrych gadżetów; to jak posiadanie wolnej ręki w sklepie ze słodyczami. Na szczęście narzędzia są wyświetlane w logiczny sposób: monitorowanie, odkrywanie sieci, diagnostyka i narzędzia Cisco. Wypróbuj zestaw narzędzi SolarWinds Engineer’s Toolset na 14-dniowej bezpłatnej próbie już teraz!

SolarWinds Engineer’s Toolset Download 14-day FREE Trial

A Test-Path Example To Make You Think

Uwaga 4: Stworzyłem ten skrypt celowo. Nie ma on sensu z praktycznego punktu widzenia. Proszę zmienić wartość opcji Exclude *.* na *.exe lub *.dll. Jak widać symbole wieloznaczne są dozwolone w ścieżce i w rozszerzeniach.

Uwaga 5: Tutaj wyraźnie użyłem parametru -Path, jednak każda wartość po Test-Path jest zakładana jako lokalizacja, więc -Path jest opcjonalne.

Uwaga 6: Często okazuje się, że eksperymentowanie z Get-ChildItem wraz z Test-Path ujawnia mocne i słabe strony tych dwóch cmdletów.

Badaj PowerShell Test-Path Cmdlet

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

Uwaga 7: Poprzez sprawdzenie Test-Path z Get-Help możemy odkryć przydatne parametry takie jak -IsValid do sprawdzenia ścieżki. Istnieją również -Include i -exclude, które uściślają zawartość wyszukiwania. To właśnie dzięki Get-Help odkryłem -PathType.

Test-Path -PathType

Głównym celem parametru -PathType jest sprawdzenie czy obiekt jest plikiem czy folderem. Jednak może on być również użyty w rejestrze do sprawdzenia kluczy lub danych.

Trap: HKLM: potrzebuje tego dwukropka. Jeśli po prostu wyeksportujesz obszary rejestru, a następnie skopiujesz je jako:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
pojawią się problemy.

HKEY_LOCAL_MACHINE jest w porządku, spacja między Windows i NT nie stanowi problemu, ale brak dwukropka jest przeszkodą, powinno być:
HKEY_LOCAL_MACHINE:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

Guy Recommends: Network Performance Monitor (FREE TRIAL)

SolarWinds Network Performance Monitor (NPM) pomoże Ci odkryć co dzieje się w Twojej sieci. Narzędzie to poprowadzi Cię również przez rozwiązywanie problemów; tablica rozdzielcza wskaże, czy przyczyną jest uszkodzone łącze, wadliwy sprzęt czy przeciążenie zasobów.

To, co podoba mi się najbardziej, to sposób, w jaki NPM sugeruje rozwiązania problemów z siecią. Posiada również możliwość monitorowania kondycji poszczególnych maszyn wirtualnych VMware. Jeśli jesteś zainteresowany rozwiązywaniem problemów i tworzeniem map sieci, to polecam wypróbowanie NPM na 30-dniowym darmowym okresie próbnym.

SolarWinds Network Performance Monitor Download 30-day FREE Trial

Reszta rodziny Path

Jest prosta technika, aby znaleźć więcej cmdletów. Get-Command -Noun często wyrzuca interesujące wyniki, na przykład Resolve-Path.

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

Przykład Join-Path

Oto piękny skrypt do sprawdzenia, na którym dysku znajduje się dany folder.

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

Uwaga 8: Proszę zmienić „Stuff” na nazwę folderu, którego szukasz.
Na przykład: $Folder = „Program Files”

Zobacz więcej prawdziwych zadań dla PowerShell”

Podsumowanie PowerShell Test-Path Cmdlet

Klasycznym zadaniem dla PowerShell Test-Path jest sprawdzenie, czy plik istnieje. Można jednak rozszerzyć jego użyteczność o testowanie ścieżek do rejestru lub wyszukiwanie plików z określonym rozszerzeniem.

Zobacz więcej poradników Microsoft PowerShell:

– 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

Proszę o maila jeżeli macie lepsze przykłady skryptów. Proszę również o zgłaszanie wszelkich błędów merytorycznych, gramatycznych oraz niedziałających linków, z przyjemnością je poprawię.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *