我有一个运行部署脚本的Octopus Tentacle。触手作为LocalSystem帐户运行。
在脚本中,除了一些存档位之外,我能够完成我需要的所有操作。存档需要在不同的域凭据下完成,因为它位于网络共享上。
令人沮丧的是,下面的代码在本地工作,但是当触发时,它会因错误而失败
----------------------------------------------- ----- [备份Nupkg] ------------------------------------------ -----------存储备份 开发环境的GeoSphere.1.2.1.1722.nupkg版本
错误09:24:32 [localhost]启动
时出错 后台进程。错误错误09:24:32报告:访问是
否认。错误09:24:32在
C:\八达通\部署\开发\几何球体\ 1.2.1.1722 \ deploy.ps1:121
错误09:24:32字符:1错误09:24:32
+ Receive-Job $ job错误09:24:32
+ ~~~~~~~~~~~~~~~~错误09:24:32
+ CategoryInfo:OpenError:(localhost:String)[],PSRemotingTran错误09:24:32 sportException错误09:24:32
+ FullyQualifiedErrorId:-2147467259,PSSessionStateBroken Info 09:24:32 HasMoreData:False StatusMessage:Location:
localhost命令: Import-Module $ args [3]
Backup-Nupkg $ args [0] $ args [1] $ args [2]
JobStateInfo:Failed Fished:System.Threading.ManualResetEvent InstanceId:
0c031592-4c2a-4f8b-b014-a5ba79be09f7 Id:1名称:
Job1 ChildJobs:{Job2} PSBeginTime:13/11/2014 9:24:30 AM PSEndTime:13/11/2014 9:24:31 AM PSJobTypeName:BackgroundJob
输出:{}错误:{}进度:{}详细
:{}调试:{}警告:{}状态:失败
致命09:24:32 PowerShell脚本返回一个非零退出代码:1
触手版2.5.11.614
这是代码
$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
让这个像Tentacle一样在本地运行的神奇技巧是什么?
答案 0 :(得分:6)
我尝试了同样的事情没有任何运气,似乎不可能以不同的用户开始工作。在这个类似的问题中,Leblanc最终使用WinRM和Invoke-Command
代替:
run script block as a specific user with Powershell
(我认为这不是Octopus特有的 - 这个问题似乎更像是一个问题,SYSTEM能够以不同的用户启动流程,或者在SYSTEM下使用Start-Job
,或者两者兼而有之)