gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 00:17:54 26 4
gpt4 key购买 nike

我花了很多时间在这上面敲头。好了,好一点的StackOverflow帮助!

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

  • 当在本地盒上手动运行Powershell脚本时,它将正确启动.bat文件。
  • 当通过TeamCity运行powershell脚本时,它成功地“看到”了.bat文件(通过在重命名期望的.bat文件时收到“找不到文件”响应来验证)
  • 但是,我们还没有看到.bat文件实际上已经启动的迹象。

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

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

  • TeamCity Powershell设置:
  • Powershell运行模式:1.0版; Bitness x64(也尝试过x86)
  • 工作目录:尝试为空白,并指定.bat文件的特定文件路径(因此为'D:\ folder \ folder2 \')
  • 脚本:源代码
  • 脚本执行:从外部文件执行.ps1(也尝试使用“将脚本放入带有“-Command-”自变量的PowerShell stdin中”脚本)
  • 添加-NoProfile参数(均尝试)

  • Powershell脚本:
    #Predefine necessary information
    $Username = "DOMAIN\username"
    $Password = "password"
    $ComputerName = "CI Build Server Name"

    #Create credential object
    $SecurePassWord = ConvertTo-SecureString -AsPlainText $Password -Force
    $Cred = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $Username, $SecurePassWord

    #Start batch file
    Start-Process "testbat.bat" -WorkingDirectory D:\file\path\ -Credential ($Cred)-NoNewWindow -RedirectStandardError stderr.txt -RedirectStandardOutput stdout.txt

    Write-Host "Executed powershell."

    更新1 :如果删除'-Credential($ Cred)'部分,我们可以按预期从TeamCity启动testbat.bat文件。问题一定在于“-Credential($ Cred)”自变量。有什么想法吗?

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

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

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

    最佳答案

    $credential = New-Object System.Management.Automation.PsCredential(".\user", (ConvertTo-SecureString "pass" -AsPlainText -Force))
    Start-Process powershell -Credential $credential -ArgumentList '-noprofile -command &{Start-Process D:\file\path\test.bat -NoNewWindow -RedirectStandardError stderr.txt -RedirectStandardOutput stdout.txt }'

    注意:
    首先,我获得凭证“用户”您的用户,然后将您的通行证转换为纯文本
    然后开始处理您的凭证集

    关于powershell - teamcity powershell-无法运行批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29262290/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com