Dies ist nicht mein Code, und ich verstehe wirklich Powershell nicht sehr, aber ich habe ein Skript hier für den Zugriff auf Dateien (oder etwas). Es gibt einen Fehler mit Sonderzeichen wie Apostrophen, und ich kenne Escape-Sequenzen, aber ich analysiere einen Ordner und für jeden Ordner (und später Datei) verwende ich Setaccesscontrol für jeden Ordner/Datei. Ich kann keine Escape-Sequenzen für jedes einzelne verwenden, da es in der Variable $ fol gespeichert ist und jede Schleife anders ist. Ich bin ein absoluter Neuling und bekomme keine Powershell, aber ich bekomme Java, also stütze ich mich darauf. Jede Hilfe wird geschätzt.Powershell-Skript Fehler mit Apostrophen
foreach($Fol in $Folder2){
$fol = $fol.fullname
$NewOwnerACL = New-Object System.Security.AccessControl.FileSecurity
$Admin = New-Object System.Security.Principal.NTAccount($WhoIsNewOwner)
write-host ...$Admin to $Fol -Fore Yellow
$NewOwnerACL.SetOwner($Admin)
[System.IO.File]::SetAccessControl($fol, $NewOwnerACL)}
Der Fehler ist:
Exception "SetAccessControl" mit "2" Argumente Aufruf (e): "C: \ Aktien Operationen \ ... etwas mit Apostroph"
Bei C : \ cp \ PermissionFixer.ps1: 28 Zeichen: 5
+ [System.IO.File] :: SetAccessControl ($ fol, $ NewOwnerACL)
+ ~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~
+ CategoryInfo: NotSpecified: (:) [], MethodInvocationException
+ CategoryInfo: FileNotFoundException
Edit: Ich fand, dass diese lange Striche geschraubt es auf. Ich benutze Robocopy für dieses Skript, um die 255 oder was auch immer zu erreichen, und ich denke, es könnte die langen Striche falsch lesen? Gibt es einen anderen Weg, als nur durch jede einzelne Kette zu suchen, die danach sucht?
Sie sollten keine Escape-Sequenzen benötigen - kein String-Parsing. Was ist die _full_ Fehlermeldung, die Sie bekommen? – mklement0
'static void SetAccessControl (Zeichenfolgenpfad, System.Security.AccessControl.FileSecurity fileSecurity)' ..haben Sie überprüft, ob der Pfad $ fol existiert? – Hackerman
@Hackerman Ich tat, und ich bin mir ziemlich sicher, dass es da ist. Ich denke, es wird $ fol aus dem Durchsuchen dieses Ordners, also bin ich mir nicht sicher, wie das verderben würde. Die anderen Ordner und Dateien funktionieren vollständig, außer diesem. Einzig was ich bemerkte, war das ('). –