问题标签 [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.
powershell - 确保 Start-Process 按顺序开始和结束
PowerShell 脚本具有以下内容
如何确保第一个 Start-Process 在第二个 Start-Process 开始之前启动并完成?
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 要求允许运行 ./ 前缀的要求似乎有些不一致。当我不重定向输出时, ./ 不是必需的。任何人都知道这是否是预期的行为?
powershell - Powershell 启动进程权限被拒绝
谁能告诉我,如果我调用为什么会出现错误:
但如果我调用没有错误:
但我需要“-wait”还是有其他选择?
错误:
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 的完全权限。问题仍然存在。
windows - 如何从提升的 PowerShell 控制台以非管理员身份运行进程?
也许有一种方法可以用我找不到的Start-Process cmdlet 来做到这一点?我在 StackOverflow 上找到的其他相关问答,例如this、this和this都提供了使用自定义 C# 代码执行此操作的解决方案。我的问题是,在 PowerShell 中是否有任何直接的方法可以做到这一点?即,您在提升的 PS 控制台中,并希望以非管理员身份运行进程。
c# - 模拟用户进入远程机器
我想在我的网络中的计算机上启动用户交互进程。我知道那台机器的管理凭据。但是当我学会启动用户交互过程时,我需要获取在该机器上运行的父会话(session0)。我不能这样做,谁能帮忙。
我尝试使用 powershell commandlet 和其他方式启动进程。进程通过这些方式启动,但它渴望 CPU。
PS:我不想使用 PSexec 或类似的工具。
powershell - 忽略特定行的 powershell 脚本失败
我有一个定义的 powershell 脚本,$ErrorActionPreference = "Stop"
但我也有一个start-process
调用,该调用针对一个进程,该进程在成功时返回非标准退出代码(1 而不是 0)。因此,即使启动过程正常,脚本也会失败。我试图-ErrorAction "Continue"
在调用中附加参数,start-process
但没有解决问题。
有问题的行如下所示:
我怎样才能防止启动过程使整个脚本失败。
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本地策略中的模拟 -> 用户权限分配。系统存在,为了完整起见,我还添加了计算机帐户。重新启动。但是没有运气,问题仍然存在!
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 键在注册表中手动设置它(如此处和此处所述)。
powershell - 使用 $Variable 为 Start-Process 提交 -Filepath 参数
我正在使用 PowerShell 版本 3。我想解决一个奇怪的问题。我编写了一个 PowerShell 脚本,它读取配置 CSV 文件(带有应用程序路径和名称)并创建一个带有应用程序按钮的表单。当我尝试Start-Process FilePath
使用变量提交参数时,它就不起作用了。当我回显变量时,一切都是正确的。也许这里有人知道出了什么问题,可以帮助我。我收到一个错误
我试图用另一个stackoverflow线程的解决方案来解决这个问题:
并尝试提交$ButtonCommand
带有和不带有'"'的