问题标签 [start-process]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
482 浏览

powershell - 确保 Start-Process 按顺序开始和结束

PowerShell 脚本具有以下内容

如何确保第一个 Start-Process 在第二个 Start-Process 开始之前启动并完成?

0 投票
1 回答
8013 浏览

powershell - PowerShell Start-Process -redirectStandardOutput 抛出:系统找不到指定的文件

在我正在执行的 PowerShell 窗口中:

并得到:

Start-Process : This command cannot be executed due to the error: The system cannot find the file specified. At line:1 char:14 + Start-Process <<<< XXXXX.exe -ArgumentList "some valid arguments here" -redirectStandardOutput "D:\\test1.txt" + CategoryInfo : InvalidOperation: (:) [Start-Process], InvalidOperationException + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand

如果我省略 -redirectStandardOutput 参数(确实如此),我已经检查了启动过程是否按预期工作。

test1.txt 是一个新文件,不尝试追加。

令人惊讶的是 D:\ 上的 test1.txt 文件是在我运行该行时创建的,它仍然是空的。

有谁知道这里发生了什么?谢谢。

编辑

我发现如果我运行:

它失败(如最初发布的那样)如果我运行:

它工作正常,但不会将控制台输出保存到文件中,如果我运行

它的工作原理与预期的差不多。那么为什么我在使用重定向时需要指定路径,但当我不使用时它运行愉快?

编辑 重述问题;关于当前目录中的脚本/exe 要求允许运行 ./ 前缀的要求似乎有些不一致。当我不重定向输出时, ./ 不是必需的。任何人都知道这是否是预期的行为?

0 投票
1 回答
2637 浏览

powershell - Powershell 启动进程权限被拒绝

谁能告诉我,如果我调用为什么会出现错误:

但如果我调用没有错误:

但我需要“-wait”还是有其他选择?

错误:

0 投票
2 回答
1427 浏览

powershell - teamcity powershell - 无法运行批处理文件

我花了相当多的时间来敲打这个。好人,请提供一点 StackOverflow 帮助!

场景:我们正在尝试通过 TeamCity Powershell 步骤运行位于 CI 服务器上的自定义 .bat 文件。

  • 当 powershell 脚本在本地机器上手动运行时,它会正确启动 .bat 文件。
  • 当 powershell 脚本通过 TeamCity 运行时,它成功地“看到”了 .bat 文件(通过在我重命名预期的 .bat 文件时接收到“找不到文件”响应来验证)
  • 但是,我们没有看到任何迹象表明 .bat 文件实际上已启动。

我们尝试过的:

  • 我们添加了“RedirectStandardOutput”和“RedirectStandardError”来尝试诊断,但是虽然创建了日志文件,但它返回为空白。
  • 我们已授予文件路径权限并尝试了两种不同的凭据,包括 TC 构建代理的凭据
  • 在某一时刻添加了“-wait”以查看我们是否需要“告诉”PS 等待 .bat 文件。

两个问题...

  • 是什么阻止我们运行这个 .bat 文件?
  • 我们如何诊断这样的问题?ATM 对我们来说是一个“黑匣子”。

TeamCity Powershell 设置:

  • Powershell 运行模式:1.0 版;位数 x64(也尝试过 x86)
  • 工作目录:尝试作为 .bat 文件的空白和特定文件路径(因此,'D:\folder\folder2\')
  • 脚本:源代码
  • 脚本执行:从外部文件执行 .ps1(也尝试使用“使用“-Command -”参数将脚本放入 PowerShell 标准输入”)
  • 添加 -NoProfile 参数(都尝试过)

Powershell脚本:

更新 1:如果我们删除“-Credential ($Cred)”部分,我们可以按预期从 TeamCity 启动 testbat.bat 文件。不知何故,问题一定出在“-Credential ($Cred)”参数上。有什么想法吗?

更新 2:如果我们将“-Credential ($Cred)”部分设置为构建代理用户的凭据,我们就可以从 TeamCity 启动 test.bat 文件。仅当我们将凭据设置为运行构建代理的用户以外的用户时,才会出现此问题。这似乎表明凭证语法很好。

更新 3:尝试在 PowerShell executionpolicy 设置为“RemoteSigned”和“Unrestricted”的情况下运行。问题仍然存在。

更新 4:通过“Set-PSSessionConfiguration”为 BuildAgent 用户和我们想要运行它的用户授予对 powershell 的完全权限。问题仍然存在。

0 投票
5 回答
10234 浏览

windows - 如何从提升的 PowerShell 控制台以非管理员身份运行进程?

也许有一种方法可以用我找不到的Start-Process cmdlet 来做到这一点?我在 StackOverflow 上找到的其他相关问答,例如thisthisthis都提供了使用自定义 C# 代码执行此操作的解决方案。我的问题是,在 PowerShell 中是否有任何直接的方法可以做到这一点?即,您在提升的 PS 控制台中,并希望以非管理员身份运行进程。

0 投票
0 回答
125 浏览

c# - 模拟用户进入远程机器

我想在我的网络中的计算机上启动用户交互进程。我知道那台机器的管理凭据。但是当我学会启动用户交互过程时,我需要获取在该机器上运行的父会话(session0)。我不能这样做,谁能帮忙。

我尝试使用 powershell commandlet 和其他方式启动进程。进程通过这些方式启动,但它渴望 CPU。

PS:我不想使用 PSexec 或类似的工具。

0 投票
1 回答
641 浏览

powershell - 忽略特定行的 powershell 脚本失败

我有一个定义的 powershell 脚本,$ErrorActionPreference = "Stop"
但我也有一个start-process调用,该调用针对一个进程,该进程在成功时返回非标准退出代码(1 而不是 0)。因此,即使启动过程正常,脚本也会失败。我试图-ErrorAction "Continue"在调用中附加参数,start-process但没有解决问题。

有问题的行如下所示:

我怎样才能防止启动过程使整个脚本失败。

0 投票
1 回答
26162 浏览

powershell - Powershell Start-Process:由于错误无法执行此命令:访问被拒绝

我正在尝试从具有给定凭据的 powershell 脚本运行启动进程。然而,该命令失败并出现以下错误:

这是完整的错误日志:

这是错误的 powershell 调用的样子:

如果我在执行脚本的机器上使用适当的凭据打开命令提示符,运行cmd /C效果会很好。如果它代表 start-process 在 powershell 脚本上,它会失败。

也许我应该说,当我使用目标凭据手动运行命令提示符时,我以管理员身份登录,而 powershell 看起来是在系统帐户下运行的。

看起来某些权限确实有问题...知道这里发生了什么吗?

编辑:从https://serverfault.com/questions/185813/which-ad-permission-is-required-to-allow-impersonation-of-an-account/193717#193717 中所说的
我检查了权限 ofr本地策略中的模拟 -> 用户权限分配。系统存在,为了完整起见,我还添加了计算机帐户。重新启动。但是没有运气,问题仍然存在!

0 投票
3 回答
6174 浏览

powershell - 与 Windows 服务环境中的凭据一起使用时的 powershell 启动进程退出代码 -1073741502

我在使用 powershell Start-Process 调用时遇到了一种奇怪的行为。

这是电话:

此调用始终返回退出代码 - 1073741502
快速搜索后,此退出代码似乎与程序无法加载所需的 dll(又名。STATUS_DLL_INIT_FAILED)时的一般错误有关。

当我在没有程序的情况下运行它时-Credential $credential,程序运行正常。

为了隔离问题,我some.exe在提示符中手动启动了我的目标凭据,它运行顺利。

所以问题似乎只来自 start-process cmdlet 有效启动进程的方式。

我为这个问题找到了一些潜在的解决方案,但我试图应用但没有运气:链接链接

你知道这里发生了什么吗?

编辑 1:
我在直接或通过 powershell 脚本启动时运行 proc mon 来监视程序活动。加载时似乎会出现问题kernelbase.dll

本地 procmon 转储(工作):

Powershell procmon(失败,请参阅线程退出和进程退出代码 - 1073741502):

编辑 2:
我应该提到 powershell 脚本是从服务运行的(它是竹服务代理)。我刚刚发现这个线程说:

Process.Start 在指定凭据时在内部调用 CreateProcessWithLogonW(CPLW)。不能从 Windows 服务环境(如 IIS WCF 服务)调用 CreateProcessWithLogonW。它只能从交互式进程(由通过 CTRL-ALT-DELETE 登录的用户启动的应用程序)调用。

我的猜测是 powershell start-process 调用正在使用CreateProcessWithLogonW...

编辑 3:
我的服务是使用自定义用户运行的(因为我无法从系统模拟),因此 read link。我测试确保启用了“允许服务与桌面交互”。HKLM\System\CurrentControlSet\Services\%myservice%因为它仅适用于非自定义帐户,所以我通过更改Type 键在注册表中手动设置它(如此和此处所述)。

0 投票
1 回答
521 浏览

powershell - 使用 $Variable 为 Start-Process 提交 -Filepath 参数

我正在使用 PowerShell 版本 3。我想解决一个奇怪的问题。我编写了一个 PowerShell 脚本,它读取配置 CSV 文件(带有应用程序路径和名称)并创建一个带有应用程序按钮的表单。当我尝试Start-Process FilePath使用变量提交参数时,它就不起作用了。当我回显变量时,一切都是正确的。也许这里有人知道出了什么问题,可以帮助我。我收到一个错误

我试图用另一个stackoverflow线程的解决方案来解决这个问题:

并尝试提交$ButtonCommand带有和不带有'"'的