Windows 过滤掉Get cmdlet中的空参数值

Windows 过滤掉Get cmdlet中的空参数值,windows,powershell,server,active-directory,Windows,Powershell,Server,Active Directory,我正在尝试找出正确的语法,以及是否使用selectobject或Where Object来实现我想要的功能 基本上,如果我运行一个基本的Get-cmdlet,它以表格格式返回一个对象的参数列表及其值,我想用空值隐藏这些参数 例如,我想要这个输出:(输出是示例) AmirOU计数 ----------------- ----- tegdg 0 wfw 0 阿米尔7 WTW58 雷特雷特0 ergre 2 iubuibfr 0 用户593 威特威0 wdqdd 50 威特威0 第0组 wtw 0 德

我正在尝试找出正确的语法,以及是否使用selectobject或Where Object来实现我想要的功能

基本上,如果我运行一个基本的Get-cmdlet,它以表格格式返回一个对象的参数列表及其值,我想用空值隐藏这些参数

例如,我想要这个输出:(输出是示例)

AmirOU计数
----------------- -----
tegdg 0
wfw 0
阿米尔7
WTW58
雷特雷特0
ergre 2
iubuibfr 0
用户593
威特威0
wdqdd 50
威特威0
第0组
wtw 0
德威17
威特威0
威特威72
wf 11
fdgd 1
fdbd 53
网0
sf4t0
4tg 0
军士长0
dsfet 0
ergre 0
看起来像这样:

$total = 0

Get-ADOrganizationalUnit -filter * -SearchBase 'OU=Amir,OU=test,DC=sina,DC=local' | 
    ForEach-Object {
         if ($_.distinguishedname -notmatch 'DisabledUsers|Exchange') {
            $users = Get-ADUser -filter * -searchbase $_.distinguishedname -searchscope Onelevel | Where-Object { $_.Enabled -eq $true }
            $test = ($users | Measure-Object).count

            if ($test) {
                $total += $test

                New-Object psobject -Property @{
                    Count = $test
                    AmirOU = $_.Name
                }
            }
        }
    }

Write-Host "`nTotal: $total"
AmirOU计数
----------------- -----
阿米尔7
WTW58
ergre 2
用户593
5T550
grtg 17
威特威72
wf 11
fdgd 1
fdbd 53
这是我的代码:

$total=$null
获取ADOrganizationalUnit-filter*-SearchBase'OU=Amir,OU=test,DC=sina,DC=local'|
弗雷奇{
if($\区分名称-不匹配“DisabledUsers | Exchange”){
$users=Get ADUser-filter*-searchbase$\区分名称-searchscope Onelevel |其中启用了对象-eq true
$test=($users | measure object).count
$total+=$test
新对象psobject-属性@{
计数=$test
AmirOU=$\u.Name;
}
}
}
写入主机“`nTotalt:$total”

您只需在其中添加一个测试,查看
.count
是否不是0,如下所示:

$total = 0

Get-ADOrganizationalUnit -filter * -SearchBase 'OU=Amir,OU=test,DC=sina,DC=local' | 
    ForEach-Object {
         if ($_.distinguishedname -notmatch 'DisabledUsers|Exchange') {
            $users = Get-ADUser -filter * -searchbase $_.distinguishedname -searchscope Onelevel | Where-Object { $_.Enabled -eq $true }
            $test = ($users | Measure-Object).count

            if ($test) {
                $total += $test

                New-Object psobject -Property @{
                    Count = $test
                    AmirOU = $_.Name
                }
            }
        }
    }

Write-Host "`nTotal: $total"

您只需在其中添加一个测试,查看
.count
是否不是0,如下所示:

$total = 0

Get-ADOrganizationalUnit -filter * -SearchBase 'OU=Amir,OU=test,DC=sina,DC=local' | 
    ForEach-Object {
         if ($_.distinguishedname -notmatch 'DisabledUsers|Exchange') {
            $users = Get-ADUser -filter * -searchbase $_.distinguishedname -searchscope Onelevel | Where-Object { $_.Enabled -eq $true }
            $test = ($users | Measure-Object).count

            if ($test) {
                $total += $test

                New-Object psobject -Property @{
                    Count = $test
                    AmirOU = $_.Name
                }
            }
        }
    }

Write-Host "`nTotal: $total"

请参见为什么不需要使用变量
$test
测量对象
。->
if($users.count){…}
@LotPings当然,我只是想保留尽可能多的OP原始代码不变,尽管我确实将
$total=$null
更改为
$total=0
,并稍微更改了
Where对象
。也可能更改了
度量对象
,但是…请参见此,为什么不需要使用变量
$test
度量对象
。->
if($users.count){…}
@LotPings当然,我只是想保留尽可能多的OP原始代码不变,尽管我确实将
$total=$null
更改为
$total=0
,并稍微更改了
Where对象
。也可以更改
测量对象
,但是。。。