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