如果我有这个:
Get-ChildItem -Path $BACKUP_REG_PATH >> $TOT_LOG_FILE
我会在我的日志文件中得到一个很好的列表,如下所示:
Directory: C:\WS\BACKUP\xxxx-Reg
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2016-05-17 11:04 494018 xxxxxx_REGISTRY_EVENTLOG__2016-05-17__11_04_38.reg
-a--- 2016-05-17 11:08 494018 xxxxxx_REGISTRY_EVENTLOG__2016-05-17__11_08_59.reg
-a--- 2016-05-17 11:10 494018 xxxxx_REGISTRY_EVENTLOG__2016-05-17__11_10_31.reg
我想为NLog做这个,但我不知道如何获得如上所述的好名单。
如果我这样做:
$regtxt=Get-ChildItem -Path $BACKUP_REG_PATH
$LOGGER.Trace("$regtxt");
我只使用Name列在同一行上获得一个长列表。
任何想法如何解决这个问题?
答案 0 :(得分:1)
我不知道NLog,但Trace
方法可能会在一行中输出跟踪。您可以使用Foreach-Object cmdlet迭代每个项目并编写跟踪:
Get-ChildItem -Path $BACKUP_REG_PATH | Foreach-Object {
$LOGGER.Trace($_);
}
注意:这不会输出名称列,您可能需要自己跟踪。
要解决此问题,您可以将输出传递给Out-String cmdlet,它将为您提供单个字符串。然后,您必须将字符串拆分为[System.Environment]::NewLine
以获取一个数组来迭代它:
((Get-ChildItem | select -first 4 | Out-String) -split [System.Environment]::NewLine) |
ForEach-Object {
$LOGGER.Trace($_);
}