0

私は以下の活動をするジェンキンスジョブを持っています。サーバパスへジェンキンスワークスペースからコピーアイテム:プロセスがファイルにアクセスできない

  1. 停止WebServiceの
  2. 削除WebServiceの
  3. コピー項目
  4. スタートWebServiceの
  5. 以下

は私のPowerShellスクリプトでWebサービスを作成します。

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.

は、あなたがこのエラーで私を助けてくださいことはできますか?プロセスが強制終了されるように展開サーバーを再起動する必要がありますか?もしそうなら、私はこれは関連性がなく、プロダクトサーバではできないと感じています。

+0

dlをブロックしているプロセスを見つけてから停止してください。 – 4c74356b41

+0

@ 4c74356b41その名前のプロセスが見つかりません。 – Kally

答えて

0

問題は、dllを使用している別のプロセスがあることです。それが使用されているので、それを削除することはできません。削除する前にdllを使用しているプロセスがないことを確認する必要があります。これを実現するには、どのプロセスがそのプロセスを使用しているか、なぜそのプロセスを使用しているか、そしてそのプロセスがクローズされているかどうかを確認する必要があります。次回も問題が発生した場合は、そのプロセスをスクリプトに追加する必要があります。

+0

これを実現する方法を教えてください。 – Kally

+0

@プロセスのリストを表示して、dllの使用を除外できないプロセスのリストを作成してください。それらを1つずつ停止して、いつdllを削除できるかを確認してください。あなたがそうすることができたら、どのプロセスが問題を引き起こしたのかも分かります。この時点で、dllをコピーして、問題を再現するプロセスを再起動します。スクリプトを結果に合わせて調整し、正常に機能することを確認します。 –

関連する問題