我知道对大多数人来说这很简单,但我不知道如何实现。
cd c:\
$item = '123'
Rename-Item $item -NewName '2019' -Verbose
Write-Verbose "Success" -Verbose >> c:\temp\test.txt
当我打开test.txt时,它是空的。您如何将在此处看到的详细消息记录到.txt中?
答案 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。