Powershell Multipart WMI查询输出

时间:2017-01-04 08:09:37

标签: powershell output wmi

使用此代码时:

MERGE
INTO  target_table tgt
USING source_table src
ON  ( src.object_id = tgt.object_id )
WHEN MATCHED
THEN
UPDATE
SET   tgt.object_name = src.object_name,tgt.object_type = src.object_type
WHEN NOT MATCHED
THEN
INSERT ( tgt.object_id
    , tgt.object_name
    , tgt.object_type )
    VALUES ( src.object_id
    , src.object_name
    , src.object_type );

这样可行,但本地管理员组中两个以上成员的组成员身份返回类似于:

{Administrator, Domain Admins, Prod Server Admin...

我如何花费输出来显示完整会员资格? 此外,在仅选择与组名称x或y匹配的某些组的指针或返回True之后,还存在组x等。

2 个答案:

答案 0 :(得分:1)

您可能遇到输出显示格式问题,其中列数据超出了PowerShell中表格格式的可显示宽度。

您可以尝试使用Format-List cmdlet显示列表中的内容,而不是查看具有多个成员的本地管理员组是否正确显示。查看上面的链接,了解它的帮助,但使用它的一个基本示例是:

Get-Service | Format-List

至于您的过滤问题,看起来您正在使用反射来调用收集该数据的方法,因此使用PS cmdlet来帮助那些更难,所以我建议您像那样获取数据现在,但是单独做一个临时变量,然后过滤数据,选择你想要的特定组,使用类似的东西来匹配你的组名,并在if语句中,将相关数据放入另一个变量,然后你用于你的最终输出。

if ($item -match "groupNameX") { #Then... }

答案 1 :(得分:0)

终于解决了。

遇到this回答。

首先,找到一个脚本块,将成员资格输出为PSObject属性:

                $SB = {
                $members = net localgroup administrators | 
                where {$_ -AND $_ -notmatch "command completed successfully"} | 
                select -skip 4
                New-Object PSObject -Property @{
                Members=$members
                }
            }

然后修改了本地管理员栏目:

'Local Admins' = $admins.Members -join ','

输出仍然被截断,但是现在而不是export-CSV将列内容显示为 System.Object [] ,它现在显示带有-join中指定的分隔符的完整输出。