Cum verificați dacă un fișier există cu Test-Path în PowerShell

Configurare noua (How To)

Situatie

Cmdletul Test-Path este utilizat pentru a verifica dacă există un anumit fișier, folder sau element de registru. Comanda va returna True dacă obiectul există și este accesibil la calea specificată. Dacă cel puțin un element al rutei nu există, va returna False.

Solutie

De exemplu, să verificăm existența următoarei rute de folder(ghilimelele sunt necesare pentru orice rută care conține spații sau caractere speciale):

Test-Path -Path ‘C:\Program Files\’

Comanda verifică implicit calea și fișierul. Utilizați parametrul PathType pentru a verifica un element specific al căii. Valori disponibile:

Container — verifică existența unui element părinte, indiferent dacă este un director obișnuit sau o cheie de registru.
Leaf — un fișier sau alt element care nu conține subelemente.
Any — fie un container, fie un leaf

Cum să verificați dacă a fost creat un fișier de profil PowerShell (Microsoft.PowerShell_profile.ps1) pentru utilizatorul curent:

Test-Path -Path $PROFILE -PathType Leaf

Comanda Test-Path acceptă caractere generice/wildcards, care vă permit să testați elemente ale căror nume exacte sunt necunoscute. De exemplu, să verificăm dacă folderul specificat conține cel puțin un fișier .LOG:

Test-Path -PathType Leaf -Path “C:\Windows\Logs\CBS\*.log”

Cmdletul Test-Path este utilizat în mod obișnuit în scripturile PowerShell pentru a verifica existența unui fișier sau folder și pentru a-l crea dacă obiectul nu există. Puteți utiliza această formă cu If/Else:

$path = “C:\FolderulMeu”
If(!(Test-Path -PathType container $path))
{
New-Item -ItemType Directory -Path $path
}

Parametrul IsValid este utilizat pentru a verifica validitatea căii. Această opțiune verifică sintaxa unei rute specifice, indiferent dacă calea există sau nu:

Test-Path -Path “\\C:\FolderFals\” -IsValid

Parametrii NewerThan și OlderThan pot fi utilizați și cu obiecte din sistemul de fișiere. Aceștia vă permit să verificați dacă data și ora unui fișier sau folder sunt mai recente sau mai vechi față de o dată specificată. De exemplu puteți să verificați dacă folderul specificat conține fișiere .LOG care au fost modificate în ultimele 7 zile:

Test-Path -Path “C:\Windows\Logs\CBS\*.log” -NewerThan (Get-Date).AddDays(-7)

Puteți utiliza argumente suplimentare pentru a adăuga sau exclude anumite tipuri de obiecte din verificare:

Include
Exclude

Pentru a utiliza acești parametri, trebuie să specificați un asterisc (*) la sfârșitul căii, așa cum se arată în exemplu:

Test-Path -Include “*.log”,”*.tmp” -Path “C:\Windows\*”

De asemenea, puteți utiliza parametrul Filter pentru a include un obiect specific, dar acesta acceptă o singură valoare:

Test-Path -Path “C:\Windows\*” -Filter “*.log”

Comanda Test-Path poate fi utilizată pentru a verifica prezența obiectelor într-un folder de rețea partajat pe un computer la distanță. Specificați calea către folderul partajat în format UNC:

Test-Path -Path “\\192.168.13.13\Share\etc\*” -Include “*.csv”

Alternativ, puteți mai întâi să mapați folderul partajat ca unitate de rețea utilizând cmdletul New-PSDrive și apoi să verificați dacă calea există:

New-PSDrive -Name M -PSProvider FileSystem -Root ‘\\192.168.13.13\Share\etc\*’
Test-Path “M:\*” -Include “*.csv”

De asemenea, puteți utiliza următoarea sintaxă pentru căile folderelor de rețea:

Test-Path $(‘filesystem::\\server1\share1\’)

Cmdletul Test-Path din PowerShell nu se limitează la fișiere și foldere. Poate fi utilizat și pentru a testa căile de registru, variabilele de mediu și aliasurile PowerShell.

Pentru a verifica dacă cheia de registru există:

Test-Path “Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ActiveSync”

Pentru a verifica prezența unei variabile de mediu:

Test-Path env:computername

Pentru a verifica dacă un anumit alias PowerShell este disponibil:

Test-Path alias:wget

Tip solutie

Permanent

Voteaza

(3 din 7 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?