Powershell-Workflow中函数调用的记录问题

时间:2019-02-20 09:53:12

标签: powershell powershell-workflow

我面临的问题是将在Powershell工作流程中调用的函数的输出记录到日志文件中。

尝试使用Out-File,但不应将其用于记录特定的函数调用。

任何对此的帮助都会很棒。预先感谢。

随附的是有关该问题的示例脚本:

function test1{
    param (
    [String] $FileName)
    Write-Host "$FileName test1"
}

WorkFlow Sample { 
    $Files = Get-ChildItem 'C:\Users\Downloads\testDir' 
    Foreach -parallel ( $File in $Files ) {
        test1($File) #This function output should be logged
    }  
}

Sample

2 个答案:

答案 0 :(得分:0)

要创建文件,您可以执行以下操作:({$outcome是包含该函数结果的变量)

$outcome | Set-Content 'file.txt'`

$outcome > 'file.txt'

如果已经有文件,并且您想附加:

$outcome | Add-Content 'file.txt'

答案 1 :(得分:0)

Microsoft文档上的

about_redirection有很多信息。

您遇到的问题之一是您试图重定向Write-Host。根据您的PowerShell版本,您可能有更多或更少的可用选项。在版本5之前,您必须在适用的地方使用*>Tee-Object之类的东西。对于版本5,有一些新选项可用:

  

从Windows PowerShell 5.0开始,Write-HostWrite-Information的包装器,这使您可以使用Write-Host将输出发送到信息流。这样可以捕获或抑制使用Write-Host写入的数据,同时保持向后兼容性。

     

$InformationPreference首选项变量和InformationAction公用参数不影响Write-Host消息。该规则的例外是-InformationAction Ignore,它有效地抑制了Write-Host的输出。 (请参阅“示例5”)

一个简单的选择是使用Write-Output而不是Write-Host。您将无法(轻松)为其着色,但是在当前示例中,您不需要着色。另外,根据您的用例,您可以考虑使用也可能可用的Start-Transcript