详细文本日志输出到.txt

时间:2019-05-15 14:57:16

标签: powershell

我知道对大多数人来说这很简单,但我不知道如何实现。

cd c:\
$item = '123'
Rename-Item $item -NewName '2019' -Verbose
Write-Verbose "Success" -Verbose >> c:\temp\test.txt

当我打开test.txt时,它是空的。您如何将在此处看到的详细消息记录到.txt中?

enter image description here

1 个答案:

答案 0 :(得分:0)

默认情况下(>)输出成功流(1)。您可以通过在>前面加上相应的流编号来访问特定的流。您还可以使用语法(n>&1 > file.txt)将特定的流重定向到成功流,其中n是流号。可以像错误和冗长(6>&1 4>&1 > file.txt)一样直接重定向多个流。对于所有流,都可以使用通配符代替n*>)。

另一种方法是只使用try-catch-finally块来捕获错误,然后根据错误条件执行操作。

这是详细的流重定向(4>>)和所有带错误检查的流(*>>)的基本示例。如果先前运行的命令成功,则$?返回true。

示例1:Rename-Item出错。

rename-item verb1.txt verb2.txt -verbose *>> verbose.txt
if ($?) { 
   write-verbose "Rename-Item Was Successful" -Verbose 4>> verbose.txt }
else { 
   Write-Verbose "Rename-Item Failed" -Verbose 4>> verbose.txt }
Get-Content verbose.txt
  

rename-item:无法重命名,因为'verb1.txt'上的项没有   存在。在第1行:char:1   +重命名项目verb1.txt verb2.txt -verbose * >> verbose.txt   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~       + CategoryInfo:InvalidOperation :( :) [Rename-Item],PSInvalidOperationException       + FullyQualifiedErrorId:InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand

     

重命名项失败

示例2:Rename-Item没有错误。

rename-item verb2.txt verb1.txt -verbose *>> verbose.txt
if ($?) { 
   write-verbose "Rename-Item Was Successful" -Verbose 4>> verbose.txt }
else { 
   Write-Verbose "Rename-Item Failed" -Verbose 4>> verbose.txt }

Get-Content verbose.txt
  

在目标上执行“重命名文件”操作   “项目:verb2.txt目标:verb1.txt”。
  重命名项目成功

有关更多详细信息,请参见About_Redirection