Исследование и инвентаризация SharePoint с помощью PowerShell. Продолжение
Перезагрузка страницы с помощью PowerShell или с использованием кода
Если вы хотите за один раз привести в исходное состояние все страницы сайта, можете воспользоваться методом RevertAllDocument ContentStreams объекта SPWeb (см. код ниже).
$web = Get-SPWeb "http://yourServer/sites/yourSite/yourSubsite"
$web.RevertAllDocumentContentStreams()Перезагрузка всех страниц сайта
Чтобы перезагрузить отдельную страницу, можно использовать метод RevertContcntStream объекта SPFile. Пример для формы списка приведен в коде ниже.
$web = Get-SPWeb "http://yourServer/sites/yourSite/yourSubsite"
$file = $web.GetFile("http://yourServer/sites/yourSite/yourSubsite/Lists/yourList/newform.aspx")
$file.RevertContentStream()Перезагрузка формы списка
Обратите внимание: чтобы реализовать это изменение, вам не потребуется вызывать .Update () по каждому объекту; в этом отношении данное обновление отличается от большинства других обновлений объектов SharePoint (см. код ниже).
$file = $web.GetFile("http:// yourServer/sites/yourSite/yourSubsite /SitePages/home.aspx")
$file.RevertContentStream()
.UpdateQ не используетсяОбнаружение всех индивидуализированных или отключенных от шаблона страниц
## Select a source... Uncomment one and only one of the following sources:
## For all sites:
#Get-SPSite -Limit All | Get-SPWeb -Limit All |
## or for a single site collection
#Get-SPSite http://yourServer/sites/yourSite | Get-SPWeb -Limit All |
## or for a single web
Get-SPWeb http://yourServer/sites/yourSite |
## process one web at a time...
ForEach {
#
# Find all SPWeb level files
#
$_ |
Select -ExpandProperty Files |
Where { $_.Name.EndsWith(".aspx") -AND
$_.CustomizedPageStatus -eq "Customized" } |
Select @{l='Location'; e={'WebFile'}}, ServerRelativeUrl,
TimeCreated, TimeLastModified, ModifiedBy
#
# Find all Catalog files (116 = Master Page Gallery)
#
$_.GetCatalog(116).Items |
Select -ExpandProperty File |
Where { $_.CustomizedPageStatus -eq "Customized" } |
Select @{l='Location'; e={'MP Gallery'}}, ServerRelativeUrl,
TimeCreated, TimeLastModified, ModifiedBy
#
# Find all library files
#
$LibrariesToCheck = "Site Pages", "Pages"
$_ |
Select -ExpandProperty Lists |
where {$LibrariesToCheck -contains $_.Title} |
Select -ExpandProperty Items |
Select -ExpandProperty File |
Where { $_.Name.EndsWith(".aspx") -AND
$_.CustomizedPageStatus -eq "Customized" } |
Select @{l='Location'; e={'Library'}}, ServerRelativeUrl,
TimeCreated, TimeLastModified, ModifiedBy
#
# File all list forms
#
$w = $_; #save the web object for use in the next pipe
$_.Lists.forms |
foreach {$w.getfile($_.url)} |
Where { $_.CustomizedPageStatus -eq "Customized" } |
Select @{l='Location'; e={'List Form'}}, ServerRelativeUrl,
TimeCreated, TimeLastModified, ModifiedBy
} |
# Select a destination
Select * | Format-Table -AutoSize
#Out-GridView
#Export-Csv C:testListOfCustomizedPages.CSVСценарий обнаружения обновленных объектов
Теперь мы переходим к сценариям. Первый сценарий относится к категории «безопасных» (см. код выше). Он не предусматривает внесения каких-либо изменений. Но при всей его безопасности не забывайте, что при выполнении сценария в рабочей сети может снизиться ее производительность. Примечания к сценарию:
• С помощью данного сценария вы можете обрабатывать всю ферму, одну коллекцию сайтов или отдельный сайт.
• В каждом разделе сценария тестируется свойство файла .CustomizedPageStatus.
• В некоторых разделах тестируется расширение файла (.Name. EndsWith («.aspx»)).
• Доступ к каталогу главной страницы осуществляется с помощью команды Sweb.GetCatalog (116).
• В каждом разделе определяются пользовательские столбцы, гак чтобы мы могли объединять результаты в единый выходной файл, который может быть перенаправлен в Out-GridView, Select * Export-CSV и т. д.
• При извлечении форм списков необходимо выполнить дополнительную операцию с целью получения объекта файла.

Перезагрузка всех индивидуализированных или отсоединенных от шаблона страниц
А теперь мы переходим к опасному сценарию. При выполнении приведенного сценария результаты труда специалистов компьютерной графики и консультантов, оплаченные тысячами долларов, могут обратиться в ничто. Перед запуском этого сценария тщательно взвесьте все обстоятельства и, если возможно, выполняйте его на резервной копии фермы. Из соображений безопасности я закомментировал те строки, выполнение которых приводит к изменениям.
Приведенный в коде выше сценарий отличается от сценария в коде выше только тем, что в каждом его разделе имеется одна дополнительная строка. Эта строка вызывает метод RevertContentStream для каждого найденного индивидуализированного файла.
Примечания к сценарию:
• НЕ ЗАПУСКАЙТЕ ДАННЫЙ СЦЕНАРИЙ, ЕСЛИ ПРЕДВАРИТЕЛЬНО НЕ СНЯЛИ РЕЗЕРВНЫЕ КОПИИ СО ВСЕХ ИМЕЮЩИХСЯ ДАННЫХ!
• Проявляйте исключительную осторожность при возвращении к исходному состоянию файлов из Master Page Gallery ($_. GetCatalog (116)), ведь вы, вероятно, заплатили тысячи долларов создавшему их специалисту. Большая часть вашей работы по формированию фирменной символики выполняется на основе файлов из этой галереи.
## Select a source... Uncomment one and only one of the following sources
## For all sites:
#Get-SPSite -Limit All | Get-SPWeb -Limit All |
## or for a single web
#Get-SPSite http://maxsp2013wfe/sites/training | Get-SPWeb -Limit All |
## or for a single web
Get-SPWeb http://maxsp2013wfe/sites/training |
## process one web at a time...
ForEach {
#
# Find all SPWeb level files
#
$_ |
Select -ExpandProperty Files |
Where { $_.Name.EndsWith(".aspx") -AND
$_.CustomizedPageStatus -eq "Customized" } |
####### Next line does a "Reset to Site Definition"!
###foreach {$_.RevertContentStream(); $_} |
Select @{l='Location'; e={'WebFile'}}, ServerRelativeUrl,
TimeCreated, TimeLastModified, ModifiedBy
#
# Find all Catalog files (116 = Master Page Gallery)
#
$_.GetCatalog(116).Items |
Select -ExpandProperty File |
Where { $_.CustomizedPageStatus -eq "Customized" } |
####### Next line does a "Reset to Site Definition"!
###foreach {$_.RevertContentStream(); $_} |
Select @{l='Location'; e={'MP Gallery'}}, ServerRelativeUrl,
TimeCreated, TimeLastModified, ModifiedBy
#
# Find all library files
#
$LibrariesToCheck = "Site Pages", "Pages"
$_ |
Select -ExpandProperty Lists |
where {$LibrariesToCheck -contains $_.Title} |
Select -ExpandProperty Items |
Select -ExpandProperty File |
Where { $_.Name.EndsWith(".aspx") -AND
$_.CustomizedPageStatus -eq "Customized" } |
####### Next line does a "Reset to Site Definition"!
###foreach {$_.RevertContentStream(); $_} |
Select @{l='Location'; e={'Library'}}, ServerRelativeUrl,
TimeCreated, TimeLastModified, ModifiedBy
#
# File all list forms
#
$w = $_;
$_.Lists.forms |
foreach {$w.getfile($_.url)} |
Where { $_.CustomizedPageStatus -eq "Customized" } |
####### Next line does a "Reset to Site Definition"!
###foreach {$_.RevertContentStream(); $_} |
Select @{l='Location'; e={'List Form'}}, ServerRelativeUrl,
TimeCreated, TimeLastModified, ModifiedBy
} |
# Select a destination
Select * | Format-Table -AutoSize
#Out-GridView
#Export-Csv C:testListOfCustomizedPages.CSVОбновление объектов
• В приведенном выше коде сценарии строки, вносящие изменения, закомментированы. Удаляйте из них символы комментирования только после выполнения сценария из кода выше. Это поможет вам определить, что именно будет изменено.
• ВЫ ВЫПОЛНЯЕТЕ ЭТОТ СЦЕНАРИЙ НА СВОЙ СТРАХ И РИСК!
Итак, в этой статье речь шла об индивидуализированных страницах. Я рассказал о том, как обнаруживать их и возвращать в исходное состояние. В следующей статье мы продолжим поиск веб-частей,
Конечно же, разбираться во всею нюансах инвентаризации SharePoint с помощью PowerShell не так интересно, как придаваться азартным развлечениям. Именно поэтому я предлагаю вам на некоторое время отвлечься от темы данной статьи и заглянуть на cazino-eldorado-klub.com, где вы найдете топовые слоты с самыми крупными бонусами. Ну а после удачной игры вы сможете с новыми силами вернуться к изучению данного материала!