【问题标题】:Not receiving results from PowerShell job未收到 PowerShell 作业的结果
【发布时间】:2013-08-14 07:56:31
【问题描述】:

我正在尝试 PowerShell 中的作业,但我无法收到结果。这是 shell 的一些输出。

Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.

PS C:\Users\Administrator> dir


    Directory: C:\Users\Administrator


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d-r--         6/18/2013  11:52 AM            Contacts
d-r--         6/20/2013   1:00 PM            Desktop
d-r--         6/18/2013  11:52 AM            Documents
d-r--         6/18/2013  11:52 AM            Downloads
d-r--         6/18/2013  11:52 AM            Favorites
d-r--         6/18/2013  11:52 AM            Links
d-r--         6/18/2013  11:52 AM            Music
d-r--         6/18/2013  11:52 AM            Pictures
d-r--         6/18/2013  11:52 AM            Saved Games
d-r--         6/18/2013  11:52 AM            Searches
d-r--         6/18/2013  11:52 AM            Videos
-a---         6/20/2013  12:57 PM      13404 services.html


PS C:\Users\Administrator> Start-Job -ScriptBlock { dir }

Id              Name            State      HasMoreData     Location             Command
--              ----            -----      -----------     --------             -------
1               Job1            Running    True            localhost             dir


PS C:\Users\Administrator> get-job

Id              Name            State      HasMoreData     Location             Command
--              ----            -----      -----------     --------             -------
1               Job1            Completed  False           localhost             dir


PS C:\Users\Administrator> Receive-Job -id 1
PS C:\Users\Administrator>

上面的输出来自我构建并升级到域控制器的库存 Win2008 R2 服务器。它是域中唯一的计算机,并且不与任何其他计算机关联。

当我在其他计算机上运行这些命令时,接收结果没有问题。什么会导致这项工作不产生输出?我应该去哪里调试这个问题?我查看了事件日志,没有发现任何问题。

编辑:感谢大家的帮助,但我会考虑解决这个问题。我相信在构建服务器或安装补丁期间某些东西被破坏了,因为没有其他计算机表现出这种行为。我已经迁移了数据并重建了服务器,它工作正常。

【问题讨论】:

  • 您是否尝试将作业转储到文本文件?

标签: powershell


【解决方案1】:

Maybe 您正在搜索的目录在这台计算机上恰好是空的,但在其他计算机上不是。您可以尝试在作业中为 dir/gci 提供 -path 参数:

Start-Job -ScriptBlock { dir -path c:\folderThatIsForSureNotEmpty }

【讨论】:

    【解决方案2】:

    Start-Job 不会在当前目录中启动作业。它启动一个新的 PowerShell 进程,并为该作业使用不同的目录。正如另一个答案所暗示的那样,您的服务器上的这个目录可能是空的,因此没有返回任何内容。如果您只是在 Start-Job 脚本块中编写一些输出会发生什么?有输出吗?

    Start-Job { Write-Host "In ur job." ; Get-Location ; dir } | Wait-Job | Receive-Jo
    

    【讨论】:

    • 请再次阅读我的帖子。你会在底部看到我已经在运行 Receive-Job 并且没有收到任何输出。
    • 糟糕。我想知道为什么答案看起来如此明显。我已经用更多的调试建议更新了我的答案。
    猜你喜欢
    • 2012-08-18
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多