Probleme avec file.deleteObject() en fonction de sa position dans mon script
Bonjour,
Je suis débutant sous PowerShell et j'ai un souci avec la suppression d'un fichier. Mon script powershell se connecte à un sharepoint via la librairie Pnp.
L'idée est d'uploader un fichier sur un site sharepoint. Je suis aussi supprimer les fichiers Excel présent dans le dossier de destination à l'exception de celui que je viens d'uploader.
Si je fais ça ça fonctionne (j'ai allégé mon code pour plus de lisibilité) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| # URL du site Sharepoint
$url = 'XXX'
# nom du fichier Excel généré à envoyer
$ExcelFileName = $args[1] + ".xlsx"
# Repertoire où copier le fichier sur le site Sharepoint
$CibleFolder = "Documents partages/"
# Génaration du contexte de connexion
Connect-PnPOnline -Url $url -AppId $IdClient -AppSecret $CleSecrete
$Context = Get-PnPContext
# Suppression de tous les fichiers .xlsx présent dans le répertoire $CibleFolder
$items = Find-PnPFile -Folder $CibleFolder -Match *.xlsx
foreach ($item in $items)
{
if($item.Name -ne $ExcelFileName){
$item.DeleteObject()
}
}
#....
#upload du fichier
#....
# Vérification de la date du fichier sur le Sharepoint pour vérifier que l'upload a bien été fait
$FichierCible = "/Documents partages/" + $ExcelFileName
try{
$FileC = Get-PnPFile -Url $FichierCible
if($FileC){
write-host "OK : Fichier du jour bien présent sur le SharePoint"
exit 0
}
else
{
write-host "ERREUR : Fichier du jour introuvable sur le SharePoint"
exit 1
}
}
catch{
write-host "ERREUR : Fichier du jour introuvable sur le SharePoint"
exit 1
} |
Dans l'exemple ci-dessus je supprime tous les fichiers Excel du répertoire avant d'uploader le nouveau.
Maintenant je souhaiterais supprimer les autres fichiers Excel seulement si je suis sur que le nouveau a été uploadé.
Je fais donc ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| # URL du site Sharepoint
$url = 'XXX'
# nom du fichier Excel généré à envoyer
$ExcelFileName = $args[1] + ".xlsx"
# Repertoire où copier le fichier sur le site Sharepoint
$CibleFolder = "Documents partages/"
# Génaration du contexte de connexion
Connect-PnPOnline -Url $url -AppId $IdClient -AppSecret $CleSecrete
$Context = Get-PnPContext
#....
#upload du fichier
#....
# Vérification de la date du fichier sur le Sharepoint pour vérifier que l'upload a bien été fait
$FichierCible = "/Documents partages/" + $ExcelFileName
try{
$FileC = Get-PnPFile -Url $FichierCible
if($FileC){
write-host "OK : Fichier du jour bien présent sur le SharePoint"
# Suppression de tous les fichiers .xlsx présent dans le répertoire $CibleFolder
$items = Find-PnPFile -Folder $CibleFolder -Match *.xlsx
foreach ($item in $items)
{
if($item.Name -ne $ExcelFileName){
$item.DeleteObject()
}
}
exit 0
}
else
{
write-host "ERREUR : Fichier du jour introuvable sur le SharePoint"
exit 1
}
}
catch{
write-host "ERREUR : Fichier du jour introuvable sur le SharePoint"
exit 1
} |
J'ai juste déplacé la boucle de suppression après mon test qui vérifie que le nouveau fichier a bien été uploadé, et ça ne fonctionne plus. Il passe bien sur le $item.DeleteObject() mais le fichier n'est pas supprimé.
Auriez-vous une idée du pourquoi ?
Après quelques tests, la suppression ne fonctionne plus dès que je la mets après la ligne "$FileC = Get-PnPFile -Url $FichierCible"...
Merci d'avance pour votre aide ;)