获取计算机列表的成员资格

时间:2019-09-07 16:12:54

标签: powershell

我一直在使用以下命令来获取给定计算机名的成员资格列表:

Get-ADPrincipalGroupMembership -Identity (Get-ADComputer <MACHINENAME>) 
| select-object name | Out-File C:\mydir\MemberShip.csv

成员资格标识与诸如Adobe Acrobat Pro,MS Project等机器关联的软件。有时该软件已关联但未实际安装,这就是为什么我使用查询针对另一个列表验证此信息的原因。我正在尝试运行一个查询以提取文本文件中资产列表的成员资格,并导出每台计算机的名称以及每台计算机的成员资格。也许让它显示如下内容:

NAME            NAME
-----------     -------------
<MACHINENAME1>  ADOBE ACROBAT PRO
                MS PROJECT STD
                MS VISIO PRO

<MACHINENAME2>  ADOBE ACROBAT PRO
                ADOBE PHOTOSHOP

我尝试了以下操作,但出现了一些错误:

$computers = Get-Content .\computers.txt 
Get-ADPrincipalGroupMembership ForEach ($computer in $computers) 
{Get-ADComputer $computer} | select-object operatingSystem, name | 
Out-Gridview

任何帮助或指导将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作。您可以将其放在脚本,函数或其他任何内容中。

$results = New-Object -TypeName System.Collections.ArrayList
$computers = Get-Content .\computers.txt

$computers | ForEach-Object {
    $ComputerObject = Get-ADComputer $_
    $obj = @{
        Computername = $_
        OS = $ComputerObject.OperatingSystem
    }

    $obj.Memberships = Get-ADPrincipalGroupMembership -Identity $ComputerObject | select-object name 

    $results.Add($obj) | Out-Null
}

return $results

答案 1 :(得分:-1)

$computers = Get-Content .\computers.txt 

$results = foreach ( $computer in $computers ) {

        $adcomputerproperties = get-adcomputer -Identity $computer -Properties *
        Get-ADPrincipalGroupMembership -Identity $adcomputerproperties.DistinguishedName 
        | select @{n="Computername";e={ $computer}},Name,@{n="OperatingSystem"; e={ $adcomputerproperties.OperatingSystem}}  } 


$results | Out-GridView