Хобрук: Ваш путь к мастерству в программировании

Copy-Item: процесс не может получить доступ к файлу Power-Shell

Я вижу ниже журналы ошибок, когда когда-либо пытаюсь скопировать элементы с пути к месту назначения. Эта задача сценария PS запланирована в рамках задания Jenkins. Это все портит, так как сборка каждый раз терпит неудачу.

Журналы ошибок-

Copy-Item : The process cannot access the file 
'\\10.0.1.190\d$\Build\RPC\Fortius.RPC.AmadeusAir\Common.Logging.Core.dll' because it is being used by another process.
At C:\Users\Administrator\AppData\Local\Temp\hudson5254771699639808940.ps1:33 char:1
+ Copy-Item "$ReleaseDir\*" $AmadeusDir -Force -Recurse
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Copy-Item], IOException
    + FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.CopyItemCommand

PS Скрипт-

# force strict - so any variable used before being assigned causes an error
Set-PsDebug -Strict

# force PowerShell to exit with a non-zero code on the first error
$ErrorActionPreference = 'Stop'

# set directories here once, so we can reuse
$AmadeusDir = "\\$env:SERVER\d$\Build\RPC\Fortius.RPC.AmadeusAir"
$ReleaseDir   = "C:\Amadeus\BTP\src\Fortius.Amadeus.Air.RPC.Host\bin\Release"

# get directory contents (are you expecting these to return to Jenkins?)
Get-ChildItem "$AmadeusDir\*"
Get-ChildItem "$ReleaseDir\*" 

# create the search directory if it doesn't exist
if (-not (Test-Path -Path $AmadeusDir -PathType Container)) { New-Item -Path $AmadeusDir -type directory -Force }

# get the service, but fail gracefully if it doesn't exist
$service = Get-Service -Name AmadeusAirWindowsService -Computername $env:SERVER -ErrorAction SilentlyContinue

# if we have a service, stop and delete it
if($service.Status)
{
    sc.exe \\$env:SERVER stop AmadeusAirWindowsService
    if ($LASTEXITCODE -ne 0) { throw "error stopping the service: $LASTEXITCODE" }
    Write-Host "AmadeusAirWindowsService STOPPED"
    sc.exe \\$env:SERVER delete AmadeusAirWindowsService
    if ($LASTEXITCODE -ne 0) { throw "error deleting the service: $LASTEXITCODE" }
    Write-Host "AmadeusAirWindowsService DELETED"
}

# copy release to search
Copy-Item "$ReleaseDir\*" $AmadeusDir -Force -Recurse

# (re)create the service
sc.exe \\$env:SERVER create AmadeusAirWindowsService start=auto DisplayName="Fortius Amadeus Air RPC Service"  binPath= D:\Build\RPC\Fortius.RPC.AmadeusAir\WorldVentures.Fortius.Amadeus.Air.RPC.Host.exe
if ($LASTEXITCODE -ne 0) { throw "error creating the service: $LASTEXITCODE" }
sc.exe \\$env:SERVER description AmadeusAirWindowsService "This service hosts Fortius Amadeus Air RPC service"
if ($LASTEXITCODE -ne 0) { throw "error adding description to service: $LASTEXITCODE" }
sc.exe \\$env:SERVER start AmadeusAirWindowsService
if ($LASTEXITCODE -ne 0) { throw "error starting the service: $LASTEXITCODE" }
Write-Host "AmadeusAirWindowsService STARTED"

В качестве альтернативы я использую xcopy "From" "destination" /k/e/d/Y для этого

20.02.2017

Ответы:


1

Вы пытаетесь скопировать материал, в то время как в месте назначения все еще используются файлы. Вы проверили, что держит этот/эти файлы заблокированными? Вы уже остановили службу, как я вижу, вы действительно проверили, прошло ли это успешно? Также в SysInternals есть «дескриптор» и «обозреватель процессов», которые могут проверять, что удерживает ваш файл заблокированным.

20.02.2017
Новые материалы

Что такое гибкие методологии разработки программного обеспечения
Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...

Ториго  — революция в игре Го
Наш следующий вызов против ИИ и для ИИ. Сможет ли он победить людей в обновленной игре Го? Обратите внимание, что в следующей статье AI означает искусственный интеллект, а Goban  —..

Простое развертывание моделей с помощью Mlflow — Упаковка классификатора обзоров продуктов NLP от HuggingFace
Как сохранить свои модели машинного обучения в формате с открытым исходным кодом с помощью MLFlow, чтобы позже получить возможность легкого развертывания. Сегодня модели упаковки имеют несколько..

Математика и интуиция - Часть 1
У каждой математической формулы есть доказательство. Часто эти доказательства слишком сложно понять, поскольку многие из них основаны на индукции, некоторые - на очень сложных наблюдениях, а..

Раскрытие возможностей НЛП: часть речевой маркировки и ее проблемы
В сфере обработки естественного языка (NLP) маркировка частей речи (POS) выступает в качестве фундаментального метода, позволяющего компьютерам понимать и анализировать человеческий язык на..

Под поверхностью: раскрытие деталей системы с помощью инструментов Linux CLI
Чем больше вы изучаете Linux и продвигаетесь вперед, тем больше вам нужно проверять информацию о вашей системе. Эта информация может касаться аппаратного обеспечения, такого как процессор,..

Как реализовать линейную регрессию в JavaScript
Узнайте, как реализовать линейную регрессию в JavaScript с помощью ML.js Линейная регрессия — это метод машинного обучения, используемый для моделирования связи между зависимой переменной и..