Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理文件和组策略的互斥锁错误_Batch File - Fatal编程技术网

Batch file 批处理文件和组策略的互斥锁错误

Batch file 批处理文件和组策略的互斥锁错误,batch-file,Batch File,我有一个非常简单的批处理文件附加到一个组策略,该策略应该安装一个.msi。出于某种原因,当我将GP应用于我想要的OU并重新启动所述计算机时,该程序将仅安装在OU中的部分(而不是全部)计算机上。问题中的MSI位于所有计算机都可以访问的网络共享上。我为GP创建了一个日志导出,将其与正常运行的安装进行比较,我注意到两件事: 1) 无法获取执行互斥体。系统错误258 2) MainEngineThread正在返回1618 1618似乎是由于一个应用程序已经在运行。如何修复批处理文件以解决此问题?我刚刚开

我有一个非常简单的批处理文件附加到一个组策略,该策略应该安装一个.msi。出于某种原因,当我将GP应用于我想要的OU并重新启动所述计算机时,该程序将仅安装在OU中的部分(而不是全部)计算机上。问题中的MSI位于所有计算机都可以访问的网络共享上。我为GP创建了一个日志导出,将其与正常运行的安装进行比较,我注意到两件事:

1)
无法获取执行互斥体。系统错误258

2)
MainEngineThread正在返回1618

1618似乎是由于一个应用程序已经在运行。如何修复批处理文件以解决此问题?我刚刚开始处理批处理文件,如果有任何帮助,我将不胜感激。以下是批次当前的外观:

:: Test if Websense is already installed
IF EXIST "%PROGRAMFILES%\Websense\Websense Endpoint\WEPDiag.exe" GOTO _end
:_skipcheck

msiexec /package "\\\networkshare\Websense Endpoint.msi" /passive /L*V C:\Windows\Temp\websenseinstall.log WSCONTEXT=ouruniquewebsensecode

发生此错误的原因很简单,因为该文件已被另一台计算机使用,这意味着无法在有问题的PC上打开安装程序。要解决此问题,只需将文件“Websense Endpoint.msi”设置为只读,那么任何计算机都无法锁定文件

更新:

或者,这里有一个批处理文件,将尝试100次启动MSI:

此脚本将:

1。尝试将文件复制到临时文件夹(100次)
2.从临时文件夹启动MSI
3。完成后显示适当的消息

@echo off
:: Change the below variables according to your preference
set maximumTries=100
set MsiFile=\\\networkshare\Websense Endpoint.msi
set TempMsiFile=%temp%\Websense Endpoint.msi
:: Don't change any of the below

set tries=0
:TryAgain
if "%tries%" == "%maximumTries%" goto :NoFile
if not exist "%msifile%" set /a tries=%tries%+1>nul&goto :TryAgain
set tries=0
:CopyToTemp
if "%Tries%" == "%maximumTries%" goto :NoGoCopy
copy /Y %MsiFile% "%TempMsiFile%" >nul 2>&1
if not "%errorlevel%" == "0"  set /a tries=%tries%+1>nul&goto CopyToTemp
msiexec /package "%TempMsiFile%" /passive /L*V C:\Windows\Temp\websenseinstall.log WSCONTEXT=ouruniquewebsensecode
goto :EndYes
:NoGoCopy
echo Cannot Read The File Specified! (Attempted %tries% Times)
goto :end
:NoFile
echo Cannot Find The File Specified!
goto :end
:endYes
echo The command completed successfully!
pause
exit
:end
echo The command failed!
pause
exit

谢谢,我会尝试一下,然后再报告。好的(确保当您将文件设置为只读时,该文件未在任何PC上打开)好的,它仍然不希望在所有计算机上一致安装,但看起来我不再收到互斥错误或1618错误。它显示了一个1619错误,看起来它无法打开.msi。在单独重新启动该计算机后(我通常一次重新启动20次),它会很好地安装msi。虽然我可以做到这一点,但我有大量的电脑要用,这并不实用。你对此有什么想法吗?