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):

PowerShell: Was ist der beste Weg, um zu überprüfen, ob der aktuelle Benutzer die Berechtigung zum überschreiben einer Datei in PowerShell?

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.

Wenn sich Jeder verweigert Berechtigungen zu schreiben, dann kann niemand schreiben, um die Datei ohne änderung der Berechtigungen. "Deny Einträge zulassen Vorrang vor Einträgen. Dies bedeutet, dass, wenn ein Benutzer Mitglied von zwei Gruppen, eine, die erlaubt ist, eine Genehmigung und eine weitere, verweigert der gleichen Berechtigung, die der Benutzer verweigert die Erlaubnis."
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

Schreibe einen Kommentar