首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"Start-Process -NoNewWindow“在Start-作业中?

"Start-Process -NoNewWindow“在Start-作业中?
EN

Stack Overflow用户
提问于 2014-07-11 03:12:21
回答 1查看 4.5K关注 0票数 8

我在Start-作业中使用Start-Process有问题,特别是在使用-NoNewWindow时。例如,这个测试代码:

代码语言:javascript
复制
Start-Job -scriptblock {
    Start-Process cmd -NoNewWindow -Wait -ArgumentList '/c', 'echo' | out-null
    Start-Process cmd # We'll never get here
}

get-job | wait-job | receive-job
get-job | remove-job

返回以下错误,显然google没有听说过该错误:

接收-作业:后台进程中有一个错误处理数据。报告的错误:无法处理节点类型为"Text“的元素。只支持元素和EndElement节点类型。

如果我删除了-NoNewWindow,一切都很好。我是在做傻事,还是没有办法开始包含Start-Process -NoNewWindow的作业?有什么好的选择吗?

EN

回答 1

Stack Overflow用户

发布于 2017-10-20 23:41:42

有点晚了,但是对于仍然对这个特定的错误消息有问题的人来说,这个例子的一个解决方法是使用-WindowStyle Hidden而不是-NoNewWindow,我发现-NoNewWindow在很多时候似乎被忽略了,并导致了它自身的问题。

但是,对于这个似乎来自于在各种可执行文件中使用Start-Process的特定错误,我发现似乎始终有效的解决方案是通过重定向输出来实现的,因为返回的输出似乎会导致问题。不幸的是,这确实会导致写入一个临时文件并清理它。

作为一个例子;

代码语言:javascript
复制
Start-Job -ScriptBlock {
    # Create a temporary file to redirect output to.
    [String]$temporaryFilePath = [System.IO.Path]::GetTempFileName()

    [HashTable]$parmeters = @{
        'FilePath' = 'cmd';
        'Wait' = $true;
        'ArgumentList' = @('/c', 'echo');
        'RedirectStandardOutput' = $temporaryFilePath;
    }
    Start-Process @parmeters | Out-Null

    Start-Process -FilePath cmd

    # Clean up the temporary file.
    Remove-Item -Path $temporaryFilePath
}

Get-Job | Wait-Job | Receive-Job
Get-Job | Remove-Job

希望这能帮上忙。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24689505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档