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.