簡體   English   中英

將循環導出到CSV-PowerShell

[英]Export Loops to CSV - PowerShell

我有一個腳本,該腳本從兩個目錄獲取日程表的屬性,並將輸出寫入主機。 我想將此輸出捕獲到csv中。 到目前為止,腳本已將所有屬性正確寫入主機,但是csv僅具有標頭,即“名稱”和“路徑”。

這是我所擁有的:

$results = @()
$JobObjects = $SchedulerObject.Search("/TradeSupport/Objects/Schedules/","*",65535,"*",$true);
foreach($JobObject in $JobObjects){
$Schedules = $JobObject.getabatobject();
foreach ($Schedule in $Schedules){
write-host("Name :" + $Schedule.Name)
write-host("Path :" + $Schedule.Path)

    $details = @{
            Name = $ScheduleObjects.Name
            Path = $ScheduleObjects.FullPath
            }}}

$JobObjects2 = $SchedulerObject.Search("/Operations/Objects/Schedules/","*",65535,"*",$true);
foreach($JobObject2 in $JobObjects2){
$Schedules2 = $JobObject2.getabatobject();
foreach ($Schedule2 in $Schedules2){
write-host("Name :" + $Schedule2.Name)
write-host("Path :" + $Schedule2.Path)


$details = @{
            Name = $ScheduleObjects2.Name
            Path = $ScheduleObjects2.FullPath
        }}  
    }
    $results += New-Object PSObject -Property $details


$results | select-object -property Name,Path | export-csv -Path \\ch0-craab-01\c$\Support\AB_Reports\Objects_Report.csv -NoTypeInformation 

我究竟做錯了什么?

$ Results放在Foreach循環內而不在外面

OP說這不起作用,我再次看了看腳本。

OP用於保存到$ results的變量是唯一的,不包含任何信息。

正確的變量是

$Schedule.Name
$Schedule.Name

但是你在用

$ScheduleObjects.Name
$ScheduleObjects.FullPath

下面的腳本現在應該可以工作

$results = @()
$JobObjects = $SchedulerObject.Search("/TradeSupport/Objects/Schedules/","*",65535,"*",$true);
foreach($JobObject in $JobObjects){
    $Schedules = $JobObject.getabatobject();
    foreach ($Schedule in $Schedules){
        write-host("Name :" + $Schedule.Name)
        write-host("Path :" + $Schedule.Path)
        $details = @{
            Name = $Schedule.Name
            Path = $Schedule.Path
        }
        $results += New-Object PSObject -Property $details
    }
}

$JobObjects2 = $SchedulerObject.Search("/Operations/Objects/Schedules/","*",65535,"*",$true);
foreach($JobObject2 in $JobObjects2){
    $Schedules2 = $JobObject2.getabatobject();
    foreach ($Schedule2 in $Schedules2){
        write-host("Name :" + $Schedule2.Name)
        write-host("Path :" + $Schedule2.Path)
        $details = @{
            Name = $Schedule2.Name
            Path = $Schedule2.Path
        }
        $results += New-Object PSObject -Property $details
    }  
}    
$results | select-object -property Name,Path | export-csv -Path \\ch0-craab-01\c$\Support\AB_Reports\Objects_Report.csv -NoTypeInformation

正確縮進代碼以使其與循環對齊時,更容易發現出錯的地方:

$results = @()
$JobObjects = $SchedulerObject.Search("/TradeSupport/Objects/Schedules/","*",65535,"*",$true);
foreach($JobObject in $JobObjects) {
    $Schedules = $JobObject.getabatobject();
    foreach ($Schedule in $Schedules){
        write-host("Name :" + $Schedule.Name)
        write-host("Path :" + $Schedule.Path)

        $details = @{
            Name = $ScheduleObjects.Name
            Path = $ScheduleObjects.FullPath
        }
    }
}

$JobObjects2 = $SchedulerObject.Search("/Operations/Objects/Schedules/","*",65535,"*",$true);
foreach($JobObject2 in $JobObjects2) {
    $Schedules2 = $JobObject2.getabatobject();
    foreach ($Schedule2 in $Schedules2) {
        write-host("Name :" + $Schedule2.Name)
        write-host("Path :" + $Schedule2.Path) 

        $details = @{
            Name = $ScheduleObjects2.Name
            Path = $ScheduleObjects2.FullPath
        }
    }  
}
$results += New-Object PSObject -Property $details


$results | select-object -property Name,Path | export-csv -Path \\ch0-craab-01\c$\Support\AB_Reports\Objects_Report.csv -NoTypeInformation

現在,您可以更輕松地看到,您僅在循環使用$details變量。 您希望在每次迭代時將該項目追加到$results數組上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM