Articles

Fondamenti di PowerShell: Usare Test-Path per controllare se un file esiste con esempi

Posted on

PowerShell Test-Path Cmdlet

Se c’è un problema nel trovare un file, o nel controllare un oggetto contenitore, allora chiama Test-Path di PowerShell; risponderà con un ‘True or False’.

  • Esempio classico: PowerShell controlla se un file esiste
  • PowerShell Test-Path -IsValid
  • PowerShell Test-Path -Exclude
  • Un esempio di Test-Path per farvi riflettere
  • Test-Path -PathType

Esempio classico: PowerShell controlla se un file esiste

Inizia con un semplice script per controllare l’esistenza del tuo file.

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

Nota 1: L’unico risultato che PowerShell può restituire è un vero o un falso. Tuttavia, Test-Path richiede una dichiarazione ‘if’ per agire sull’output, quindi:-

Nota 2: Come per tutti questi script, modificate i miei esempi per adattarli al vostro ambiente.

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

Incoraggiare i computer a dormire quando non sono in uso è una grande idea – fino a quando non sei lontano dalla tua scrivania e hai bisogno di un file su quella macchina dormiente remota!

WOL ha anche usi commerciali, per esempio, svegliare le macchine in modo che possano avere patch di aggiornamento applicate. La mia vera ragione per raccomandarvi di scaricare questo strumento gratuito è perché è molto divertente inviare quei ‘pacchetti magici’. Provate WOL – è gratis.

SolarWinds Wake-On-LAN Download 100% FREE Tool

Test-Path Environmental Variables

Oltre alle posizioni fisiche dei file, potete anche utilizzare Test-Path per interrogare il registro o, come in questo caso, le variabili ambientali.

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

Sfida: Quali di queste sono davvero variabili ambientali?
Public, Private, Temp, Tump e Tmp

PowerShell Test-Path -IsValid

Uno dei lavori sottovalutati per Test-Path è quello di convalidare che la parte di percorso di uno script esiste davvero.

PowerShell Test-Path -Exclude

Ecco un problema di vita reale, volevo vedere se c’erano dei file che non sono .gif, pnp, bmp o .jpg, che si sono mischiati nella mia collezione di foto. Presupposto: i file che mi (ci) interessano sono memorizzati in H:\Sports\fun_pictures\

Nota 3: dovrai modificare radicalmente il file di cui sopra se vuoi che funzioni sul tuo computer. Cambia i valori di $ImageFiles e modifica anche l’estensione dei file -exclude. Vedi di più su PowerShell Else.

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

Questo Engineer’s Toolset fornisce una console completa di 50 utility per la risoluzione dei problemi del computer. Guy dice che mi aiuta a monitorare ciò che sta accadendo sulla rete, e ogni strumento mi insegna di più su come funziona il sistema sottostante.

Ci sono così tanti buoni gadget; è come avere libero accesso a un negozio di dolci. Per fortuna le utilità sono visualizzate in modo logico: monitoraggio, scoperta della rete, diagnostica e strumenti Cisco. Provate subito il SolarWinds Engineer’s Toolset in 14 giorni di prova gratuita!

SolarWinds Engineer’s Toolset Download 14-day FREE Trial

Un esempio di percorso di prova per farvi riflettere

Nota 4: ho creato questo script deliberatamente. Non ha senso in termini pratici. Aggiustate il valore di Exclude *.* in *.exe o *.dll. Come puoi vedere i caratteri jolly sono permessi nel percorso e nelle estensioni.

Nota 5: Qui ho usato esplicitamente il parametro -Path, tuttavia, qualsiasi valore dopo Test-Path viene assunto come posizione, quindi -Path è opzionale.

Nota 6: Spesso trovo che sperimentare Get-ChildItem insieme a Test-Path rivela i punti di forza e di debolezza di queste due cmdlet.

Ricerca Il Cmdlet PowerShell Test-Path

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

Nota 7: Interrogando Test-Path con Get-Help possiamo scoprire parametri utili come -IsValid per controllare il percorso. Ci sono anche -Include e -exclude, che affinano il contenuto della ricerca. È stato grazie a Get-Help che ho scoperto -PathType.

Test-Path -PathType

Lo scopo principale del parametro -PathType è controllare se l’oggetto è un file o una cartella. Tuttavia, può anche essere usato nel registro per controllare le chiavi o i dati.

Trap: HKLM: ha bisogno di quel colon. Se esportate semplicemente delle aree del registro, poi copiate come:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
ci sono problemi.

HKEY_LOCAL_MACHINE va bene, lo spazio tra Windows e NT non è un problema, ma la mancanza di due punti è uno show-stopper, dovrebbe essere:
HKEY_LOCAL_MACHINE:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

Guy Recommends: Network Performance Monitor (FREE TRIAL)

SolarWinds Network Performance Monitor (NPM) ti aiuterà a scoprire cosa sta succedendo nella tua rete. Questa utility vi guiderà anche attraverso la risoluzione dei problemi; il dashboard indicherà se la causa principale è un collegamento interrotto, attrezzature difettose o sovraccarico di risorse.

Quello che mi piace di più è il modo in cui NPM suggerisce soluzioni ai problemi di rete. Ha anche la capacità di monitorare la salute delle singole macchine virtuali VMware. Se siete interessati alla risoluzione dei problemi e alla creazione di mappe di rete, vi consiglio di provare NPM in prova gratuita per 30 giorni.

SolarWinds Network Performance Monitor Download 30-day FREE Trial

Il resto della famiglia Path

Ecco una semplice tecnica per trovare altri cmdlets. Get-Command -Noun spesso fornisce risultati interessanti, per esempio Resolve-Path.

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

Join-Path Example

Ecco un bellissimo script per trovare quale unità ospita una particolare cartella.

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

Nota 8: Cambiare “Stuff” con il nome della cartella che si sta cercando.
Per esempio: $Folder = “Program Files”

Vedi altri compiti di vita reale per PowerShell”

Riassunto del PowerShell Test-Path Cmdlet

Il compito classico di PowerShell Test-Path è di controllare che un file esista. Tuttavia, è possibile estendere la sua utilità testando i percorsi del registro, o per cercare i file con una particolare estensione.

Vedi altri tutorial di 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

Si prega di inviarmi un’email se hai esempi di script migliori. Inoltre vi prego di segnalare eventuali errori fattuali, errori grammaticali o link non funzionanti, sarò felice di correggere il difetto.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *