WinFuture-Forum.de: Laufwerk durchsuchen (PowerShell) - WinFuture-Forum.de

Zum Inhalt wechseln

Windows 10: Alle News, der Download sowie zahlreiche Screenshots und Videos zum neuen Betriebssystem von Microsoft. Jetzt im WinFuture Windows 10 - Special informieren!
Seite 1 von 1

Laufwerk durchsuchen (PowerShell) Laufwerk C:\ mithilfe von PowerShell durchsuchen


#1 Mitglied ist offline   TheBlackDragon 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 05. Juni 19
  • Reputation: 0

geschrieben 26. September 2019 - 10:58

Sehr geehrte Damen und Herren,

gerade bin ich dabei ein Skript zu schreiben, welches eine selbst erstellte Konfigurationsdatei auf dem Laufwerk C:\... suchen soll.
Dieses Skript soll auch von Usern ausgeführt werden, welche keine Administrator Rechte haben.
Natürlich befinden sich in diesem Verzeichnis auch Verschlüsselte Ordner sowie Ordner auf welche man als User nicht Zugreifen kann und darf.

Anhand dieses Code Schnipsels werden verschiedene Verzeichnisse durchlaufen.
Nur bei Schreibgeschützten Verzeichnissen wird ein Fehler ausgegeben wie beispielsweise dieser:

Zitat

Get-ChildItem : Der Zugriff auf den Pfad"C:\Windows\System32\LogFiles\WMI\RtBackup" wurde verweigert.
In Zeile:1 Zeichen:1
+ Get-ChildItem -Recurse | where {$_.extension -eq ".conf"}
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (C:\Windows\Syst...es\WMI\RtBackup:String) [Get-ChildItem], Unaut
horizedAccessException
+ FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand


Könnte man die verweigerten Verzeichnisse mithilfe eines Codes irgendwie auslassen um eben nicht in diesen Fehler zu laufen?
     Get-ChildItem -Recurse | where {$_.extension -eq ".conf"}



Die verschiedenen Verzeichnisse sind %USERPROFILE% und %PROGRAMMDATA%.
Das funktioniert ohne Probleme.

Der Code Abschnitt sieht so aus:
    if(Test-Path $PSScriptRoot'\test.conf'){  
        $lines= Get-Content $PSScriptRoot'\test.conf' #--> Muss noch geändert werden in  C:\[IRGENDENDWAS]
    }elseif(Test-Path $env:ALLUSERSPROFILE'\test.conf'){   
        $lines= Get-Content $env:ALLUSERSPROFILE'\test.conf'
    }elseif(Test-Path $env:USERPROFILE'\test.conf'){   
        $lines= Get-Content $env:USERPROFILE'\test.conf'
    }



Anstelle von Test-Path $PSScriptRoot'\test.conf' soll eben die Abfrage unter C:\ ... stehen:
    if(Test-Path $PSScriptRoot'\test.conf'){  
        $lines= Get-Content $PSScriptRoot'\test.conf' #--> Muss noch geändert werden in  C:\[IRGENDENDWAS]
    }


Der Abschnitt $lines= Get-Content $PSScriptRoot'\test.conf' muss eingetragen werden, da mit der Variable $lines weitergearbeitet wird.

Mit freundlichen Grüßen
Alex
0

Anzeige



#2 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.737
  • Beigetreten: 20. Juli 07
  • Reputation: 1.091

geschrieben 26. September 2019 - 11:15

Kann man, aber man kann auch try/catch drumrumbauen oder -errorAction SilentlyContinue an Get-Childitem anhängen.

Note, try/catch erfordert stattdessen Stop. Sonst wird keine fangbare Ausnahme generiert.
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#3 Mitglied ist offline   TheBlackDragon 

  • Gruppe: Mitglieder
  • Beiträge: 19
  • Beigetreten: 05. Juni 19
  • Reputation: 0

geschrieben 30. September 2019 - 10:34

Vielen Dank für die Antwort.

Hatte sich erledigt da der Auftrag von mit falsch interpretiert wurde.

Dennoch nochmals vielen Dank.

MfG
Alex
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0