NLog文件中的Get-ChildItem -Path

时间:2016-05-18 07:00:35

标签: powershell nlog

如果我有这个:

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列在同一行上获得一个长列表。

任何想法如何解决这个问题?

1 个答案:

答案 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($_);
    }