csv Powershell使用命令的新输出替换列数据

wi3ka0sx  于 2023-01-15  发布在  Shell
关注(0)|答案(1)|浏览(169)

我想我有一个基本的PowerShell问题,你们大多数人都知道如何回答。
当我从我的AD导出一个列表时,这是一个带有以下标题的csv列表:
CsDNSHostName、WindowsVersion、任意(在这种情况下,任意是指可能因用户操作而更改的内容)
所以现在我有我的CSV,我已经导出,然后我想保持这个CSV最新。在我的环境中,“任何”标题可能会经常更改,也可能会有新的计算机到列表中,旧的消失...
所以现在我需要一种方法来保持我的csv更新,而不必创建多个csv文件,我也不希望重复的csv内的条目,所以它。
这里是我认为可能会使用的代码,但我敢肯定我错了,因为我的知识是低到让这个正常运行,获取数据很容易,但使其可更新,而不是...

#Runs once and afterwards I use the csv that was created as Base for all other operations
Get-ADComputer -Filter * | export-csv "c:\mycsv.csv"

$impc = import-csv "c:\mycsv.csv"

$impc | Select CsName,@{Name="WindowsVersion";Expression={

       $data = invoke-command -computername $_.ComputerName -scriptblock {get-computerinfo}
       $data.WindowsVersion

 }},@{Name="ANY";Expression={

       $data = invoke-command -computername $_.ComputerName -scriptblock {get-computerinfo}
       $data.ANY

 }} | Export-CSV "C:\mycsv.csv"
pftdvrlh

pftdvrlh1#

不要多次运行带有Get-ComputerInfo的Invoke-Command
我会这样想:

$impc = Get-ADComputer -Filter * | ForEach {
    $data = invoke-command -computername $_.ComputerName -scriptblock {get-computerinfo}
    [PsCustomObject]@{
        CsName         = $_.CsName
        WindowsVersion = $data.WindowsVersion
        ANY            = $data.ANY
    }
}
$impc | Export-CSV "C:\mycsv.csv" -NoTypeInformation

相关问题