1

我正在尝试为工作编写一个 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 上学到更多知识,但是做一个简单的调用表达式 $executable > $file 设法完成工作。我仍然不明白为什么 cmdlet 不能正常工作。

4

2 回答 2

1

也许Invoke-Expression没有正确地将输出发送到标准输出?我没想到,但奇怪的事情发生了。尝试w32tm.exe自己运行:

$file = "C:\Documents and Settings\a411882\My Documents\Scripts\timeScript.txt"
w32tm.exe /monitor | Out-File -FilePath $file
于 2012-06-12T18:53:19.920 回答
0

您可以使用Start-Processwhich 还允许您重定向错误输出:

Start-Process w32tm.exe -ArgumentList "/monitor" -Wait -RedirectStandardOutput "output.txt" -RedirectStandardError "error.txt"
于 2019-09-04T08:33:55.637 回答