Вопрос

Я пишу скрипт PowerShell для добавления моего решения, активирующее решение и на последнюю функцию активации на моем сервере SP2010.Нет проблем в добавлении раствора и развертывания решения.Вопросы - это когда я пытаюсь включить функции с помощью команды Enable-SPFEAture, она не находит функцию на сервере, хотя через UI функции присутствуют.Я сомневаюсь, что он слишком быстро пытается, пока развертывание все еще находится под ним.Есть ли способ проверить, завершено ли развертывание или мне нужно перезапустить некоторую услугу или что-то.

Пожалуйста, предложите

Это было полезно?

Решение

То, что вы испытываете, скорее всего, кэширует.

PowerShell увлекается кэшированию ваших экземпляров, таких как SPWEB и SPSITE, и его содержание, поэтому, если вы запускаете все в одном большом комке, вы увидите, что, например, добавленные функции не будут отображаться.

Простой способ тестирования, если это проблема, попробуйте разделить скрипт в два. Затем сначала выполните один скрипт, закройте оболочку, откройте другой и выполните это.

Если он работает без проблем, это проблема кэширования!

Мы решили это, неренирующие новые процессы (начальный процесс PowerShell.exe »....) На основании папок:

010 Solutions
    10 Solution
    20 Features
020 Etc etc
.

Каждая новая папка интерпретируется как новый экземпляр PowerShell.

Это хорошо работает, поэтому я бы порекомендовал аналогичный подход.Прощественным подходом было бы просто создать новый процесс для выполнения вашей функции:

$command = "your commands goes here"
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
# encoded to avoid encoding and escaping issues
# STA ensures you are running single threaded, important as most SharePoint objects isnt multi threaded
Start-Process powershell.exe -NoLogo -encodedCommand $encodedCommand -STA
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top