【问题标题】:Remote Access with Powershell and Jenkins使用 Powershell 和 Jenkins 进行远程访问
【发布时间】:2012-11-27 16:12:34
【问题描述】:

我正在尝试在远程 (Windows 2008 Server R2) 机器上运行 powershell 脚本。以下代码在直接从 powershell 执行时效果很好。 (即一切设置正确,WinRM 服务正在运行,主机相互信任,登录正确...)

但是,当我从 Jenkins 实例(在我测试的同一台机器上运行)执行完全相同的代码时,我得到 PSSessionStateBroken 连接失败,. (没有发布完整的错误,因为它在我的机器上是德语。)

我想这意味着 Jenkins 使用不同的 powershell 或具有不同的 powershell/winrm 设置或权限不足。有什么想法吗?

$computer = "<some ip>"
$user = "Administrator"
$password = "<secretpassword>"
$securepassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user, $securepassword
Invoke-Command -ComputerName $computer -ScriptBlock { Get-ChildItem C:\ } -Credential $cred

编辑:通过以管理员身份运行 jenkins 服务来修复它。对我有用,但感觉不对...

【问题讨论】:

    标签: powershell jenkins winrm


    【解决方案1】:

    截至 2014 年 3 月,Jenkins 安装 Jenkins 服务以作为 LocalSystem 用户(即NT AUTHORITY\SYSTEM)运行。 LocalSystem 帐户accesses the network using the computer account

    例如,名为 JENKINSSERVER 的主机上的 Jenkins 使用 MYDOMAIN Active Directory 域中的 MYDOMAIN\JENKINSSERVER$ 计算机帐户连接到远程计算机。

    这意味着您需要在TARGETSERVER 上将MYDOMAIN\JENKINSSERVER$ 帐户添加为BUILTIN\Administrators 本地组的成员:

    NET LOCALGROUP "Administrators" "MYDOMAIN\MYSERVER$" /add

    Caveat Emptor:这允许在 MYSERVER 主机上作为 LocalSystem 或 NetworkService 执行的任何代码以管理员身份在 TARGETSERVER 上运行远程命令。您最好只为该服务创建一个特定的域用户,以将管理员权限限制在单个 Jenkins 服务中。

    【讨论】:

      【解决方案2】:

      您的 Jenkins 服务帐户凭据是否有权远程登录到目标计算机?

      当管理员帐户和常规服务帐户访问时,我会使用 ProcMon 监视目标系统。你会看到不同,我敢打赌这会很明显!祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-24
        • 2023-03-30
        相关资源
        最近更新 更多