Я использую сценарий powershell ниже, чтобы удалить оповещения SharePoint.Как возобновить сценарий PowerShell после перезагрузки системы?
foreach ($site in Get-SPSite -Limit All)
{
"Site Collection $site"
foreach ($web in $site.allwebs)
{
" Web $web"
$c = $web.alerts.count
" Deleting $c alerts"
for ($i=$c-1;$i -ge 0; $i--) { $web.alerts.delete($i) }
}
}
В каждой среде Dev, Test и UAT имеется около миллиона предупреждений. Требуется много часов, чтобы удалить все предупреждения за один раз, и поскольку серверы автоматически перезапускаются периодически, сценарий не выполняется полностью.
Я знаю, что возобновить сценарии PowerShell после перезагрузки мы можем использовать PowerShell Workflow с Checkpoint документооборотом, но не уверен, где разместить контрольно-пропускные пункты и PSPersist.
Нужна помощь для возобновления удаления предупреждений в приведенном выше скрипте после перезагрузки системы.
Обновление: После попытки реализовать это я понял, что командлеты SharePoint PowerShell не могут быть связаны с PowerShell Workflow. Это не позволяет
Add-PSSnapin "Microsoft.SharePoint.PowerShell"
быть добавлены в рабочие процессы
Workflow SPAlerts
{
//Below tweaks didn't work
InlineScript{Add-PSSnapin "Microsoft.SharePoint.PowerShell"}
Invoke-Command -ScriptBlock {Add-PSSnapin "Microsoft.SharePoint.PowerShell"}
Invoke-Expression "......"
}