2016-12-07 8 views
0

できるだけ良い問題として説明します。 現在、自分のドメインにコンピュータの製造番号とシリアル番号の情報を取得しようとしています。CSVインポートを行単位で使用し、CSVとして再度エクスポートする

$computername = import-csv "C:\Daten\pc.csv" | select -ExpandProperty Computername 


ForEach ($computer in $computername) 
{ 
$Monitors = Get-WmiObject -ComputerName $computer -Namespace root\wmi -Class wmiMonitorID 

$i = 1 
$obj = new-object -type psobject 
Foreach ($Monitor in $Monitors) 
    { 
    $obj | add-member -Name ("Monitor$i" +" Modell") -Value ([char[]]$Monitor.UserFriendlyName -join '') -MemberType NoteProperty -Force 
    $obj | add-member -Name ("Monitor$i" +" Serial") -Value ([char[]]$Monitor.SerialNumberID -join '') -MemberType NoteProperty -Force 
    $obj | add-member -Name ("MAC-Addresse") -value $mac -MemberType NoteProperty -Force 
    $obj | add-member -Name ("Seriennummer PC") -value $seriennummer_pc -MemberType NoteProperty -Force 
    $obj | add-member -Name ("Modell PC") -value $modell_pc -MemberType NoteProperty -Force 
    $obj | Add-Member -Name ("Computername") -value $computer -MemberType NoteProperty -Force 
    $i++ 
    $obj | export-csv -path C:\Daten\test.csv 
}} 

私の問題は今、エクスポートが動作することであるが、唯一の私のインポート、CSVでの最後の行のために:ここで

は、私は現在、これを使用しています私のコードのギャップです。私はすでにGet-Contentコマンドで試してみました。ここで

は、エクスポートされたCSV-です:

#TYPE System.Management.Automation.PSCustomObject 
"Monitor1 Modell","Monitor1 Serial","Monitor2 Modell","Monitor2 Serial","MAC-Addresse","Seriennummer PC","Modell PC","Computername" 
B22W-7 LED,"XYZ123459","B22W-7 LED","XYZ123457","00:00:00:00:00:00","XYZ123456","LIFE1337","COMPUTER2" 

あなたはそれで私を助けることができれば素晴らしいだろう。事前に

THANKS、私が見 ロビン

答えて

0

の問題は... は、forループ内に新しいオブジェクトを作成します。 forループの外でCSVにエクスポートします。 すべての$ objを配列に入れてエクスポートします。

解決策:あなたがより簡単にそれを解決することができ、次のテストコードで

$computername = import-csv "C:\Daten\pc.csv" | select -ExpandProperty Computername 

$items = @() 
ForEach ($computer in $computername) 
{ 
    $Monitors = Get-WmiObject -ComputerName $computer -Namespace root\wmi -Class wmiMonitorID 

    $i = 1 
    Foreach ($Monitor in $Monitors) 
    { 
     $obj = new-object -type psobject 
     $obj | add-member -Name ("Monitor$i" +" Modell") -Value ([char[]]$Monitor.UserFriendlyName -join '') -MemberType NoteProperty -Force 
     $obj | add-member -Name ("Monitor$i" +" Serial") -Value ([char[]]$Monitor.SerialNumberID -join '') -MemberType NoteProperty -Force 
     $obj | add-member -Name ("MAC-Addresse") -value $mac -MemberType NoteProperty -Force 
     $obj | add-member -Name ("Seriennummer PC") -value $seriennummer_pc -MemberType NoteProperty -Force 
     $obj | add-member -Name ("Modell PC") -value $modell_pc -MemberType NoteProperty -Force 
     $obj | Add-Member -Name ("Computername") -value $computer -MemberType NoteProperty -Force 
     $i++ 
     $items += $obj 
    } 
} 

$items | export-csv -path C:\Daten\test.csv 
+0

私が書き換えられています

は、私は今、一つだけモニターが各コンピュータから示されているが、少なくとも2つはここにすべてのコンピュータに接続されている問題...コードで

見てくださいを持っていますあなたのソリューションのコード。なぜそれが望みどおりに動作しないのか見てみることができますか?コメントを見てください。前もって感謝します!! – Robin

0

import-csv "C:\Daten\pc.csv" ` 
| select -ExpandProperty Computername ` 
| ForEach-Object {Get-WmiObject -ComputerName $_ -Namespace root\wmi -Class wmiMonitorID ` 
| Select-Object @{Name = "Monitor Model"; Expression = {[char[]]$_.UserFriendlyName -join ''}}, 
       @{Name = "Monitor Serial"; Expression = {[char[]]$_.SerialNumberID -join ''}} } ` 
| Export-Csv -Path C:\Daten\test.csv 
0

私はあなたが-Appendパラメータを使用して問題を解決することができると思います。
だから、輸出は次のようになります:

$obj | export-csv -path C:\Daten\test.csv -Append 

forループの外に輸出を移動する必要はありませんこの方法です。

0

これまでのおかげで、ありがとうございました。

私は2つのCSVに出力を分けました。それは私の方が簡単です。

$items = @() 
ForEach ($computer in $computername) 
{ 
    $Monitors = Get-WmiObject -ComputerName $computer -Namespace root\wmi -Class wmiMonitorID 
$i = 1 
Foreach ($Monitor in $Monitors) 
{ 
    $obj = new-object -type psobject 
    $obj | Add-Member -Name ("Computername") -value $computer -MemberType NoteProperty -Force 
    $obj | add-member -Name ("Monitor$i" +" Modell") -Value ([char[]]$Monitor.UserFriendlyName -join '') -MemberType NoteProperty -Force 
    $obj | add-member -Name ("Monitor$i" +" Serial") -Value ([char[]]$Monitor.SerialNumberID -join '') -MemberType NoteProperty -Force 
    $i++ 
    $items += $obj 
} 
    $obj2 = New-Object -type psobject 
    $obj2 | Add-Member -Name ("Computername") -value $computer -MemberType NoteProperty -Force 
    $obj2 | add-member -Name ("MAC-Addresse") -value $mac -MemberType NoteProperty -Force 
    $obj2 | add-member -Name ("Seriennummer PC") -value $seriennummer_pc -MemberType NoteProperty -Force 
    $obj2 | add-member -Name ("Modell PC") -value $modell_pc -MemberType NoteProperty -Force 
    $obj2 | add-member -Name ("IP Addresse") -value $ipv4 -MemberType NoteProperty -Force 
} 

$items | export-csv -path C:\Daten\Inventur\Bildschirm.csv -Append 
$obj2 | export-csv -path C:\Daten\Inventur\Computer.csv -Append 
関連する問題