0

Ich habe einen Jenkins-Job, der unter Aktivität tut.Copy-Item: Der Prozess kann nicht auf die Datei zugreifen

  1. Stopp WebService
  2. löschen WebService
  3. kopieren Artikel von Jenkins Arbeitsbereich Serverpfad
  4. WebService erstellen
  5. starten WebService

Unten ist mein Powershell-Skript:

Get-ChildItem "C:\Location\*" 
$service = Get-Service -Name value -Computername $env:SERVER -ErrorAction SilentlyContinue 
sc.exe \\$env:SERVER stop value 
Write-Host "value STOPPED" 
sc.exe \\$env:SERVER delete val 
Write-Host "val DELETED" 
Copy-Item "C:\Location\*" "\\$env:SERVER\d$\Location" -Force -Recurse 
sc.exe \\$env:SERVER create val start=auto DisplayName ="val" binPath= D:\Location.exe 
sc.exe \\$env:SERVER description value"value" 
sc.exe \\$env:SERVER start value 
Write-Host "value STARTED" 
if ($error) { exit 1 } 

Fehlerprotokolle:

Copy-Item : The process cannot access the file '\\Location' because it is being used by another process. 
At C:\Users\Administrator\AppData\Local\Temp\hudson2059984936352103941.ps1:18 char:5 
+  Copy-Item "C:\Location\*" " ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [Copy-Item], IOException 
    + FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.CopyItemCommand 

[SC] CreateService FAILED 1072: 

The specified service has been marked for deletion. 

[SC] ChangeServiceConfig2 FAILED 1072: 

The specified service has been marked for deletion. 

[SC] StartService FAILED 1058: 

The service cannot be started, either because it is disabled or because it has no 
enabled devices associated with it.

Können Sie mir bitte helfen mit diesem Fehler aus? Muss ich den Bereitstellungsserver neu starten, damit mein Prozess beendet wird? Wenn dies der Fall ist, ist dies nicht relevant und kann nicht in Prod-Servern durchgeführt werden.

+0

finden Sie einfach den Prozess blockiert die DLL und stoppe es vor – 4c74356b41

+0

@ 4c74356b41 Ich kann keinen Prozess mit diesem Namen finden. – Kally

Antwort

0

Das Problem ist, dass Sie einen anderen Prozess haben, der die DLL verwendet. Da es verwendet wird, können Sie es nicht entfernen. Sie müssen sicherstellen, dass kein Prozess Ihre DLL verwendet, bevor Sie sie entfernen können. Um dies zu erreichen, müssen Sie herausfinden, welcher Prozess es verwendet, warum es es verwendet und sicherstellen, dass es geschlossen wird. Wenn das Problem auch beim nächsten Mal auftritt, müssen Sie diesen Vorgang zum Skript hinzufügen.

+0

Können Sie mir sagen, wie Sie dies erreichen – Kally

+0

@Bhave die Liste der Prozesse anzeigen, erstellen Sie eine Liste von Prozessen, bei denen Sie die Verwendung der DLL nicht ausschließen können. Versuchen Sie, sie einzeln anzuhalten und sehen Sie, wann Sie die DLL entfernen können. Wenn Sie dazu in der Lage sind, wissen Sie auch, welcher Prozess das Problem verursacht hat. Kopieren Sie die DLL an diesem Punkt zurück, und starten Sie den Prozess neu, um das Problem zu reproduzieren. Passen Sie Ihr Skript an Ihre Ergebnisse an und stellen Sie sicher, dass es funktioniert. –

Verwandte Themen