PowerShell: Was ist der beste Weg, um zu überprüfen, ob der aktuelle Benutzer die Berechtigung zum überschreiben einer Datei in PowerShell?
TL;DR
Am Anfang von meinem script, ich möchte überprüfen, ob eine Datei (als parameter) ist überschreibbare, und beenden, wenn der aktuelle Benutzer nicht über die Berechtigung, das zu tun,.
(Zum Beispiel, wenn der Benutzer oder die Gruppe, der er/Sie angehört, wurde der Zugriff verweigert einer Datei).
Der Grund: in dem script, ich bin Verarbeitung einiger Daten (das dauert lange), und am Ende Schreibe ich die Ergebnisse in eine Datei, aber es wäre ein wenig frustrierend, dass das ganze script lief einwandfrei, aber am Ende, es stellt sich heraus, dass die Datei nicht schreibgeschützt ist (was ich haben könnte, überprüft am Anfang).
, Was ich versucht habe
Dies ist eine richtige Weg, um zu testen, ob ein Datei existiert:
$Outfile = "w:\Temp\non-writable-file.txt" # (normally I get this as a parameter)
$OutFileExists = Test-Path -Path $Outfile -PathType Leaf
Natürlich $OutfileExists
wird gleich True
wenn die Datei vorhanden ist.
Aber ich möchte, um zu überprüfen, ob diese Datei schreibbar ist - jetzt ist es nicht (ich habe die Sicherheitseinstellungen selbst in der Lage sein, um es zu testen):
So, wenn ich es versuchen:
(Get-Acl $Outfile).Access
Bekomme ich diese Ausgabe:
FileSystemRights : Write
AccessControlType : Deny
IdentityReference : Everyone
IsInherited : False
InheritanceFlags : None
PropagationFlags : None
FileSystemRights : ReadAndExecute, Synchronize
AccessControlType : Allow
IdentityReference : Everyone
IsInherited : False
InheritanceFlags : None
PropagationFlags : None
FileSystemRights : FullControl
AccessControlType : Allow
IdentityReference : DOESNTMATTER\Pete
IsInherited : False
InheritanceFlags : None
PropagationFlags : None
(Ich könnte auch gefiltert haben, dieses Ergebnis.)
OK, jetzt weiß ich, dass die Gruppe Jeder der Gruppe hat keinen Schreibzugriff.
Aber ich weiß immer noch nicht, wie Sie die overwritability dieser Datei aus.
ach, komm schon, Mann 😀 Warum hast du noch Kommentar diesem? 😀 ich weiß das und ich habe nicht gefragt, WARUM kann ich nicht die Datei überschreiben (ich habe die Sicherheitseinstellungen mich für in der Lage sein, um es zu testen!!), Ich fragte, WIE ich überprüfen könnte (in der PowerShell), ob eine Datei schreibbar ist...
InformationsquelleAutor Sk8erPeter | 2014-04-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe diese verwendet:
Wird versucht, die Datei zu öffnen, die für schreib-Zugriff, dann schließen Sie sofort (ohne wirklich etwas schreiben zu der Datei). Wenn es die Datei nicht öffnen aus irgendeinem Grund, es wird die Catch-block, und Sie können die Fehlerbehandlung gibt.
und für einen anderen Benutzer auf Domäne (mit $credential) haben Sie einen anderen Befehl ?
InformationsquelleAutor mjolinor
Könnten Sie versuchen, eine schnelle write (Anhängen), um die Datei wie
Wo keine Schreibrechte vorhanden sind, erhalten Sie eine Fehlermeldung:
Könnten Sie fangen und kündigen an, dass Fehler, in dem Fall, wo Schreibrechte vorhanden - Sie haben nur angefügt, eine neue Zeile in die Datei.
InformationsquelleAutor bob