1

我正在使用Register-ScheduledJob在我执行脚本的后台作业中在 powershell 中注册作业。该脚本包含一些命令,例如 Get-Process 和 Write-Host 命令。和...

尽管每个命令都在结果中执行,但我看不到写入主机的输出(get-Process 没问题)

也许有人知道为什么?

4

2 回答 2

1

Write-Host 写入主机,这是脚本正在运行的应用程序(例如 PowerShell.exe),因此它会显式输出到屏幕,并且当您在非交互式环境中运行时不会执行任何操作。您永远不应该使用它来输出您想要收集的数据,仅用于轻量级调试或在交互式脚本中打印到屏幕上。

您通常应该将 write-output 用于要作为输出收集的数据。

虽然您也可以使用调试/警告/错误输出(这些由作业收集,但未显示在常规输出中)。

于 2012-09-28T00:02:20.720 回答
0

非常感谢你。写输出有帮助。

另外,我在最后几天发现的内容可能对其他人有帮助:如果您启动预定的后台作业并在此作业中启动 powershell 脚本,如下所示:

Register-ScheduledJob -Name1 temp -ScheduledJobOption $option -ScriptBlock {
D:\scprit.ps1
}

你的工作永远不会结束,因为完成脚本后 powershell 窗口仍然打开。因此,您必须在脚本块中添加退出:

Register-ScheduledJob -Name1 temp -ScheduledJobOption $option -ScriptBlock {
D:\scprit.ps1
Exit-PSSession
}
于 2012-09-28T21:25:46.803 回答