2016-07-20 16 views
0

Code:Get-ChildItem -SilentlyContinue wirft AccessDenied

$cPstFiles = Get-ChildItem -Path $env:USERPROFILE -File -Force ` 
    -Recurse -Include "*.pst" -ErrorAction "SilentlyContinue" 

Ausnahme:

Get-ChildItem : Access is denied 
At test.ps1:172 char:22 
+   $cPstFiles = Get-ChildItem -Path $env:USERPROFILE -File -Force ` 
+      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [Get-ChildItem], UnauthorizedAccessException 
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetChildItemCommand 

Kontext: Powershell v4.0/.NET 4.5.2/Windows 7.

Wie ist das ist sogar möglich? Und wie kann ich SilentlyContinue tun, was es tun soll?

Es ist wahrscheinlich erwähnenswert, dass das Skript nicht immer fehlschlägt. Bei einigen Computern schlägt es fehl, bei anderen hingegen funktioniert es einwandfrei, obwohl Windows auf allen Systemen mit demselben Image bereitgestellt wird.

+0

Sind Sie sicher, dass nach '? Erhalten Sie das gleiche Ergebnis, wenn Sie alle Parameter auf eine Zeile setzen –

+0

Es gibt kein Leerzeichen und alle Parameter in einer Zeile ändern nichts. –

Antwort

2
$ErrorActionPreference = “silentlycontinue” 
$Extension = "*pst" 
    $TargetFolder = "$env:userprofile" 
    Get-Childitem $TargetFolder -Include $Extension -Recurse 
+0

Obwohl ich über $ ErrorActionPreference wusste, dachte ich nie darüber nach, diese Problemumgehung zu verwenden. Es klappt. Danke vielmals! –

+0

Das hat nicht geholfen. – Suncatcher

0

Bedecken Sie es einfach in einem try {} Block und fügen Sie eine catch {} Routine für solche harten Fehler hinzu.

Oh, was ich gerade gesehen habe, sollte die ErrorAction einfach SilentlyContinue sein, kein "SilentlyContinue" String. Versuchen

+1

"SilentlyContinue" und "SilentlyContinue" 'sind genau dieselben, wenn sie in einem Argumentkontext analysiert werden –

+0

Danke, Kumpel. – Martin

+0

@Martin Ihre Antwort ist nicht das, was ich brauche, sorry. Es wird immer unzugängliche Dateien geben, da Windows so Profile handhabt. Aber das ist gut für mich, ich möchte nicht terminierende Fehler überspringen - daher 'SilentlyContinue'. –

0

Set-ExecutionPolicy Remotesigned 

zunächst PS keine Berechtigungen Skripte auf System enviornments auszuführen, so dass es als ResmoteSigned Einstellung und läuft mit Admin-Rechten kann das Problem lösen.

+0

Obwohl dieser Code zur Lösung des Problems hilfreich sein kann, würde die Bereitstellung eines zusätzlichen Kontexts bezüglich _why_ und/oder _how_, der die Frage beantwortet, den langfristigen Wert erheblich verbessern. Bitte [bearbeiten] Sie Ihre Antwort, um eine Erklärung hinzuzufügen. –

+0

Das hat nicht funktioniert. – Suncatcher