2016-11-30 5 views
1

Ich habe eine PowerShell-Funktion, die Überwachung für den Ordner Perflogs aktiviert. Die Funktion funktioniert problemlos auf einem Windows-PC mit einer englischen Installationssprache. Aber wenn ich es für eine dänische Version verwende, schlägt es fehl, weil "Jeder" nicht auf einer dänischen Installation beendet wird. Auf einer dänische Installation „Jeder“ ist „All“SID in einer Powershell-Funktion

Anstatt also mit jedem nennt, dann würde Ich mag den SID „S-1-1-0“

S-1-1-0 verwenden = Jeder/Welt link

Aber aus irgendeinem Grund funktioniert das auch nicht. Hat jemand eine Ahnung davon und warum kann ich das nicht tun?

function AddAuditToFile { 
param 
(
    [Parameter(Mandatory=$true)] 
    [string]$path 
) 

Get-Acl $path -Audit | Format-List Path,AuditToString | Out-File -FilePath 'file_before.txt' -Width 200 -Append 
$File_ACL = Get-Acl $path 
$AccessRule = New-Object System.Security.AccessControl.FileSystemAuditRule("S-1-1-0","CreateFiles,Modify,AppendData”,"none","none",”Success") 
$File_ACL.AddAuditRule($AccessRule) 
$File_ACL | Set-Acl $path 
Get-Acl $path -Audit | Format-List Path,AuditToString | Out-File -FilePath 'file_after.txt' -Width 200 -Append} 

Ich nenne die Funktion wie folgt aus:

AddAuditToFile "C:\Perflogs" 
+0

Erhalten Sie irgendwelche Fehlermeldungen beim Versuch mit der SID oder scheint es in Ordnung zu sein, nur nicht wirklich irgendwelche Änderungen vornehmen? –

+2

'" S-1-1-0 "' -> '(New-Objekt System.Security.Principal.SecurityIdentifier ([System.Security.Principal.WellKnownSidType] :: WorldSid), $ null)' – PetSerAl

+0

Ich bekomme einen Fehler . und das Skriptdosnt wird fortgesetzt. kann mich nicht an Fehler erinnern: D. –

Antwort

1

Verwenden Sie die SecurityIdentifier Klasse, um die SID zu übersetzen:

$everyoneSid= New-Object System.Security.Principal.SecurityIdentifier "S-1-1-0" 
$everyoneSidName= $everyoneSid.Translate([System.Security.Principal.NTAccount]) 
$everyoneSidName.Value 

Dies wird Ausgang der tatsächliche jeder Gruppennamen auf dem tatsächlichen Maschine abhängig .

+0

Ja, das wird es auch beheben. Danke für deine Antwort –

0

Gungnir von Spiceworks fand die Lösung.

hatte ich den SID zu übersetzen und eine Variable machen und dann die Variable

$ AccountSID = New-Object -TypeName System.Security.Principal.SecurityIdentifier -ArgumentList ‚S-1-1-0 verwenden '

$ Accountname = $ AccountSID.Translate ([System.Security.Principal.NTAccount]). Value

$ AccessRule = New-Object System.Security.AccessControl.FileSystemAuditRule -ArgumentList ($ Kontoname' create , Modify, AppendData ',' none ',' none ',' Erfolg ')