gpt4 book ai didi

powershell - 如何从另一个 Powershell 输出添加信息

转载 作者:行者123 更新时间:2023-12-05 03:32:44 24 4
gpt4 key购买 nike

我需要一些帮助。

例如,我需要从 AD 计算机获取一些信息。我使用这样的东西:

$computers=Get-ADComputer -Filter {enabled -eq "true"} -Properties name,IPv4Address,OperatingSystem | Select-Object name,created,IPv4Address,OperatingSystem

然后,我用这台电脑做了一些事情:

Invoke-Command -computername $computers.name -ScriptBlock {get-hotfix -Description security*} -ErrorAction SilentlyContinue| select-object pscomputername,hotfixid

但我不明白,如何合并来自 AD 的信息和我的输出。例如,我需要像这样取出字符串或文件:

Computername(来自 AD)、OperatingSystem(来自 AD)、hotfixid(来 self 的调用命令)

谢谢

最佳答案

我个人会做这样的事情,使用 Group-Object 得到 hashtable 用于查找,其中 Keys 是计算机的 Name ( PSComputerName ) 属性。这样做会缩短脚本的执行时间。

有一点需要注意,我建议您不要使用脚本 block { ... }-Filter 上ActiveDirectory 模块 Cmdlet 的参数。参见 this作为可能发生的事情的示例。

$params = @{
Filter = "Enabled -eq '$true'"
Properties = "IPv4Address", "OperatingSystem"
}
$computers = Get-ADComputer @params

$map = Invoke-Command $computers.Name -ScriptBlock {
Get-Hotfix -Description security*
} -ErrorAction SilentlyContinue |
Group-Object PSComputerName -AsHashTable -AsString

$outObject = {
param($computer, $id)

[pscustomobject]@{
Name = $computer.Name
IPv4Address = $computer.IPv4Address
OperatingSystem = $computer.OperatingSystem
HotFixID = $id
}
}

foreach($computer in $computers)
{
if(-not ($hotfix = $map[$computer.Name]))
{
& $outObject -computer $computer -id $null
continue
}

foreach($id in $hotfix.HotFixID)
{
& $outObject -computer $computer -id $id
}
}

请注意, Get-HotFix 有一个 [-ComputerName <String[]>]参数,未经测试,但在本例中为 Invoke-Command可能不需要。

关于powershell - 如何从另一个 Powershell 输出添加信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70413101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com