我有一个运行部署脚本的 Octopus 触手。触手作为LocalSystem帐户运行。

在脚本中,除了一些存档位之外,我几乎可以执行所需的所有操作。由于存档位于网络共享上,因此需要在不同的域凭据下进行存档。

令人沮丧的是,下面的代码在本地工作,但是当触手刺破时,它会因错误而失败



这是代码

$pwd = convertto-securestring "[PASSWORD]" -asplaintext -force
$cred=new-object -typename System.Management.Automation.PSCredential -argumentlist "[DOMAIN\USER]",$pwd
$packageName = "GeoSphere.$Version.nupkg"
$backupPath = $($es.backupPath)
$artifactsPath = $($es.artifactsPath)
$job = Start-Job -ScriptBlock {
    Import-Module $args[3]
    Backup-Nupkg $args[0] $args[1] $args[2]
} -ArgumentList @($packageName,$backupPath,$artifactsPath,"$currentDir\modules\ApplicationUtilities") -Credential $cred

Wait-Job $Job
Receive-Job $job

这是ApplicationUtilities模块
function Backup-Nupkg{
    param(
        [parameter(Mandatory=$true,position=0)] [string] $packageName,
        [parameter(Mandatory=$true,position=1)] [string] $backupPath,
        [parameter(Mandatory=$true,position=2)] [string] $artifactsPath
    )

    if(!(Test-Path $($backupPath))) {
        md $($backupPath)
    } else {
        Remove-Item "$($backupPath)\*" -recurse -Force
    }

    Copy-Item $artifactsPath\$packageName $backupPath
}

Export-ModuleMember Backup-Nupkg

使它像本地触手一样逃离触手的魔法诀窍是什么?

最佳答案

我没有运气就尝试了同样的事情,看来不可能以其他用户身份开始工作。在这个类似的问题中,Leblanc最终使用WinRM和Invoke-Command代替:

run script block as a specific user with Powershell

(我不认为这是特定于 Octopus 的问题-问题似乎更多是SYSTEM能够以其他用户身份启动进程,或者SYSTEM可以使用Start-Job或两者兼而有之)

关于具有 Octopus 部署中备用凭据的Powershell作业,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26915264/

10-13 09:31