Articles

Test se un file esiste con Powershell

Un altro post per me che è semplice e spero serva come esempio per le persone che cercano di fare blogging come#SQLNewBloggers.

Poco tempo fa ho scritto uno script PowerShell (PoSh) per scaricare i file XML di SQL Saturday usati per l’applicazione Guidebook. Questi contengono un mucchio di informazioni che volevo raccogliere, trasformare e tenere in giro.

Tuttavia lo script non era eccezionale. Fondamentalmente andava in loop un certo numero di volte e riscaricava i file. Non è la soluzione più efficiente, specialmente se voglio che questo venga eseguito regolarmente.

Uno dei miglioramenti che volevo fare era controllare se il file esiste, e se no, scaricarlo. Tuttavia, se esiste, allora salto il file. So che questo significa che non ottengo file aggiornati se gli orari cambiano, il che è possibile, ma in questo caso, posso semplicemente cancellare il file dal mio desktop e andare da lì.

Ho fatto una rapida ricerca, e ho trovato alcuni link al cmdlet Test-Path. Essenzialmente gli si dà un percorso del file e restituisce vero o falso. Quasi esattamente quello di cui ho bisogno. Questo è ciò che ho aggiunto al mio codice:

if (Test-Path $DestinationFile) {

#fare qualcosa

}

Tuttavia voglio agire se il file non esiste. Nella maggior parte delle lingue, aggiungerei un ! davanti per significare “non”. Tuttavia questo non funziona in PoSh, proprio come > non significa maggiore di.

Un’altra ricerca mi ha mostrato l’operatore -NOT. È quello di cui ho bisogno, ma non posso fare così:

if (-NOT Test-Path $DestinationFile) {

#fare qualcosa

}

Invece, ho bisogno di avere una singola espressione per -NOT, che significa più parentesi. Non è un grosso problema. Ho usato questo codice:

if (-NOT (Test-Path $DestinationFile)) {

#fare qualcosa

}

Ha funzionato benissimo e ora scarico solo i file di cui ho bisogno. Se voglio riscaricare (per eventi più recenti), basta cancellare quei file e rieseguire lo script.

SQLNewBlogger

Questo post è nato quando ho iniziato a lavorare sullo script. In realtà ci è voluto più tempo per scriverlo che per trovare la soluzione, aggiungerla al codice e testarla. Quel processo è stato di circa 5 minuti.

Questo post ha richiesto circa 10 minuti per scrivere. Avevo anche un secondo post basato su modifiche simili allo script, quindi l’ho fatto in altri 5 minuti.

Lascia una risposta

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