-2

需要一些报告来对 Windows 2003 和 2008 服务器的用户和组进行安全审核。该脚本将在服务器上本地运行。

  1. 管理员组报告

    这是本地管理员组的成员列表,应包含以下列标题。这应该只列出组名,而不是组的用户部分。

    Server Name, Local or Domain, Domain, USER ID, Account/Group
    abc, domain, abc.com, xyz, Account
    def, domain, abc.com, pqr, groupname
    
  2. 本地用户报告

    这是本地用户报告,应包含以下列标题。

    USER ID, Account Disabled, Full Name, Last Login details
    User1, No, User Name, <date time>
    User2, Yes, Full Name, <date time>
    

我试过的东西:

  1. net local users并且net local group→ 我无法获取其他用户的属性。
  2. get-wmiobject win32_useraccount→ 无法获取群组信息。
4

1 回答 1

0
  1. 这样的事情可能会做:

    $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
    

    不过,未经测试,因为我手头没有广告。

  2. 可以像这样检索本地用户信息:

    $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
    
于 2013-06-27T11:36:38.867 回答