[英]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.