我一直想弄清楚如何获得可用的用户名为cacls / g用户名:右命令授予特定的用户权限的文件和目录。 我遇到了一些障碍,因为我的机器上有一些帐号(如SYSTEM帐号):
C:\Windows\system32>wmic sysaccount get Name ... SYSTEM ...
但是cacls的/ g选项只适用于NT AUTHORITY\SYSTEM ,所以它需要NT AUTHORITY域前缀。 我的问题是,我怎样才能确定这个前缀的任何帐户,如我的wmic查询系统? 你怎么能得到所有可用的帐户名称与cac的/ g选项一起使用?
我发现SysInternals(当然,低级操作系统工具的主人)有一个名为psgetsid的工具,它将会把SYSTEM帐户的SID和其他别名NT AUTHORITY/SYSTEM一起吐出,但是我希望能有一个更加标准的方式来获得这个名字:
C:\Users\User\Downloads\PSTools>psgetsid SYSTEM PsGetSid v1.44 - Translates SIDs to names and vice versa Copyright (C) 1999-2008 Mark Russinovich Sysinternals - www.sysinternals.com SID for NT AUTHORITY\SYSTEM: S-1-5-18
运行以下PowerShell脚本:
# Normal users: get-wmiobject -class "win32_account" -namespace "root\cimv2" | where-object{$_.sidtype -eq 1} | sort name | foreach {Write-Host $env:computername\$($_.Name)} # Normal groups: get-wmiobject -class "win32_account" -namespace "root\cimv2" | where-object{$_.sidtype -eq 4} | where-object{$_.sid.length -gt 15} | sort name | foreach {Write-Host $env:computername\$($_.Name)} # Builtin groups: get-wmiobject -class "win32_account" -namespace "root\cimv2" | where-object{$_.sidtype -eq 4 -and $_.SID -Match "^S-1-5-32-(\d){3}$" } | sort name | foreach {Write-Host BUILTIN\$($_.Name)} # Special accounts: get-wmiobject -class "win32_account" -namespace "root\cimv2" | where-object{$_.sidtype -eq 5} | sort name | foreach {Write-Host NT AUTHORITY\$($_.Name)} # Service accounts: get-service | foreach {Write-Host NT Service\$($_.Name)} # only if you have IIS with scripting installed: Get-WebConfiguration system.applicationHost/applicationPools/* | where {$_.ProcessModel.identitytype -eq 'ApplicationPoolIdentity'} | foreach {Write-Host IIS APPPOOL\$($_.Name)} # Only if you have Hyper-V installed get-vm | foreach {Write-Host NT VIRTUAL MACHINE\$($_.Id)} # Odd ones: "NT VIRTUAL MACHINE\Virtual Machines" "NT AUTHORITY\Local account and member of Administrators group" "NT AUTHORITY\Local account" "NT AUTHORITY\This Organization Certificate" "APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES" "CONSOLE LOGON"
这只适用于本地机器,在AD域中有更多的帐号, 我在superuser.com上的答案中有更多的信息