Powershell 从两个单独的集合中创建一个报告
我在PowerShell中遗漏了一些基本的东西 我有一个生成两个集合的脚本,一个是包含特定应用程序版本详细信息的计算机名,另一个是从计算机名列表中提取的单独用户名列表,因为用户名位于计算机名中,例如,计算机名为:Powershell 从两个单独的集合中创建一个报告,powershell,Powershell,我在PowerShell中遗漏了一些基本的东西 我有一个生成两个集合的脚本,一个是包含特定应用程序版本详细信息的计算机名,另一个是从计算机名列表中提取的单独用户名列表,因为用户名位于计算机名中,例如,计算机名为: XXXXXX02jbloggs 此计算机的所有者是jbloggs,jbloggs是一个有效的广告对象,其全名为joe blogs 脚本的最终目标是生成一个包含计算机名、所有者SamAccountName、全名和应用程序详细信息的报告,脚本将专门检查这些信息 比如说, 这一系列机器上有
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
}
为我提供计算机名、Adobe Reader xxx、版本和安装日期的列表$Results
根据用户ID为我获取全名列表$FullNames
- 在
中获取单个当前用户,而不是创建两个单独的foreachforeach($Computers in$Computers)
- 将计算属性添加到选择中,以将
包括在 $ResultFullName
$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}}
}