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 PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
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 PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
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![]()
Partager