Tester l’existence d’un fichier avec Powershell
Encore un billet pour moi qui est simple et qui, je l’espère, servira d’exemple pour les gens qui essaient de se mettre à bloguer comme#SQLNewBloggers.
Il y a quelque temps, j’ai écrit un script PowerShell (PoSh) pour télécharger les fichiers XML de SQL Saturday utilisés pour l’application Guidebook. Ceux-ci contiennent un tas d’informations que je voulais collecter, transformer et conserver autour de moi.
Cependant, le script n’était pas génial. Il bouclait essentiellement un nombre défini de fois et retéléchargeait les fichiers. Ce n’est pas la solution la plus efficace, surtout si je veux que cela fonctionne régulièrement.
L’une des améliorations que je voulais apporter était de vérifier si le fichier existe, et si non, alors de le télécharger. Cependant, s’il existe, alors je vais sauter le fichier. Je sais que cela signifie que je n’obtiens pas de fichiers mis à jour si les horaires changent, ce qui est possible, mais dans ce cas, je peux simplement supprimer le fichier de mon bureau et repartir de là.
J’ai fait une recherche rapide, et j’ai trouvé quelques liens vers la cmdlet Test-Path. Essentiellement, vous donnez à cela un chemin de fichier et il retourne vrai ou faux. C’est presque exactement ce dont j’ai besoin. Voici ce que j’ai ajouté à mon code :
if (Test-Path $DestinationFile) {
#do something
}
Cependant, je veux prendre des mesures si le fichier n’existe pas. Dans la plupart des langues, j’ajouterais un ! devant pour signifier « pas ». Cependant, cela ne fonctionne pas dans PoSh, tout comme > ne signifie pas plus grand que.
Une autre recherche m’a montré l’opérateur -NOT. C’est ce dont j’ai besoin, mais je ne peux pas faire ceci :
if (-NOT Test-Path $DestinationFile) {
#faire quelque chose
}
Au lieu de cela, je dois avoir une seule expression pour -NOT, ce qui signifie plus de parenthèses. Ce n’est pas un gros problème. J’ai utilisé ce code :
if (-NOT (Test-Path $DestinationFile)) {
#do something
}
Cela a très bien fonctionné et maintenant je ne télécharge que les fichiers dont j’ai besoin. Si je veux retélécharger (pour des événements plus récents), je supprime simplement ces fichiers et j’exécute à nouveau le script.
SQLNewBlogger
Ce post est né lorsque j’ai commencé à travailler sur le script. Il a en fait fallu plus de temps pour écrire ceci que de trouver la solution, l’ajouter au code et la tester. Ce processus a pris environ 5 minutes.
Ce post a pris environ 10 minutes à écrire. J’avais également un deuxième post basé sur des modifications similaires du script, donc je l’ai fait en 5 minutes supplémentaires.
La rédaction de ce post a pris environ 10 minutes.