对于Windows 2003和2008服务器的用户和组,需要一些安全审核报告。该脚本将在服务器上本地运行。
管理员组报告
这是本地管理员组的成员列表,应包含以下列标题。这应该只列出组名,而不是用户组的一部分。
Server Name, Local or Domain, Domain, USER ID, Account/Group
abc, domain, abc.com, xyz, Account
def, domain, abc.com, pqr, groupname
本地用户报告。
这是本地用户报告,应包含以下列标题。
USER ID, Account Disabled, Full Name, Last Login details
User1, No, User Name, <date time>
User2, Yes, Full Name, <date time>
我试过的东西:
net local users
和net local group
→我无法获取其他用户的属性。get-wmiobject win32_useraccount
→无法获取群组信息。答案 0 :(得分:0)
这样的事情可能会这样:
$hostname = $(hostname)
$isLocal = @{
$true = "local";
$false = "domain";
}
$type = @{
"Win32_UserAccount" = "User";
"Win32_Group" = "Group";
}
gwmi -Query "ASSOCIATORS OF {Win32_Group.Domain='$hostname',Name='Administrators'} WHERE assocClass=Win32_GroupUser" |
select @{n="Server Name";e={$hostname}},
@{n="Local or Domain";e={$isLocal[$($_.Domain -eq $hostname)]}},
Domain, Name, @{n="Account/Group";e={$type[$_.__CLASS]}} |
ConvertTo-Csv -NoTypeInformation
未经测试,因为我手头没有AD。
可以像这样检索本地用户信息:
$sys = [ADSI]"WinNT://$env:COMPUTERNAME"
$sys.Children | ? { $_.SchemaClassName -eq 'user'} |
select @{n="USER ID";e={$_.Name.Value}},
@{n="Account Disabled";e={[bool]($_.UserFlags.Value -band 2)}},
@{n="Full Name";e={$_.FullName.Value}},
@{n="Last Login Details";e={$_.LastLogin.Value}} |
ConvertTo-Csv -NoTypeInformation