首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PSCustomObject预测

PSCustomObject预测
EN

Stack Overflow用户
提问于 2013-12-13 17:25:57
回答 1查看 2K关注 0票数 1

我已经创建了一个自定义对象,并且在输出一个数组时遇到了一些问题。

代码语言:javascript
复制
$i = "computername"
$adsi = [ADSI]"WinNT://$i"
$Object = $adsi.Children | ? {$_.SchemaClassName -eq 'user'} | % {
New-Object -TypeName PSCustomObject -Property @{
    ComputerName = $i.toupper() -join ''
    UserName = $_.Name -join ''
    Groups = ($_.Groups()  |Foreach-Object {$_.GetType().InvokeMember("Name",     'GetProperty', $null, $_, $null)}) -join ',' 
    Disabled = Get-WmiObject -ComputerName $i -Class Win32_UserAccount -Filter "LocalAccount='$true'"|Select-Object -expandproperty Disabled 
    }  
  } 

$object

问题在于禁用的数组,而不是每一行显示一个项目,我知道我可能需要在该行的某个地方添加{False, True, False, False},但我不确定在哪里。

有人有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-13 17:40:32

您所看到的对我来说是有意义的--您正在创建一个包含ComputerNameUserName等的对象数组,而在Disabled中,您得到了一个值数组,因为您正在查询所有本地用户帐户并获取它们的禁用状态。我怀疑您想要的是确定每个用户依次是禁用的。在这种情况下,您需要对Filter on Get-WMIObject进行一点扩展,以便只获得一个用户。

代码语言:javascript
复制
$i = "computername"
$adsi = [ADSI]"WinNT://$i"
$Object = $adsi.Children | ? {$_.SchemaClassName -eq 'user'} | % {
$UserName = $_.Name -join '';
New-Object -TypeName PSCustomObject -Property @{
    ComputerName = $i.toupper() -join ''
    UserName = $UserName
    Groups = ($_.Groups()  |Foreach-Object {$_.GetType().InvokeMember("Name",     'GetProperty', $null, $_, $null)}) -join ',' 
    Disabled = Get-WmiObject -ComputerName $i -Class Win32_UserAccount -Filter "LocalAccount='$true' and name='$UserName'"|Select-Object -expandproperty Disabled 
    }  
  } 

$object
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20572427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档