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

时间:2018-06-05 21:53:35

标签: powershell csv

我想我有一个基本的PowerShell问题,你们大多数人都知道这个问题......

因此,当我从我的AD导出列表时,这是一个带有以下标题的csv列表:

CsDNSHostName,WindowsVersion,Any(在这种情况下,由于用户操作,任何内容都可能发生变化)

所以现在我已经导出了我的CSV,然后我想保持这个csv uptodate。 在我的环境中," ANY"标题可能会经常更改,也可能会有新计算机出现在列表中,旧计算机会消失...

所以现在我需要一种方法来保持我的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"

1 个答案:

答案 0 :(得分:1)

要多次使用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