2011-08-04 24 views
1

私はPowerShellを初めて使用しており、サイトの機能を有効にするためのスクリプトを変更するように求められています。スクリプトには2つの機能のアクティブ化の間にいくつかの遅延の問題があるため、機能を有効にし、機能が有効になるまでスリープまたは遅延する新しい機能を作成することにしました。これは使えますか?もしそうなら、その機能がアクティブになったことをどのように伝えることができますか?PowershellでSharepoint機能を有効にする

# This is a function that enable's a Sharepoint Feature and Sleeps Until Its Finished Enabling 

function Feature-Enable 

{param ([string]$ID, [string]$URL) 

#Enable Feature 

Enable-SPFeature -Identity $ID -url $URL -Confirm:$false 

#Sleep Until Feature is Done Enabling 

} 

#Set parameters/variables for script 
$serverName = "someServerName" 
$rootwebUrl = "someRootUrl" 

$currentpath=Split-Path -Path $MyInvocation.MyCommand.Path -Parent 

$siteURL = "http://" + $servername + $rootwebURL 

$start = Get-Date -DisplayHint Time 

# check to ensure Microsoft.SharePoint.PowerShell is loaded 

$snapin = Get-PSSnapin | Where-Object {$_.Name -eq 'Microsoft.SharePoint.Powershell'} 

if ($snapin -eq $null) { 

Write-Host "Loading SharePoint Powershell Snapin" 

Add-PSSnapin "Microsoft.SharePoint.Powershell" 

} 


#   Active Site Collection Features (in order) 

     write-host "" 

     write-host "----------------------------------------" 

     write-host "Begin activation of site collection features" 

     write-host "----------------------------------------" 

     write-host "" 

    Feature-Enable –identity "3cbf5d1e-ff2e-48d2-82a4-99b060381268" -URL $siteUrl 


#NOTE: POTENTIAL LATENCY ISSUES. MAY NEED TO INSERT DELAY TIMER! 

    Feature-Enable –identity "bbde524e-9293-468e-84f7-fdb763ffa309" -URL $siteUrl 

     write-host "" 

     write-host "----------------------------------------" 

     write-host "Activation of site collection features - DONE!" 

     write-host "----------------------------------------" 

     write-host "" 


$end= Get-Date -DisplayHint Time 

Write-Host "Started at: " $start " Ended at: " $end; 

答えて

0
function WaitForJobToFinish([string]$SolutionFileName) 
{ 
    $JobName = "*solution-deployment*$SolutionFileName*" 
    $job = Get-SPTimerJob | ?{ $_.Name -like $JobName } 
    if ($job -eq $null) 
{ 
    Write-Host 'Timer job not found' 
} 
else 
{ 
    $JobFullName = $job.Name 
    Write-Host -NoNewLine "Waiting to finish job $JobFullName" 

    while ((Get-SPTimerJob $JobFullName) -ne $null) 
    { 
     Write-Host -NoNewLine . 
     Start-Sleep -Seconds 2 
    } 
    Write-Host "Finished waiting for job.." 
} 

}

関連する問題