Если ферма серверов 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