Биты и байты.

Биты и байты.
Показаны сообщения с ярлыком PowerShell. Показать все сообщения
Показаны сообщения с ярлыком PowerShell. Показать все сообщения

четверг, 20 апреля 2017 г.

Несколько доменов в Sharepoint. Лес, трасты и тд.

Когда пользователи SharePoint находятся в нескольких доменах добавить пользователей из домена с трастовыми отношениями не проблема.


В данной ситуации выручит команда
stsadm -o setproperty -pn peoplepicker-searchadforests
Детальное описание тут

Достаточно выполнить 3 простых шага.
1. Зайти на любой сервер фермы SharePoint, открыть командную консоль SharePoint
2. Получить URL  нужного веб приложения командой

Get-SPWebApplication

3. Запустить эту команду для вашего приложения с полученным URL выше

Для полного траста 

stsadm -o setproperty -pn peoplepicker-searchadforests -pv "forest:MY-DOMAIN.local;forest:TRUSTED-DOMAIN.local;domain:MY-DOMAIN.local;domain:TRUSTED-DOMAIN.local" -url http://my-sp2013-site.com.au/

Для одного домена 

STSADM.exe -o setproperty -propertyname peoplepicker-searchadforests -propertyvalue "domain:test.com;forest:uganda.com,uganda\user,123456" -url  http://sharepoint.com

Также можно проверить свойство командой

STSADM.exe -o getproperty -propertyname peoplepicker-searchadforests -url http://sharepoint.com

Теперь у вас есть возможность добавлять в разрешения сайта , библиотек  пользователей из другого домена.

среда, 1 февраля 2017 г.

Парсинг XML c помощью powershell

Допустим поступила такая задача, есть много файлов XML


В каждом файле есть нужный атрибут


Необходимо подготовить запрос для выборки из базы

$folderPath= "C:\Shared\BR_Playlist\1\"
$HouseIds= @()
foreach ($item in dir $folderPath)
{
$xmlFilePath = $folderPath + $item.Name
[xml] $xmlContent = [xml] (Get-Content -Path $xmlFilePath)
#Write-Host $item.Name
foreach( $event in $xmlContent.playlist.program.event )
{
    #Write-Host $event.housenumber
    $HouseIds+=$event.housenumber
}
}
#{$_} 
$HouseIds | sort-object | Get-Unique | Select-Object   @{Name="Comnd";Expression={"Select '"+$_+"' as evnt UNION ALL"  }}



четверг, 8 сентября 2016 г.

Полезные скрипты для Sharepoint на Powershell

Для тех кто хочет почувствовать настоящим админом, в  SharePoint есть интеграция с Powershell.  
Всегда полезно иметь под рукой набор скриптов, которые решил собрать в одном месте..

Для изучения команд SharePoint  на первом этапе будем пользоваться  средой  PowerShell ISE,  нереально полезная оболочка для начинающих!!
Эта среда позволяет в наглядном виде получать описания команд ,а также при необходимости сохранять целые сценарии.
Запускаем  PowerShell ISE и добавляем  командлет SharePoint в консоли.

Add-PSSnapin Microsoft.Sharepoint.Powershell

Можно также встретить в скриптах более продвинутый вариант

If ((Get-PSSnapIn -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null ) 
{ Add-PSSnapIn -Name Microsoft.SharePoint.PowerShell } 




Веб приложения и список сайтов

$webApp = Get-SPWebapplication 'http://london'

foreach($spSite in $webApp.Sites)
{
if ($spSite.HostHeaderIsSiteName)
{ Write-Host $spSite.Url 'is host-named' }
else
{ Write-Host $spSite.Url 'is path based' }
}


Результат


Коллекции сайтов могут быть 2х типов, сайт на основе пути (http://london/sites/demosite  по пути веб приложения создаются под сайты), и сайт на основе имени узла ( http://portal.contoso.com любое красивое имя для сайта )
Подробно на сайте Майкрософт
Сайты на основе имени узла создаются  только через Powershell, пример создания


New-SPSite 'http://portal.contoso.com' -HostHeaderWebApplication (Get-SPWebApplication 'http://london') -Name 'Portal' -Description 'Portal site' -OwnerAlias 'contoso\administrator' -language 1033 -Template 'STS#0'

New-SPSite 'http://bi.contoso.com' -HostHeaderWebApplication (Get-SPWebApplication 'http://london') -Name 'BI' -Description 'BI site' -OwnerAlias 'contoso\administrator' -language 1033 -Template 'BICenterSite#0'

Доступные шаблоны можно посмотреть командой

Get-SPWebTemplate

Небольшое видео  по настройке сайтов на основе имени

пятница, 6 мая 2016 г.

Как быстро установить патч на SharePoint

Как быстро установить патч на SharePoint или почему обновление может устанавливаться 5 часов.  
Подробности тут.
Если вкратце необходимо отключить службы  SPTimerV4, IISAdmin, OSearch15, SPSearchHostController перед установкой патча и включить после установки.
1. Отключаем службы  IISAdmin и SPTimerV4
2. Выключаем службы IIS Admin и Timer Services если они запущены                                                                                                           
3. Если необходимо делаем паузу в службе поиска , см детали в cкрипте
4. Останавливаем  службы поиска Search Services, см детали в скрипте
5. Устанавливаем патч в пассивном режиме
Примечание:  Power Shell должен оставаться открытым в фоне пока выполняется патч
6. После выполнения патча, Power Shell скрипт, восстанавливает запуск служб в  на шаге 1 в автоматический
7. Запускаем службы IIS Admin и Timer
8. Запускаем службы поиска Search Services                                                                                                                                                                                      
9. Возобновляем службы поиска если остановили Search Service Application
10. В конце скрипт отображает время начала и завершения патча  и затраченное время

После установки патча  запускаем вручную Sharepoint configuration wizard или

1.) заходим в папку "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\BIN"
2.) И запускаем конфигурирование PSConfig.exe -cmd upgrade -inplace b2b -force -cmd applicationcontent -install -cmd installfeatures

Как узнать версию Sharepoint

Как узнать версии  продуктов SharePoint достаточно запустить скрипт  get_sp_ver.ps1

Param(
  # decide on whether all the sub-components belonging to the product should be shown as well
  [switch]$ShowComponents
)

# location in registry to get info about installed software

$RegLoc = Get-ChildItem HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall

# Get SharePoint Products and language packs

write-host "Products and Language Packs"
write-host "-------------------------------------------"

$Programs = $RegLoc |
       where-object { $_.PsPath -like "*\Office*" } |
       foreach {Get-ItemProperty $_.PsPath}
$Components = $RegLoc |
       where-object { $_.PsPath -like "*1000-0000000FF1CE}" } |
       foreach {Get-ItemProperty $_.PsPath}

# output either just the info about Products and Language Packs
# or also for sub components

if ($ShowComponents.IsPresent)
{
       $Programs | foreach {
             $_ | fl  DisplayName, DisplayVersion;

             $productCodes = $_.ProductCodes;
             $Comp = @() + ($Components |
                    where-object { $_.PSChildName -in $productCodes } |
                    foreach {Get-ItemProperty $_.PsPath});
             $Comp | Sort-Object DisplayName | ft DisplayName, DisplayVersion -Autosize
       }
}
else
{
       $Programs | fl DisplayName, DisplayVersion
}


Результат

четверг, 31 марта 2016 г.

Могучий Шелл. Шпаргалка по PowerShell. Часть 1.

PowerShell на мой взгляд это идеальный инструмент для автоматизации абсолютно любых задач.
Его можно изучать бесконечно и находить в нем все новые и новые возможности.
Почти все продукты MS начиная с 2007 года поддерживают управление настройку и администрирование через PowerShell, что дает практически нереальные возможности в их администрировании и управлении.
Это пост создан с целью иметь под рукой самые полезные скрипты и команды.
Для тех кто совсем не знаком  с этим чудесным инструментом рекомендую видео .
С чего же начинается PowerShell ?

Чтобы начать пользоваться скриптами локально необходимо установить политику выполнения сценариев в  RemoteSigned
Для этого достаточно выполнить команду Set-ExecutionPolicy RemoteSigned

После этого можно спокойно пользоваться скриптами созданными локально

Пару слов о том как устроен PowerShell 

1.Каждая команда состоит из 2х частей
ГЛАГОЛ (Get , Set, Add, Remove, Invoke , Start , Stop и тд  полный список Get-Verb)+ СУЩЕСТВИТЕЛЬНОЕ (Command , Service, Process , PSDrive  , ExecutionPolicy  ) =   Get-Command

Более полную информацию о любом командлете (встроенная команда PowerShell ) можно получить

Get-Help -name Get-Command

Или

Get-Alias -?   

Полный список команд можно получить  командой

Get-Command -type cmdlet

About