Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"} | Out-File -path $env:temp\AppXPackage.log
执行我希望它执行的任务。但是,日志文件为空。
我希望日志文件包含这两个错误,并记录各个操作。
答案 0 :(得分:0)
我不熟悉那个特定的cmdlet,你可能会尝试将其他输出流(所以不是stdout)重定向到日志文件,它可能会起作用。在最糟糕的情况下,你可以做这样的事情:
Foreach-Object {
try {
Add-AppxPackage ... -ErrorAction Stop
"$_ done" > success.log
} catch {
$_ > errors.log
}
}
答案 1 :(得分:0)
Add-AppxPackage
不返回任何内容,也不支持-PassThru
参数。但是,您可以将$_
对象从foreach
块推送到管道:
Get-AppXPackage -AllUsers |
Foreach {Add-AppxPackage -DisableDevelopmentMode -Register
"$($_.InstallLocation)\AppXManifest.xml"; $_ } |
Out-File -path $env:temp\AppXPackage.log
答案 2 :(得分:0)
正如提到的其他2个答案,该cmdlet似乎没有给出任何输出。这使您无法使用manual logging
或redirection
。我只是想扩展其他两个,给你几个选项。
对于重定向,您可以执行以下操作:
.\my_script *>> myfile.log #appen all streams (output and errors) to a file
.\my_script >> output.log 2>> errors.log #send output to one file and error stream to another
对于正常日志记录,请查看$error
,其中包含会话中的所有错误。您可以使用$error.clear()
启动脚本,手动记录所需的输出,因为cmdlet没有输出,然后以$error | out-file errors.log
结束