У меня есть щупальце осьминога, на котором запущен сценарий развертывания. Щупальце работает как учетная запись LocalSystem.
Внутри сценария я могу делать практически все, что мне нужно, за исключением некоторой части архива. Архив должен быть выполнен под разными учетными данными домена, потому что он находится в общей сетевой папке.
Разочаровывает то, что приведенный ниже код работает локально, но при запуске с щупалец он выдает ошибку.
-------------------------------------------------- - [Backup Nupkg] -------------------------------------------- -------- Сохранение резервной версии GeoSphere.1.2.1.1722.nupkg для среды разработки
Ошибка 09:24:32 [localhost] При запуске фонового процесса
произошла ошибка. Ошибка Ошибка 09:24:32 Сообщается:
отказано в доступе. Ошибка 09:24:32 В
C: \ Octopus \ Deployments \ Development \ GeoSphere \ 1.2.1.1722 \ deploy.ps1: 121
Ошибка 09:24:32 char: 1 Ошибка 09:24:32
+ Receive-Job $ job Ошибка 09:24:32
+ ~~~~~~~~~~~~~~~~ Ошибка 09:24:32
+ CategoryInfo: OpenError: (localhost: String) [], PSRemotingTran Error 09:24:32 sportException Error 09:24:32
+ FullyQualifiedErrorId: -2147467259, PSSessionStateBroken Info 09:24:32 HasMoreData: False StatusMessage: Расположение:
localhost Команда: Import- Модуль $ args [3]
Backup-Nupkg $ args [0] $ args [1] $ args [2]
JobStateInfo: Failed Завершено: 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
Tentacle, версия 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
Каков волшебный трюк, чтобы заставить его убежать от щупальца, как это происходит локально?