无法获取本地用户的状态(禁用) [英] Unable to obtain status (Disable) of Local user

查看:18
本文介绍了无法获取本地用户的状态(禁用)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试获取具有组成员身份和禁用状态的本地用户列表。我取得了一些成功,但无法获得每个本地用户的相应禁用状态。我正在结合使用WMI和ADSI来获取本地用户的禁用状态。禁用状态属性不适用于ADSI。由于我是PS新手,任何其他选择或解释都会非常感谢。仅供参考:这些是独立服务器,不是成员服务器

$adsi = [ADSI]"WinNT://$env:computername"
$user = $adsi.Children | where {$_.SchemaClassName -eq 'user'}
$user| Foreach-Object {
    $g1 = $_.Groups() | Foreach-Object {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}
    $s1 = gwmi -ClassName Win32_UserAccount -Filter "LocalAccount = $true" | % { $_.Disabled}
    $_ | Select-Object  @{n='UserName';e={$_.Name}},
    @{n='Groups';e={$g1 -join ';'}},
    @{n='LastLogin';e={$_.LastLogin}},
    @{n='DisabledSatus';e={$s1 -join ''}}    
       }

输出:

UserName                        Groups                          LastLogin                       Disabled                        
--------                        ------                          ---------                       -----                         
Administrator                   Administrators                  6/5/2012 5:18:54 PM             OKOKDegradedOKOKOKOKOKOKDeg...
TestUser                Users               10/10/2013 7:11:22 PM       OKOKDegradedOKOKOKOKOKOKDeg..

推荐答案

两个更改。我会在ForEach-Object循环的顶部添加以下内容:

$currentuser = $_

并将$s行更改为:

$s1 = gwmi -ClassName Win32_UserAccount -Filter "LocalAccount = $true" | ? {$_.Name -eq $currentuser.Name} | % { $_.Disabled}

这篇关于无法获取本地用户的状态(禁用)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆