Retirez-Rubrique en erreur: Impossible de supprimer l'élément [élément de chemin & nom]: le chemin d'Accès "[élément de chemin & nom] " est refusé

Je suis nouveau sur PowerShell.

Je suis en train d'automatiser le déploiement de composants dll à partir d'un dossier sur un serveur source vers plusieurs dossiers sur le serveur de destination. Cela semble comme il devrait être assez simple: copiez des composants à partir de la source (mise en) dossier sur le serveur source vers des dossiers sur le serveur de destination, vérifiez les copies et enfin supprimer des composants de déploiement du dossier sur le serveur source.

La copie du ou des fichiers à partir du serveur source vers le serveur de destination est un travail sans problème.
Toutefois, lorsque le script se déplace à supprimer les composants à partir du serveur source, je suis par intermittence confronté à l'erreur:
"Retirez-Rubrique en erreur: Impossible de supprimer l'élément [élément de chemin & nom]: le chemin d'Accès" [élément de chemin & nom] " est refusé."

J'ai l'exécution de ce script plusieurs fois; parfois, il termine avec pas de problèmes, parfois avec l'erreur. L'erreur ne se produit pas pour tous les fichiers à supprimer et semble se produire sur différentes composantes à chaque fois qu'il présente.

Ci-dessous est la fonction que j'ai écrite à supprimer des composants et vérifier les suppressions:

function DeleteSourceFiles($srcPath) {
    # Announce delete
    OutputToHostAndLog ("Files will be removed from "+$srcPath+"...")
    OutputToHostAndLog "Removing files..."

    # Deletes all file items (i.e. all except folders) in source folder
    $filesToDelete=Get-ChildItem $srcPath | Where-Object {$_ -is [IO.FileInfo]}
    ForEach($item in $filesToDelete) {
        Remove-Item $srcPath$item -force

        # Verify deletions       
        if(Test-Path($srcPath+"\"+$item)) {
            OutputToHostAndLog ("Delete failed: "+$item.Name)        
            $fail++
        }
        else {
            OutputToHostAndLog ($item.Name+" deleted successfully...")
        }
    }
 }

L'utilisation de la force de paramètre avec la cmdlet Remove-Item ne semble pas avoir d'effet sur la question. Les fichiers (encore une fois, les différents fichiers avec chaque échec) ne semblent pas être isReadOnly de toute façon.

De même, l'exécution de PowerShell en tant qu'Administrateur ne semble avoir aucun effet, bien que Get-Acl pour le dossier source indique que l'Administrateur doit avoir FullControl.

Est-ce un problème d'autorisations que je suis absent?
Toutes les suggestions de très apprécié...

EDIT:
J'ai mis à jour mon script ainsi:

function DeleteSourceFiles($srcPath) {
    # Announce delete
    OutputToHostAndLog ("Files will be removed from "+$srcPath+"...")
    OutputToHostAndLog "Removing files..."
    OutputToHostAndLog $gap

    # Delete all file items (i.e. all except folders) in source folder
    $filesToDelete=Get-ChildItem $srcPath | Where-Object {$_ -is [IO.FileInfo]} | ForEach {
        Remove-Item $_.FullName -Force

        # Verify deletions
        if(Test-Path($srcPath+"\"+$_)) {
            OutputToHostAndLog ("Delete failed: "+$_.Name)        
            $fail++
        }
        else {
            OutputToHostAndLog ($_.Name+" deleted successfully...")
        }
    }
}

Cela semble fonctionner OK mais je ne suis toujours pas sûr de savoir pourquoi cette disposition devrait produire des résultats différents. Dans l'intérêt de l'apprentissage, de toutes les suggestions seraient grandement appréciés...

J'ai une erreur similaire (PSv3). J'ai l'intuition que c'est le script lui-même qui est le maintien de la serrure. L'original de votre script stocke les fichiers dans une variable (la création d'une serrure?). Le second supprime le fichier avant de le stocker dans la variable. Je vais avoir des difficultés à réorganiser mon script pour le prouver.

OriginalL'auteur The Furious Bear | 2014-04-08