我正在尝试编写一个Powershell脚本,用于处理w32tm.exe \ monitor的输出并将所有内容输出到文本文件中。我正在尝试以下代码,但是因为我能够创建文本文件,所以有些错误,但是没有任何内容写入其中:
#Take output of w32tm.exe and output into a plain text file
$file = "C:\Documents and Settings\a411882\My Documents\Scripts\timeScript.txt"
$executable = "w32tm.exe /monitor"
invoke-expression $executable | out-file -filepath $file
我在这里做错了什么?我是Powershell的新手,所以任何建议都会非常感激!
编辑: 我可以在运行时将所有数据显示在控制台上,但是我希望将数据写在文本文件中。
编辑2: 我设法让所有东西最终输出。我想尝试避免使用>运算符写出文本文件,希望学习更多关于out-file cmdlet但是做一个简单的invoke-expression $ executable> $ file设法完成工作。我仍然不明白为什么cmdlet无法正常工作。
答案 0 :(得分:1)
也许Invoke-Expression
没有正确地将输出发送到stdout?我不希望这样,但是发生了一些奇怪的事情。尝试单独运行w32tm.exe
:
$file = "C:\Documents and Settings\a411882\My Documents\Scripts\timeScript.txt"
w32tm.exe /monitor | Out-File -FilePath $file
答案 1 :(得分:0)
您可以使用Start-Process
,它还可以重定向错误输出:
Start-Process w32tm.exe -ArgumentList "/monitor" -Wait -RedirectStandardOutput "output.txt" -RedirectStandardError "error.txt"