我希望根据$ debug的布尔值将文件和文件夹属性发送到csv文件或屏幕。我试图通过在以下管道的末尾包含三元运算符来实现此目的:
Get-ChildItem $directory -Recurse -File |
Select-Object @{name='Folder_Name';expression={$($_.directoryname)}},
@{name='File_type';expression={$($_.extension)}},
@{name='File_name';expression={$($_.name)}},
@{name='File_size_bytes';expression={$($_.length)}},
@{name='Creation_datetime';expression={$($_.creationtime)}},
@{name='Last_update_datetime';expression={$($_.lastwritetime)}},
@{name='Last_read_datetime';expression={$($_.lastaccesstime)}} |
(&{if ($debug) {Write-Host} else {Export-Csv -path $outpath -NoTypeInformation -force -Delimiter ';'}})
这是一个不好的方法,推荐哪种方法?
答案 0 :(得分:1)
这将完成您想要的操作。但是,这是处理问题的一种非常奇怪的方法。它很慢,因为它会为每个项目写入文件,或者为每个项目都进行屏幕写入(如果启用)。保存到$ Var,然后写入文件和/或屏幕将 快得多 。 [咧嘴]
此代码将您的最后一行扩展为使用ForEach-Object
进行的if
调用,以测试输出目标。它还向-ErrorAction
调用中添加了Get-ChildItem
,以处理“无法访问的文件”错误。
它还删除了$()
行中不需要的expression =
。
$directory = $env:TEMP
$outpath = "$env:TEMP\GustavRasmussen.csv"
# uncomment the 2nd line to test the negative
$ToScreen = $True
#$ToScreen = $False
Get-ChildItem $directory -Recurse -File -ErrorAction SilentlyContinue |
Select-Object @{name='Folder_Name';expression={$_.directoryname}},
@{name='File_type';expression={$_.extension}},
@{name='File_name';expression={$_.name}},
@{name='File_size_bytes';expression={$_.length}},
@{name='Creation_datetime';expression={$_.creationtime}},
@{name='Last_update_datetime';expression={$_.lastwritetime}},
@{name='Last_read_datetime';expression={$_.lastaccesstime}} |
ForEach-Object {
if ($ToScreen)
{
$_
}
else
{
Export-Csv -InputObject $_ -path $outpath -NoTypeInformation -force -Delimiter ';' -Append
}
}
CSV的前三行...
"Folder_Name";"File_type";"File_name";"File_size_bytes";"Creation_datetime";"Last_update_datetime";"Last_read_datetime"
"C:\Temp";".tmp";"DELCD3A.tmp";"861968";"2019-07-13 11:43:18 PM";"2019-07-13 11:42:36 PM";"2019-07-13 11:43:18 PM"
"C:\Temp";".txt";"FXSAPIDebugLogFile.txt";"0";"2015-11-03 6:54:02 PM";"2015-11-03 6:54:02 PM";"2015-11-03 6:54:02 PM"
"C:\Temp";".log";"Genre-List_2019-10-01.log";"178";"2019-10-01 12:33:47 PM";"2019-10-01 12:33:47 PM";"2019-10-01 12:33:47 PM"
屏幕输出的前三项...
Folder_Name : C:\Temp
File_type : .tmp
File_name : DELCD3A.tmp
File_size_bytes : 861968
Creation_datetime : 2019-07-13 11:43:18 PM
Last_update_datetime : 2019-07-13 11:42:36 PM
Last_read_datetime : 2019-07-13 11:43:18 PM
Folder_Name : C:\Temp
File_type : .txt
File_name : FXSAPIDebugLogFile.txt
File_size_bytes : 0
Creation_datetime : 2015-11-03 6:54:02 PM
Last_update_datetime : 2015-11-03 6:54:02 PM
Last_read_datetime : 2015-11-03 6:54:02 PM
Folder_Name : C:\Temp
File_type : .log
File_name : Genre-List_2019-10-01.log
File_size_bytes : 178
Creation_datetime : 2019-10-01 12:33:47 PM
Last_update_datetime : 2019-10-01 12:33:47 PM
Last_read_datetime : 2019-10-01 12:33:47 PM