【发布时间】:2017-06-30 13:09:40
【问题描述】:
我正在运行一个脚本,该脚本涉及写入只有某些用户有权访问的数据库,因此我们在公司网络上以不同用户的身份运行该脚本(传递这些用户凭据)。
尽管尝试了-NoNewWindow 或-WindowStyle Hidden 之类的方法,但它似乎总是在新窗口中弹出。这是一个问题,因为当我们从 Jenkins 构建器中使用 powershell 构建步骤启动脚本时,Jenkins 不喜欢第二个窗口,并且在主窗口中似乎真的需要它。
我们使用的是Start-Process,脚本调用看起来与此类似(我删掉了一些细节):
Start-Process -NoNewWindow powershell.exe -Credential $credential -ArgumentList “Start-Process powershell.exe 'path\script.ps1 -param1 xxx -param2 yyy' -Verb runAs”
关于如何让它在没有弹出窗口的情况下实际运行的任何想法? 谢谢!
【问题讨论】:
-
难道不能直接在job的配置中输入
path\script.ps1的命令而不是产生新的进程吗?为什么Start-Process powershell.exe又出现在你的-ArgumentList中?不应该只用第一个powershell.exe进程启动脚本吗? -
您确实可以直接在构建配置中运行脚本,但是为了传递我们需要的凭据,这是 Start-Process 的参数...我不知道为什么我们需要启动进程在论点中,没有它似乎根本无法运行。我只是一名实习生,昨天和我的经理一起工作了一点,这就是他想出的。他使用过类似的命令,但在这里似乎不起作用。
-
调用命令不是你的选择:
Invoke-Command -FilePath -Credential -
Invoke-Command -FilePath 'path\script.ps1 -param1 param -param2 param2' -Credential $credential 这里的格式有问题吗?我得到一个参数绑定错误,脚本接受了两个参数,$credential 也是一个 PSCredential 对象的变量
-
使用-argumentlist参数,见msdn.microsoft.com/en-us/powershell/reference/5.1/…
标签: windows powershell jenkins remote-access credentials