2017-05-05 4 views
0

J'ai un script PowerShell qui est censé décompresser des fichiers dans un répertoire, mais quand je le lance, il jette cette erreur:PowerShell Décompressez Accès refusé

Exception calling "ExtractToDirectory" with "2" argument(s): "Access to the path 
'E:\SubFolder\SubFolder2\SubFolder3' is denied." 
At line:7 char:5 
+  [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, "E:\SubFolder\Sub ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : UnauthorizedAccessException 

Je me suis donné le contrôle total à chaque dossier individuel dans le chemin et exécutez en tant qu'administrateur (juste pour tester) et il jette toujours l'erreur.

Voici mon code

Add-Type -AssemblyName System.IO.Compression.FileSystem 

function Unzip 
{ 
    param([string]$zipfile) 

    [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, "E:\SubFolder\SubFolder2\SubFolder3") 

} 

$Files = get-childitem "E:\SubFolder\SubFolder2\SubFolder3" 

foreach ($i in $files) 
{ 
    Unzip "SubFolder\SubFolder2\SubFolder3\$i" 
} 

Quelqu'un pourrait-il me diriger dans la bonne direction pour obtenir ce travail?

+1

Je ne suis pas en mesure de reproduire l'erreur, mais peut-être essayer ajouter une clause 'Where' dans' Get-ChildItem': 'get-childitem" E: \ Sous-dossier \ Sous-dossier2 \ Sous-dossier3 "| Où {$ _. Extension -eq ".zip"} ' – dbso

+0

Cela a fait l'affaire. Postez votre réponse ci-dessous et je vais accepter. Merci! – Cornflake2068

Répondre

1

Ajouter un Where dans le Get-ChildItem

Get-ChildItem "E:\SubFolder\SubFolder2\SubFolder3" | Where { $_.Extension -eq ".zip" } 

Je vous suggère également de modifier l'argument lors de l'appel Décompressez fonction

Unzip $i.FullName

+0

'Get-ChildItem" E: \ Sous-dossier \ Sous-dossier2 \ Sous-dossier3 \ * .zip "' fonctionnerait aussi bien. – JosefZ