我有一个PowerShell函数,可以在Perflogs文件夹上启用审计。该功能在具有英语安装语言的Windows PC上运行良好。但是当我在丹麦语版本上使用它时它失败了,因为"每个人"不会退出丹麦装置。在丹麦的装置"每个人"被称为" Alle"
所以我不想使用每个人,而是想使用SID" S-1-1-0"
S-1-1-0 =每个人/世界link
但由于某种原因,这也行不通。有没有人对此有所了解以及为什么我不能这样做?
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}
我这样称呼函数:
AddAuditToFile "C:\Perflogs"
答案 0 :(得分:1)
使用SecurityIdentifier
类翻译SID:
$everyoneSid= New-Object System.Security.Principal.SecurityIdentifier "S-1-1-0"
$everyoneSidName= $everyoneSid.Translate([System.Security.Principal.NTAccount])
$everyoneSidName.Value
这将根据实际机器输出实际的每个人组名称。
答案 1 :(得分:0)
Spiceworks的Gungnir找到了解决方案。
我必须翻译SID并创建一个变量,然后使用变量
$ AccountSID = New-Object -TypeName System.Security.Principal.SecurityIdentifier -ArgumentList'S-1-1-0'
$ AccountName = $ AccountSID.Translate([System.Security.Principal.NTAccount])。值
$ AccessRule = New-Object System.Security.AccessControl.FileSystemAuditRule -ArgumentList($ AccountName,'CreateFiles,Modify,AppendData','none','none','Success')