Архив рубрики: Windows

Hyper-V — виртуальная машина от Майкрософт

Hyper-V — виртуальная машина от Майкрософт, созданная на основе гипервизора, с аппаратной поддержкой виртуализации для 64 битных систем. Ранее гипервизор использовался только в серверных операционных системах Microsoft. Читать

Методика исправления ошибки 0xc0000001 Windows 8

Методика исправления ошибки 0xc0000001 Windows 8

Восьмерка, конечно, уступает в популярности некоторым другим версиям операционной системы Windows от Microsoft, тем не менее, ею пользуются многие люди, особенно, владельцы ноутбуков. Естественно, что и на ней присутствуют некоторые осложнения. Например, ошибка 0xc0000001 Windows.  Сложности добавляет тот факт, что Восьмерка кардинально отличается от других вариантов Виндовс, поэтому некоторые люди просто не знают, как поступать в этом случае. Читать

Код ошибки 0x80070570 – как избавиться?

Большинство пользователей давно перешли с устаревших операционок. Сегодня массовым спросом пользуется семерка и десятка. Но это не избавляет людей от возникновения различных проблем. Например, многие могут столкнуться с кодом ошибки 0x80070570. Самое обидное, что данная неприятность появляется на важнейших этапах загрузки этих систем, поэтому может стать причиной того, что пользователь вынужден будет остаться на более старых аналогах ОС от компании Microsoft.

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

Запись действий пользователя.

Когда нужна быстрая документация проблемы или последовательности действий пользователя подойдет встроенная в Windows  с 7 версии   простая, но очень полезная утилита.

Самый простой способ найти «Средство записи действия пользователя» ввести psr.exe в строке поиска.

Читать

Самый главный конфигурационный файл Apache

Самый главный конфигурационный файл Apache – это httpd.conf

В нем хранится вся конфигурация Apache. Шаг влево, шаг в право и Apache не запустится. Если мы что-то изменили в этом файле, то требуется перезапуск сервера.

Раньше, в Apache 1.3 все настройки хранились в файле httpd.conf, сейчас в версии Apache 2, часть настроек вынесли в папку  /conf/extra. Теперь появилась возможность прописывать все  не в одном файле, а в разных и подключается все с помощью директивы include.

# — (решетки) – это однострочные комментарии. Все, что начинается с решетки и до конца строки – это комментарии.

Чтобы подключить что-нибудь достаточно расскомментировать, следовательно убрать решетку, а если мы хотим что-нибудь отключить, то опять в самом начале строки ставим  #.

Читать

Полезные скрипты для 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 'contosoadministrator' -language 1033 -Template 'STS#0'

New-SPSite 'http://bi.contoso.com' -HostHeaderWebApplication (Get-SPWebApplication 'http://london') -Name 'BI' -Description 'BI site' -OwnerAlias 'contosoadministrator' -language 1033 -Template 'BICenterSite#0'
Доступные шаблоны можно посмотреть командой

Get-SPWebTemplate

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

Список установленных компонентов
Get-SPFeature -Limit ALL | Where-Object {$_.Scope -eq «SITE»}
#Поиск по названию
Get-SPFeature -Limit ALL | Where-Object {$_.DisplayName -like «*Access*»}
Список доступных шаблонов сайтов
Get-SPWebTemplate | where {$_.Title -match «business»}
Список запущенных служб
Get-Service | Where-Object {$_.DisplayName -like «Sharep*»}
Теущая версия фермы с
(get-spfarm).buildversion
Конвертация сайтов на основе пути в сайты на основе имени
Backup-SPSite http://server_name/sites/site_name -Path C:Backupsite_name.bak
Remove-SPSite –Identity http://server_name/sites/site_name –Confirm:$False 
Restore-SPSite http://www.example.com -Path C:Backupsite_name.bak -HostHeaderWebApplication http://server_name
Создать новый сайт
New-SPWeb -Url http://portal.contoso.com/TestSite -AddToQuickLaunch -AddToTopNav -Name TestSite -Template STS#0 -UseParentTopNav
Создать список на сайте
$w= Get-SPWeb  -Identity http://portal.contoso.com/TestSite  
$w.Lists.Add(«Project Tasks»,«» , «Tasks»)
Экспорт сайтов, библиотек, списков
Export-SPWeb -identity «http://dev.contoso.com» –path «C:Export_dev_contoso.cmp» -includeUserSecurity –Force
Export-SPWeb -identity «http://dev.contoso.com» -ItemUrl «/Contracts» -path «C:Export_Contracts.cmp» -includeUserSecurity –Force
Импорт сайтов, библиотек, списков из cmp файла  (Content migration package)
Import-SPWeb -identity «http://dev.contoso.com» -path «c:Export_contracts.cmp»
Сделать Бэкап фермы, сайта
Backup-SPFarm -BackupMethod Full -Directory E:FarmBackup2016_09_01 –Force
Backup-SPSite http://london/sites/demosite -Path C:Backupsite_name.bak
Восстановить удаленный сайт
Get-SPDeletedSite | select Path , siteid
Restore-SpDeletedSite –Identity 4bff0c0e-4d56-4fec-8174-a60a16daeaac)
Включить расширенное логирование
Set-SPLogLevel -TraceSeverity VerboseEx -EventSeverity Verbose
Merge-SPLogFile -Path «C:FarmMergedLog.log» -Overwrite -StartTime (Get-Date).AddMinutes(-15)
#детальное описание ошибки по correlation ID
Merge-SPlogfile –Path c:log.log –Correlation ba05e237-0680-403a-b9f6-e49f96ac55d4
Отключаем расширенное логирование
Clear-SPLogLevel
Список баз контента 
GetSPDatabase | ?{$_.typelike«*business*»}

Подготовить базу для обновления 
(Get-SPDatabase | ?{$_.type -like «*business*»}).Provision()

Проверить базу данных контента на ошибки
Test-SPContentDatabase -name WSS_Content –webapplication http://london
Обновление конфигурации  исправление ошибок обновления
1. Запускать в командной строке под администратором
2. Меняем путь на  C:Program FilesCommon Filesmicrosoft sharedWeb Server Extensions15BIN
3. Для исправления ошибок  патчей  PSConfig.exe -cmd upgrade -inplace b2b -force -cmd applicationcontent -install -cmd installfeatures
Создать список и элемент списка
$w = Get-SPWeb «http://portal.contoso.com/Testsite»
$w.ListTemplates | Select name , type , type_client, Description
$l = $w.Lists.Add(«Project A Tasks» , «» , «Tasks»)
$l = $w.Lists.Add(«Test Survey» , «» , «Survey»)
$list = $w.Lists[«Project A Tasks»]
$newItem = $list.AddItem()
$newItem[«Title»] = «Task 4»
$newItem[«Due Date»] = «6/20/2015 11:27 AM»
$newItem[«% Complete»] = 500
$newItem.Update()
Подробно как изменять столбцы любого типа на сайте МС
#список столбцов
$l.Fields | select Title , Type , StaticName
Создать библиотеку и загрузить файл
$DocLibName = «Files 2016»
$lib = $w.Lists.Add(
$DocLibName,«», $w.ListTemplates[«Document Library»])
$file = Get-ChildItem «C:Sharedday2.docx»
$folder = $w.GetFolder($DocLibName )
$files = $folder.Files
$timestamp = Get-Date -UFormat «%Y%m%d_%H%M%S»
$fileName = [io.path]::GetFileNameWithoutExtension($file)
$ext = [io.path]::GetExtension($file)
#имя файла должно быть уникальным
$f =$files.Add($DocLibName+ «/» + $fileName+ «_»+$timestamp+$ext,$file.OpenRead(),$false)
#обновить значение поля
$f.Properties[«TestColumn»] = «ABC»
$f.Update()
Update()
#Обновялет элемент в базе данных
#Обновляет поля «Modified» и «Modified by» .
#Создает новую версию
Systemupdate()
#Обновялет элемент в базе данных
#НЕ обновляет поля «Modified» и «Modified by» .
#НЕ создает новую версию
#Запускает системные обработчики
UpdateOverwriteVersion()
#Обновляет элемент но не созлает новую версию.
#Обновялет поля  «Modified» и «Modified by» .
Загрузить файл с удаленной машины
Добавить столбец в список и  представление  
$w = Get-SPWeb «http://portal.contoso.com/Testsite»
$DocLibName = «Files 2016»
$lib = $w.Lists[$DocLibName]
$spFieldType = [Microsoft.SharePoint.SPFieldType]::Text
$lib.Fields.Add(«TestColumn»,$spFieldType,$false)
$lib.Update()
$v = $lib.Views[«All Documents»]
$spField = $lib.Fields[«TestColumn2»]
$v.ViewFields.Add($spField)
$v.Update()
Создать группу на сайте  
$groupName = «Files 2016 Visitors»
#создаем группу на сайте
$group  = $w.SiteGroups.Add($groupName, $w.EnsureUser(«contosoadministrator») , $w.EnsureUser(«contosoadministrator») , «Read Only Group»)
Выдать уникальные права на  сайт,  библиотеку или список  
#прекратить наследование прав
$w.BreakRoleInheritance($true)
$lib.BreakRoleInheritance($true)
$list.BreakRoleInheritance($true)
#создаем назначение ролей, связываем группу и роль
$roleAssignment = new-object Microsoft.SharePoint.SPRoleAssignment($group
# $w.RoleDefinitions | select name, description,basepermissions
$roleDefinition = $w.RoleDefinitions[«Read»]
#добавляем роль к назначению
$roleAssignment.RoleDefinitionBindings.Add($roleDefinition)
#Выдаем права например на сайт или на библиотеку
$w.RoleAssignments.Add($roleAssignment)
$lib.RoleAssignments.Add($roleAssignment)
$list.RoleAssignments.Add($roleAssignment)
$lib.Update()
$list.Update()
Пример готовой функции
Добавить пользователя в группу   
$user=$w.EnsureUser(«contosochen»)
#Get group object
$group=$w.SiteGroups[$groupName]
#add user to group
$group.AddUser($user)
#Получить список пользователей из AD
Import-Module activedirectory
Get-ADUser -Filter {Enabled -eq «True»} | Select-Object SamAccountName,Name,Surname,GivenName | Format-Table
Обновить поле списка
$w = Get-SPWeb «https://sp»
$l = $w.Lists[«План по оцифровке»]
foreach($item in $l.Items) { 
$item[«Дата выполнения»] = $item[«Дата выдачи»]  
$item.Update()}

Получить элементы списка
$w = Get-SPWeb «http://portal.contoso.com/Testsite»
$l = $w.Lists[«Project A Tasks»]
foreach($item in $l.Items) {«Title: {0}  Due date: {1} , Created: {2} «  -f $item[«Title»] , $item[«Due Date»] ,  $item[«Created By»] }

$L.Items  | select  Title, @{Label=”DueDate”;Expression={$_[“DueDate”]}} , @{Label=”PercentComplete”;Expression={$_[“PercentComplete”]}} |  Export-Csv -path $path

#Экспортировать  элементы списка в CSV
$path =»C:SharedTasks_export.csv»
$list = $w.Lists[«Project A Tasks»]
$list.Items | select Title , «Due Date» |  Export-Csv -path $path

Получить элементы списка используя CAML запрос
If ((Get-PSSnapIn -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null
{ Add-PSSnapIn -Name Microsoft.SharePoint.PowerShell }
$w = Get-SPWeb «http://portal.contoso.com/Testsite»
$l = $w.Lists[«Project A Tasks»]
$query = New-Object Microsoft.SharePoint.SPQuery
$query.Query  = «0.05«
$query.ViewFields = ««
$query.ViewAttributes = «Scope=»»Recursive»»»
$query.RowLimit = 0
$ListItems = $l.GetItems( $query)
foreach($item in $ListItems) {«Title: {0}  Due date: {1} , Priority: {2}  ,PercentComplete:{3} ,   Editor: {4}»  -f $item[«Title»] , $item[«Due Date»] ,  $item[«Priority»] ,   $item[«PercentComplete»] ,  $item[«Editor»]   }
Для подготовки CAML запроса можно использовать утилиту SP CAML Query Helper 2013
Загрузить список из  csv файла
$w = Get-SPWeb «http://portal.contoso.com/Testsite»
$list  = $w.Lists[«Project A Tasks»]
$tblData = Import-CSV «C:SharedTasks.csv»
foreach ($row in $tblData)
{
   «Adding entry for «+$row.«Title».ToString()
   $newItem = $list.AddItem()
   $newItem[«Title»] = $row.«Title».ToString()
   $newItem[«Due Date»] = $row.«Due Date».ToString()
   $newItem[«% Complete»] = $row.«PercentComplete».ToString()
   $newItem.Update()
}

#Получить таблицу из базы
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = «Server=$server;Database=$database;Integrated Security=True»
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = » sp_helpdb»
$SqlCmd.Connection = $SqlConnection
$SqlCmd.CommandTimeout = 0
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$tblData = $DataSet.Tables[0]

Как сохранить элемент в таблицу

Удалить элементы списка
$w = Get-SPWeb «http://portal.contoso.com/Testsite»
$l = $w.Lists[«Project A Tasks»]
$query = New-Object Microsoft.SharePoint.SPQuery
$query.Query  = ««
$query.ViewFields = ««
$query.ViewAttributes = «Scope=»»Recursive»»»
$query.RowLimit = 0
$ListItems = $l.GetItems( $query)
for ($x=$ListItems.Count1;$x -ge 0; $x)
{
  Write-Host(«DELETED: « + $listItems[$x].Item(«ID»))
  $listItems[$x].Delete()
}
Реактивировать RBS 
$cdb = Get-SPContentDatabase –WebApplication http://sharepoint/
$rbss = $cdb[0].RemoteBlobStorageSettings
$rbss.Enable()

Управление оповещениями 
Подробно тут
Настройка собственных шаблонов оповещений

$SPweb = Get-SPWeb «https://sharepoint.com»

foreach($alert in $SPweb.Alerts) {if ($alert.Title -eq 'Документы оповещения') {write-host $alert.Title}}

$SPweb.Alerts | Export-Csv C:temp2alerts.csv -encoding utf8

    $SPlist = $SPweb.lists[«Документы»]
    $IDS = «»
    foreach($alert in $spweb.alerts)
    {
        if($alert.ListID -eq $SPlist.ID -and $alert.Title -eq 'Документы')
        {
        $IDS += $alert.ID.tostring() + «|»
        }
        write-host -nonewline «*»
    }
    write-host «deleting…»
    foreach($s in $IDS.Split(«|»))
    {
    write-host -nonewline «*»
    write-host [GUID]$s
   # $spweb.alerts.delete([GUID]$s)
    }

Найти списки с анонимным доступом 
$site = Get-SPSite «https://sp»
foreach ($web in $site.AllWebs) {foreach($list in $web.lists) {if ($web.AnonymousState.tostring() -eq «Enabled» -and $list.AnonymousPermMask.tostring() -ne «OpenWeb» -and $list.AnonymousPermMask.tostring() -ne «EmptyMask» -and $list.Title -ne «TaxonomyHiddenList» ) {write-host $web.Url ,$list.Title , $list.AnonymousPermMask.tostring() ,$web.AnonymousState.tostring(),$web.AllowAnonymousAccess.tostring() ,$web.AnonymousPermMask64.tostring()  }}}

Проверить SSID пользователя  
$domain = «domain»;
$user_name = «user1»;
$application = «https://sharepoint.com»;

$userID = $domain + «» + $user_name;
$SPuser = Get-SPUser -Identity $userID -Web $application
$objUser = New-Object System.Security.Principal.NTAccount($domain, $user_name) 
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier]) 

Write-Host '———————————-'

$SPuser.sid
$strSID.Value

Создать группу на основе группы AD  

$SiteCollection = "http://site/sitecollection"
$ADGroupName
= "domainadgroup"
$SPGroupName
= "My Test Group A1"
$SPGroupDescription
= "Test Group A1’s Description"
$SPGroupPermission
= "Read"

#Start of script
$site
= Get-SPWeb $SiteCollection

#Check if the group already exists
if ($site.SiteGroups[$SPGroupName] -eq $null)
{

#Ensure Group/User is part of site collection users beforehand and add them if needed
$site
.EnsureUser($ADGroupName)

# Get the AD Group/User in a format that PowerShell can use otherwise there will be a string error
$ADGroupSPFriendly
= $site | Get-SPUser $ADGroupName

#Create the SharePoint Group – Group Name, Group Owner, Group Member, Group Description. Can’t add AD group yet…
$NewSPGroup
= $site.SiteGroups.Add($SPGroupName, $site.CurrentUser, $site.CurrentUser, $SPGroupDescription)
$site
.AssociatedGroups.Add($site.SiteGroups[$SPGroupName]);
$NewSPAccount
= $site.SiteGroups[$SPGroupName]

#Assign the Group permission
$GroupAssignment
= New-Object Microsoft.SharePoint.SPRoleAssignment($NewSPAccount)
$GroupRole
= $site.RoleDefinitions[$SPGroupPermission]
$GroupAssignment
.RoleDefinitionBindings.Add($GroupRole)
$site
.RoleAssignments.Add($GroupAssignment)

#Add the AD Group/User to the group, can’t be done during group creation when using Powershell otherwise errors so is done now.
Set-SPUser -Identity $ADGroupSPFriendly -Web $SiteCollection -Group $SPGroupName
}
$site
.Dispose()
}

Автор: Roman D
Дата публикации: 2016-09-08T07:16:00.001-07:00