Если ферма серверов SharePoint состоит из нескольких серверов, то иногда, к сожалению, довольно не редко, при установке или удалении решения на одном или нескольких серверах зависает задание по развертыванию / удалению решения. В принципе, можно запустить перезапустить службу таймера "SharePoint 2010 Timer" на сервере с зависшим заданием и переустановить решение повторно, но тогда время простоя увеличится. Когда это критично, рекомендую использовать другое решение.
Если при развертывании (Install-SPSolution) или при извлечении (Retract-SPSolution) повис таймер на одном из серверов фермы, то нужно зайти на этот сервер и убедиться, что именно тут это произошло и получить идентификатор задания JobId. По этому идентификатору нужно потом отменить
Для этого нужно запустить команду
stsadm -o enumdeployments
В результате будет выдан ответ типа такого:
<Deployments Count="1"> <Deployment JobId="4714a374-6192-457a- 9d28-140efe6fa835"> <Title>Развертывание решения Microsoft SharePoint Foundation для "solutionName.wsp"</Title> <Type>Upgrade</Type> <State>Не запущено</State> <Schedule>10.08.2019 9:23</Schedule> <File>solutionName.wsp</File> <ServerType>Интерфейсный веб-сервер</ServerType> </Deployment> </Deployments>
Скопируйте в буфер обмена идентификатор и введите команду:
stsadm -o canceldeployment -id 4714a374-6192-457a-9d28-140efe6fa835
Эта команда отменяет задание на развертывание решения на текущем сервере.
В случае, если все хорошо, то вы получите сообщение:
Операция успешно завершена.
Если получили сообщение "Операция успешно завершена.", можно приступить к повторной установке решения только на текущем сервере. В моем случае это было обновлением решения, потому я использовал команду Update-SPSolution с ключом -local:
Update-SPSolution -Identity solutionName.wsp -LiteralPath C:\distrib\Solution\solutionName.wsp -GACDeployment -local –Force