Como criar um site collection no SharePoint 2013 com PowerShell

Olá SharePointers,

Este é um post simples para mostrar como criar um site collection com PowerShell.

Antes de criar o site collection é importante saber qual o template que deverá ser utilizado, para isso verifique com a área usuária que tipo de site precisam, depois utilize o seguinte script para obter a lista de web templates do SharePoint 2013:

Get-SPWebTemplate | Sort-Object "Title"

Com isso você vai obter a lista de todos os templates disoníveis, veja a seguir:

webtemplates

Como vocês devem estar percebendo estou criando vários posts sobre search, por isso vou mostrar um exemplo de como criar um site collection de Search Center.

Copie este script e cole no bloco de notas e salve como .ps1

try
{

Add-PSSnapin Microsoft.SharePoint.PowerShell –ErrorAction SilentlyContinue

## defina as váriaveis
$webApplicationUrl = “http://server”

$siteCollectionUrl = “http://server/sites/SearchCenter”

$siteCollectionName = “Search Center”

$siteCollectionOwner1 = “Dominio\usuario1”

$siteCollectionOwner2 = “Dominio\usuario2”

$siteCollectionTemplate = “SRCHCEN#0”

## Verifica se a url especificada já existe
$SiteCollection = Get-SPSite $siteCollectionUrl -ErrorAction SilentlyContinue

if ($SiteCollection -ne $null)
{
Write-Host “Esta URL já está sendo utilizada ” $siteCollectionUrl
}
else
{
## Cria o site collection
New-SPSite -URL $siteCollectionUrl -OwnerAlias $siteCollectionOwner1 -SecondaryOwnerAlias $siteCollectionOwner2 -Name $siteCollectionName -Template $siteCollectionTemplate
Write-Host “Search Center criado com sucesso!”
}
}
catch
{
Write-Host -ForegroundColor red “Ocorreram alguns problemas ao tentar criar o search center”
}

 

Para criar um site collection para outro template qualquer somente alterar o template conforme a lista obtida anteriormente.

Abraços,

Carlos Citrangulo

Criar Resultados Promovidos com PowerShell (Best Bets) no SharePoint 2013

Olá SharePointers,

Neste post quero mostrar como criar resultados promovidos no SharePoint 2013 com PowerShell. Fiz um post a uns dias atrás de como obter os resultados promovidos e me pediram para criar um para mostrar como criar.

Este script cria os resultados promovidos em nível de site collection.

$siteUrl = “http://sitecollectionurl”
$resultSourceName = “Local SharePoint Results”

$web = Get-SPWeb $siteUrl
$ssa = Get-SPEnterpriseSearchServiceApplication
$queryRuleManager = New-Object Microsoft.Office.Server.Search.Query.Rules.QueryRuleManager($ssa)
$site = Get-SPSite $siteUrl
$searchOwner = New-Object Microsoft.Office.Server.Search.Administration.SearchObjectOwner -ArgumentList @([Microsoft.Office.Server.Search.Administration.SearchObjectLevel]::SPSite,$site.RootWeb)
$searchObjectFilter = New-Object Microsoft.Office.Server.Search.Administration.SearchObjectFilter($searchOwner)
$federationManager = New-Object Microsoft.Office.Server.Search.Administration.Query.FederationManager($ssa)
$resultSource = $federationManager.GetSourceByName($resultSourceName,$searchOwner)
$queryRules = $queryRuleManager.GetQueryRules($searchObjectFilter)
$promotedResultCollection = $ssa.GetBestBets($searchObjectFilter)

function CreatePromotedResult([string]$title, [string]$url, [string]$description)
{
Write-Host “Creating Promoted Result ..” $title
$queryRule = $queryRules.CreateQueryRule($title,$null,$null,$true)
[string[]]$keywords = $title.split(‘ ‘)
$keywords += $title
$keywordCondition = $queryRule.QueryConditions.CreateKeywordCondition($keywords,$false)
$queryAction = $queryRule.CreateQueryAction([Microsoft.Office.Server.Search.Query.Rules.QueryActionType]::AssignBestBet)
#PromotedResult = BestBet
$promotedResult = $promotedResultCollection.CreateBestBet($title, $url, $description, $false)
#Map the best bet to the query action
$queryAction.BestBetIds.Add($promotedResult.Id);
#Update the query rule
$queryRule.Update()
$queryRule = $null
Write-Host “Created Promoted Result for” $title “Finished”
}

function DeleteAllPromotedResult([string]$ssaName)
{
$customQueryRules = $queryRuleManager.GetQueryRules($searchObjectFilter) | ?{$_.Owner.Level -ne $ssaName}
Write-Host “There are” $customQueryRules.Count “Customised Query Rules”

foreach($qryRule in $customQueryRules) {
Write-Host “Deleting Query Rule ” $qryRule.DisplayName
$ssa.RemoveQueryRule($qryRule)
}
$ssa.Update()
}

clear
CreatePromotedResult “Carlos Citrangulo” “http://carloscitrangulo.com.br” “Blog do Carlos Citrangulo”
CreatePromotedResult “Microsoft” “http://www.microsoft.com” “Portal Microsoft”

#DeleteAllPromotedResult “SSA”

 

Abraços,

Carlos Citrangulo

Obter lista de Resultados Promovidos no SharePoint 2013

Olá SharePointers,

Na governança do serviço de busca é importante documentar e todas as configurações bem como manter os arquivos de configuração em um local gerenciado e de conhecimento do time de governança.

Por isso, neste post quero mostrar como obter todos os resultados promovidos criados em um site collection com powershell.

#Script para obter os resultados promovidos

$SearchServiceName = “Search Service Application”
$sspApp = Get-SPEnterpriseSearchServiceApplication $SearchServiceName
$siteUrl = “http://portal/searchcenter”
$site = get-spsite $siteUrl -WarningAction SilentlyContinue
$web = $site.rootweb
$fedManager = New-Object Microsoft.Office.Server.Search.Administration.Query.FederationManager($sspApp)
$SearchOwner = New-Object Microsoft.Office.Server.Search.Administration.SearchObjectOwner([Microsoft.Office.Server.Search.Administration.SearchObjectLevel]::SPWeb, $web)
$SearchObjectFilter = New-Object Microsoft.Office.Server.Search.Administration.SearchObjectFilter($SearchOwner)
$queryRuleManager = New-Object Microsoft.Office.Server.Search.Query.Rules.QueryRuleManager($sspApp)
$queryRules = $queryRuleManager.GetQueryRules($searchObjectFilter)
$bestbets = $queryRuleManager.GetBestBets($SearchObjectFilter)
$promotedResults = $queryrules | Where-Object{$_.DisplayName -match “RP”}
$promotedResults | ForEach {
Write-Host “Query Rule Title: ” -ForegroundColor “Yellow” –NoNewLine
Write-Host $_.DisplayName -ForegroundColor “White”
Write-Host “Terms: ” -ForegroundColor “Yellow” –NoNewLine
Write-Host $_.QueryConditions.Terms -ForegroundColor “White”
Write-Host “Best Bet Title(s):” -ForegroundColor “Yellow” –NoNewLine
Write-Host -ForegroundColor “White” $_.AssignBestBetsAction.BestBetIds.GetBestBetsFromIds().Title
Write-Host “Best Bet URL(s):” -ForegroundColor “Yellow” –NoNewLine
Write-Host -ForegroundColor “White” $_.AssignBestBetsAction.BestBetIds.GetBestBetsFromIds().URL
Write-Output “Query Rule Title: ” $_.DisplayName
Write-Output “Terms: ” $_.QueryConditions.Terms
Write-Output “Best Bet Info: ” $_.AssignBestBetsAction.BestBetIds.GetBestBetsFromIds()} >> c:\temp\reportRP.txt

Neste caso utilizei uma query que obtenha uma lista de Resutados Promovidos que contenham PR no Display Name.

Abraços,

Carlos Citrangulo

 

Como criar uma Web Application com PowerShell para SharePoint 2013

Olá SharePointers,

Neste post quero mostrar com um script simples como criar uma web application para SharePoint 2013 com powershell.

$autenticacao = New-SPAuthenticationProvider -UseWindowsIntegratedAuthentication -DisableKerberos

New-SPWebApplication -Name “Portal de Colaboração” -ApplicationPool “Default SharePoint WebApp” -Port 80 -Url http://collab.portal.com -AuthenticationMethod NTLM -ApplicationPoolAccount dominio\usuario -AuthenticationProvider $autenticacao -DatabaseName “Content_Portal2013”

Este script considera que o application pool já existe.
Aplica-se: SharePoint 2010, SharePoint 2013
Abraços,
Carlos Citrangulo

Resolvendo problema de site collection que não pode ser excluído

Olá,

Hoje durante um processo de migração de SharePoint 2007 para SharePoint 2010, me deparei com um problema no processo de restore do site collection, ao executar o comando:

Restore-SPSite http://enderecodosite -Path c:\diretorio\arquivo.bak

Recebi a seguinte mensagem de erro:

restore01

Apesar da mensagem já indicar um problema claro, fui verificar o que ocorreu e pude identificar que a estrutura do site collection tinha sido concluída com vários erros, incluindo a falta de um banco de dados associado, nenhuma atividade poderia ser feita pela Central Administration, então fui tentar remover o site collecion com o cmdLet Remove-SPSite, recebi outro erro Unknown SPRequest error.occurred.

Então pesquisando cheguei neste link: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spcontentdatabase.forcedeletesite.aspx

Neste link encontrei o método SPContentDatabase.ForceDeleteSite que é usado para excluir sites que não podem ser removidos no modo convencional devido a alguma falha no processo de exclusão.

Com isso fiz este script para poder excluir o site com problema:

$sc = Get-SPSite http://enderecosite
$scId = $sc.Id
$scDB = $sc.ContentDatabase
$scDB.ForceDeleteSite($scId, $false, $false)

Assim que executei os scripts pude restaurar o site que tinha apresentado problemas antes 🙂

Boa sorte e abraços,

Carlos Citrangulo

Script PowerShell para criação da Farm

Olá,

Neste post quero falar sobre criação e configuração da farm do SharePoint utilizando PowerShell.

Nós sabemos que a criação e configuração da farm pode ser feita por interface gráfica utilizando o Wizard de Configuração, ou utilizando PowerShell, qual a diferença em utilizarmos interface gráfica e utilizarmos PowerShell? Esta é a pergunta em questão.

Se seguirmos o processo completo de criação da farm do SharePoint utilizando a interface gráfica vários databases serão criados, inicialmente são criados dois databases, o de configuração da farm e o de conteúdo da Central Administration (CA), quando criamos a farm utilizando a interface gráfica um dos passos da configuração da farm nós precisamos inserir o nome do servidor de banco de dados e o nome do banco de dados de configuração e o usuário e senha que irá se conectar no banco de dados da farm, veja na imagem a seguir:

SharePoint-2013-Database-Settings

Repare que é necessário inserirmos um nome para o banco de dados de configuração da farm, assim podemos definir um nome de fácil identificação, o que nos permite ter uma gestão mais fácil dos bancos de dados, porém o banco de dados de conteúdo da CA não tem um campo para que eu possa inserir um nome, dessa forma o SharePoint cria o banco de dados de conteúdo da CA com um GUID (global unique identifier​) e assim a instância fica com esse banco de dados sem nenhum padrão o que acaba dificultando a identificação e manutenção em casos que a instância é compartilhada (não recomendado), veja na imagem a seguir:

databasesharepointGUID

Vale lembrar que operacionalmente um banco de dados com GUID não perde nada comparado a um banco de dados sem GUID, o que estou mostrando aqui é como você criar e manter uma instância de SharePoint mais fácil de dar manutenção já que todos os databases vão seguir um padrão de nome, isso é um dos itens de boas práticas que podemos aplicar para banco de dados de SharePoint, que é um tema que vou abordar muito aqui, daqui para frente.

Então o que podemos fazer para resolver esse problema? Criar a farm com script PowerShell!

Repare que neste post não estou falando da criação dos bancos de dados de serviço, estou falando somente do banco de configuração e do banco de conteúdo da CA.

Criando o script para criação da Farm

Abra o bloco de notas e copie e cole o script abaixo:

Add-PsSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
New-SPConfigurationDatabase –DatabaseName “SharePoint_Config” –DatabaseServer “SQLAlias” –AdministrationContentDatabaseName “SharePoint_AdminContent” –Passphrase (ConvertTo-SecureString “SenhaDaFarm” –AsPlaintext –Force) –FarmCredentials (Get-Credential)
Install-SPHelpCollection -All
Initialize-SPResourceSecurity
Install-SPService
Install-SPFeature –AllExistingFeatures
New-SPCentralAdministration -Port 30000  -WindowsAuthProvider “NTLM”
Install-SPApplicationContent

Salve o arquivo como FarmConfig.ps1​​ ou o nome que voce achar mais intuitivo, desde que tenha a extensão .ps1

Abra o console do SharePoint e execute o arquivo, será solicitado digitar o usuário e senha da farm, insira a conta de serviço que sera a farm account.

Aguarde a criação da farm e no final deverá aparecer uma janela como esta para você.

finalPowershell

​Na CA será possivel conferir como ficou o nome dos bancos de dados, conforme imagem abaixo:

contentdb
Pode ser conferido também no SQL:

sql
Pessoal, para quem está começando a fazer implantação de farm SharePoint espero ter esclarecido um pouco a diferença em trabalhar com PowerShell ou trabalhar com a interface gráfica e como criar sua farm sem GUID.

Abraços,​

Carlos Citrangulo

Atribuir novo Passphrase a Farm do SharePoint

​Olá,

Neste post quero mostrar de modo simples como atribuir um novo passphrase a farm.

Você deve estar pensando “porque eu usaria isso?”, sinceramente nos meus ultimos 4 anos que trabalho somente com infraestrutura de SharePoint usei este recurso duas vezes e a segunda foi ontem, rs.

Imagine que você precisa adicionar um novo servidor a Farm do SharePoint, na hora de colocar a passphrase para incluir o servidor você recebe uma mensagem de passphrase inválida, e simplesmente não se lembra da passphrase, ou a que você documentou não confere de forma nenhuma por algum motivo mágico, rs.

Para resolver este problema vamos usar o cmdLet: Set-SPPassphrase

No Shell do SharePoint 2013 digite o cmdLet Set-SPPassphrase, pressione enter e digite a nova passphrase para a farm, confirme a passphrase e enter, pronto acicione seu novo servidor a farm com sua nova passphrase.

Execute os passos como a imagem abaixo:

set-passphrase2

Abraços,

Carlos Citrangulo

%d blogueiros gostam disto: