Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 从两个单独的集合中创建一个报告_Powershell - Fatal编程技术网

Powershell 从两个单独的集合中创建一个报告

Powershell 从两个单独的集合中创建一个报告,powershell,Powershell,我在PowerShell中遗漏了一些基本的东西 我有一个生成两个集合的脚本,一个是包含特定应用程序版本详细信息的计算机名,另一个是从计算机名列表中提取的单独用户名列表,因为用户名位于计算机名中,例如,计算机名为: XXXXXX02jbloggs 此计算机的所有者是jbloggs,jbloggs是一个有效的广告对象,其全名为joe blogs 脚本的最终目标是生成一个包含计算机名、所有者SamAccountName、全名和应用程序详细信息的报告,脚本将专门检查这些信息 比如说, 这一系列机器上有

我在PowerShell中遗漏了一些基本的东西

我有一个生成两个集合的脚本,一个是包含特定应用程序版本详细信息的计算机名,另一个是从计算机名列表中提取的单独用户名列表,因为用户名位于计算机名中,例如,计算机名为:

XXXXXX02jbloggs
此计算机的所有者是jbloggs,jbloggs是一个有效的广告对象,其全名为joe blogs

脚本的最终目标是生成一个包含计算机名、所有者SamAccountName、全名和应用程序详细信息的报告,脚本将专门检查这些信息

比如说,

这一系列机器上有什么版本的Adobe Reader

到目前为止,我已经:

$ErrorActionPreference = "SilentlyContinue"

$Computers = Get-ADComputer -Server BlahBlah.com -Filter {name -like "XXXXXX02*"} | 
Select-Object -ExpandProperty Name

$Users = $Computers -Replace '\D*\d*(\w*)', '$1'

$Results = foreach ($Computer in $Computers) {
    Get-CimInstance -ComputerName $Computer -ClassName Win32_Product | 
    Where-Object{$_.Name -like "*Adobe Reader*"} | 
    Select-Object PSComputerName, Name, Version, InstallDate 
}

$FullNames = ForEach ($user in $Users) {
    Get-ADUser -Server BlahBlah.com -Identity $User -Properties * | 
    Select-Object -ExpandProperty Name
} 
  • $Results
    为我提供计算机名、Adobe Reader xxx、版本和安装日期的列表
  • $FullNames
    根据用户ID为我获取全名列表
我不知道如何构造脚本,使其生成全名、用户名、计算机名、应用程序名和安装日期

这就是为什么我说我在PowerShell中遗漏了一些基本的东西,我一直在研究自定义对象、嵌套循环和其他想法,但都没有用。我正在寻找一些关于这类问题的建议,因为我需要完成几个类似的例子。 任何建议都将不胜感激。

  • foreach($Computers in$Computers)
    中获取单个当前用户,而不是创建两个单独的foreach
  • 将计算属性添加到选择中,以将
    FullName
    包括在 $Result

$ErrorActionPreference = "SilentlyContinue"

$Computers = Get-ADComputer -Server BlahBlah.com -Filter {name -like "XXXXXX02*"} | 
Select-Object -ExpandProperty Name

$Results = foreach ($Computer in $Computers) {
    $User = $Computer -Replace '\D*\d*(\w*)', '$1'
    $FullName = (Get-ADUser -Server BlahBlah.com -Identity $User -Properties *).Name

    Get-CimInstance -ComputerName $Computer -ClassName Win32_Product | 
    Where-Object{$_.Name -like "*Adobe Reader*"} | 
    Select-Object PSComputerName, Name, Version, InstallDate,@{n='FullName';e=@{$FullName}}
}