【问题标题】:How do I execute a PS1 file as a different user?如何以其他用户身份执行 PS1 文件?
【发布时间】:2015-12-04 21:06:23
【问题描述】:

我需要能够以其他用户的身份远程(通过 Jenkins)运行 PowerShell 脚本。由于它将作为 Jenkins 作业执行,Get-Credential 不适合我。下面是我创建的脚本,但它根本不起作用。

$uname='domain\username'
$pwd='password'
$passw=Convertto-SecureString -String $pwd -AsPlainText -force
$mycred=New-object -TypeName System.Management.Automation.PSCredential -ArgumentList $uname, $passw

Invoke-Command -FilePath "C:\test_scripts\fetchquery.ps1" -Authentication default -Credential $mycred -computername localhost

【问题讨论】:

  • 将两行放在一起是复制粘贴意外吗? $mycred=New-object..... 应该单独一行。
  • 定义“不起作用”。

标签: powershell jenkins scripting automation remote-execution


【解决方案1】:

试试这个:

Start-Process powershell -WindowStyle 'Hidden' -ArgumentList '-executionpolicy', 'bypass', '-file', $scriptFullName -Credential $C

【讨论】:

    【解决方案2】:

    创建凭证对象:

    $username = 'domain\username'
    $Password = 'password' | ConvertTo-SecureString -Force -AsPlainText
    $credential = New-Object System.Management.Automation.PsCredential($username, $Password)
    

    在您的代码中,您在 localhost 上执行它,因此使用保存的凭据启动 Powershell 会话:

    Start-Process powershell -argumentlist '-executionpolicy','bypass','-file',"C:\test_scripts\fetchquery.ps1"' -Credential $credential 
    

    并且要远程运行脚本(不要使用 Localhost)

    Invoke-Command -Computername 'Computer' `
    -FilePath C:\test_scripts\fetchquery.ps1 -ArgumentList PowerShell `
    -Cred $Credential
    

    【讨论】:

    • 嗨@Avshalom,感谢您修复脚本。在本地运行时效果很好。但是,由于 Jenkins 不允许任何弹出窗口,它会阻止脚本执行。我对 -ArgumentList 尝试了“-WindowStyle Hidden”,但出现以下错误:无法使用指定的命名参数解析参数集
    • Jenkins 将构建标记为成功,但 eventviewer 在系统日志下出现此错误:应用程序弹出窗口:powershell.exe - 应用程序错误:应用程序无法正确启动 (0xc0000142)。单击确定关闭应用程序。知道如何阻止那个黑色的小命令窗口被挖到吗? - 谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多