2015-10-26 7 views
1

Я создаю несколько сайтов, используя скрипт powershell. Теперь, когда каждый из сайтов завершен, я хочу активировать на нем функции.Есть ли способ сказать, когда сайт создан и готов к использованию при создании его с помощью powershell?

Моя проблема в том, что когда я это делаю, требуется некоторое время, прежде чем сайт будет готов. Особенно в SharePoint Online трудно предсказать, когда сайт будет готов. Я пробовал использовать временные циклы, но мне было интересно, есть ли где-то параметр статуса, который я могу запросить вместо этого.

Любые мысли?

+0

Я не думаю, что есть какая-либо собственность/статус, чтобы предсказать, находится ли сайт готов использовать. Иногда назад я также сталкивался с аналогичной ситуацией, когда мне приходилось создавать несколько сайтов для Online в CSOM. Там я закончил использование цикла while, где я, в определенный промежуток времени, запросил URL-адрес нового сайта. Вы получите сообщение об ошибке, пока ваш сайт не будет готов и не ответит. Раньше он занимал от 5 до 15 минут! – Piyush

+1

Почему это нисходящее избиение меня бьет ... это вопрос. – miracules

ответ

1

На самом деле мы решили эту проблему. У siteCreationOperation есть свойство с именем isComplete. Итерации над этим и забрать булево для дальнейшей обработки :)

https://msdn.microsoft.com/en-us/library/microsoft.online.sharepoint.tenantadministration.tenant.createsite(v=office.15).aspx

#Create the site using the properties 
    $tenant.CreateSite($properties) | Out-Null 
    ... 
    ... 
    $siteCreationOperation = $tenant.CreateSite($properties) 
    $ctx.Load($siteCreationOperation) 
    ... 
    ... 
    #Create the site in the tennancy 
    ... 
    ... 
    do 
    { 
     ... 
     ... 
     $ctx.Load($siteCreationOperation) 
     $ctx.ExecuteQuery() 
     Write-Host $siteCreationOperation.IsComplete 
     ... 
     ... 
    } 
    ... 
    while (!$siteCreationOperation.IsComplete) 
    ... 
-2

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

$site = Get-SPSite <Site here> -ErrorVariable err -ErrorAction SilentlyContinue -AssignmentCollection $assignmentCollection 

    if($err) 
    { 
     while($err) 
     { 
      Write-Host "Waiting for site to be created" 
      Start-Sleep -seconds 5 
      $site = Get-SPSite <site here> -ErrorVariable err -ErrorAction SilentlyContinue -AssignmentCollection $assignmentCollection 
     } 
     #while loop for the last artifact that you are waiting for as the site will create but it may not be fully ready 
    } 

Приветствия

Truez

0

Вот то, что работает для меня:

Connect-SPOService -Url $adminUrl -Credential $credentials 
while ((Get-SPOSite -Filter "Url -like '*$($properties.Url)*'").Status -ne "Active") 
{ 
    Write-Host "." -NoNewline 
    Sleep -s 10 
} 

Где админ URL является https://Contonso-Admin.sharepoint.com и Properties.Url это сайт, который я ищу, так что-то вроде https://Contonso.sharepoint.com/sites/Test1