【问题标题】:Powershell: Can't run script as different user in same window?Powershell:无法在同一窗口中以不同用户身份运行脚本?
【发布时间】: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 对象的变量

标签: windows powershell jenkins remote-access credentials


【解决方案1】:

其中一个应该对你有用

Invoke-Command -ComputerName 'Same computer Name' -Credential '(PAss Cred object here)' -ScriptBlock {'Your Scripts Here'} 
Invoke-Command -ComputerName 'Same computer Name' -Credential '(PAss Cred object here)' -FilePath 'FilePAthHere'

【讨论】:

  • 嗯,都没有用...为什么需要计算机名称?我省略了那部分,因为我们没有尝试在远程计算机上运行,​​就像不同的用户一样
  • 没关系,你是如何通过凭证的?
  • 那是因为没有 -computername 的 -credential 不存在
  • 啊,所以如果我们在同一台计算机上而不是远程运行,我们对计算机名做什么
  • @Paul stackoverflow.com/questions/18144016/… 前几天我发现了它,幸运的是我也有它的链接。(链接中的第一个解决方案)
猜你喜欢
  • 2013-06-06
  • 2014-10-25
  • 1970-01-01
  • 1970-01-01
  • 2018-09-15
  • 2018-03-22
  • 2015-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多