我有一个运行部署脚本的 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/