我在PowerShell中遗漏了一些基本内容.
我有一个生成两个集合的脚本,计算机名称包含特定应用程序的版本详细信息,以及从计算机名称列表中获取的单独用户名列表,因为用户名在计算机名称中,例如计算机名称为:
XXXXXX02jbloggs
Run Code Online (Sandbox Code Playgroud)
此计算机的所有者是jbloggs,jbloggs是一个有效的AD对象,其全名为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
}
Run Code Online (Sandbox Code Playgroud)
$Results 给我一个计算机名称列表,Adobe Reader xxx,版本和安装日期.$FullNames 根据用户ID获取全名列表我不知道如何构造脚本,因此它生成全名,用户名,计算机名,应用程序名称和安装日期.
这就是为什么我说我在PowerShell中缺少一些基本的东西,我一直在寻找自定义对象,嵌套循环和其他想法,但无济于事.真的在寻找关于这类问题的一些建议,因为我需要完成几个类似的例子.任何建议将不胜感激.
小智 5
foreach($computer 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}}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |