0

我有一個Jenkins的工作,它在低於活動。Copy-Item:進程無法訪問文件

  1. 停止WebService的
  2. 刪除的WebService
  3. 從詹金斯的工作空間複製內容到服務器的路徑
  4. 創建的WebService
  5. 開始的WebService

下面是我的PowerShell腳本:

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 } 

錯誤日誌:

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.

能否請你幫我出這個錯誤?我是否需要重新啓動部署服務器,以便我的進程被終止?如果是這樣,我覺得這是不相關的,不能在prod服務器上做。

+0

只是找到阻止該DLL並阻止它的過程 – 4c74356b41

+0

@ 4c74356b41我無法找到任何具有該名稱的進程。 – Kally

回答

0

問題是你有另一個使用dll的進程。由於它正在使用,你不能刪除它。您需要確保沒有進程在使用您的dll,然後才能刪除它。爲了達到這個目標,你需要找出哪個進程正在使用它,爲什麼它正在使用它並確保它將被關閉。如果下次出現問題,則需要添加關閉該進程到您的腳本。

+0

你能告訴我如何實現這個 – Kally

+0

@Bhave查看進程列表,列出你不能排除dll使用情況的進程列表。嘗試一個接一個地停下來,看看你什麼時候可以刪除dll。當你能夠這樣做時,你也會知道哪個過程導致了問題。此時,複製dll並重新啓動該過程以重現該問題。調整你的腳本到你的發現,並確保它的工作。 –

相關問題