我面临的问题是将在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
答案 0 :(得分:0)
要创建文件,您可以执行以下操作:({$outcome
是包含该函数结果的变量)
$outcome | Set-Content 'file.txt'`
或
$outcome > 'file.txt'
如果已经有文件,并且您想附加:
$outcome | Add-Content 'file.txt'
答案 1 :(得分:0)
about_redirection有很多信息。
您遇到的问题之一是您试图重定向Write-Host
。根据您的PowerShell版本,您可能有更多或更少的可用选项。在版本5之前,您必须在适用的地方使用*>
或Tee-Object
之类的东西。对于版本5,有一些新选项可用:
从Windows PowerShell 5.0开始,
Write-Host
是Write-Information
的包装器,这使您可以使用Write-Host
将输出发送到信息流。这样可以捕获或抑制使用Write-Host
写入的数据,同时保持向后兼容性。
$InformationPreference
首选项变量和InformationAction
公用参数不影响Write-Host
消息。该规则的例外是-InformationAction Ignore
,它有效地抑制了Write-Host
的输出。 (请参阅“示例5”)
一个简单的选择是使用Write-Output
而不是Write-Host
。您将无法(轻松)为其着色,但是在当前示例中,您不需要着色。另外,根据您的用例,您可以考虑使用也可能可用的Start-Transcript
。