Блог did5.ru

Про АйТи и около айтишные темы

Метка: powershell

[PowerShell] Загрузка файла в корень SharePoint

Комментариев нет

Для загрузки файла в корень портала SharePoint можно воспользоваться простым скриптом на PowerShell:

Add-PsSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
$fileBytes = [system.io.file]::ReadAllBytes("D:\test.txt");
$site = Get-SPSite "http://portal";
$site.RootWeb.Files.Add("test.txt", $fileBytes, $true);

Автор: did5

12 Сен 2014 в 12:12

Рубрика: PowerShell

Метки:

[PowerShell] Количество файлов в папке и результат в txt

2 комментария

Скрипт на PowerShell считает количество файлов в папке D:\test и результат записывает в текстовый файл с датой. Запускаю этот скрипт планировщиком заданий Windows один раз в день.

$date = Get-Date -Format "dd.MM.yyyy_HH:mm"
$pathFolder = "D:\test"
$fileCount = (Get-ChildItem $pathFolder).Count
$msg = $date + " " + $fileCount
Out-File "D:\testCounts.txt" -InputObject $msg -Append

Автор: did5

10 Июн 2014 в 9:05

Рубрика: PowerShell

Метки:

[PowerShell] Добавляем пользователей в группу AD

Один комментарий

Оперировать большим количеством пользователей в домене Active Directory непросто, а очень просто! С помощью командлетов Quest Software для PowerShell. Устанавливаем Active Roles Management Shell for Active Directory на свой админский компьютер, на контроллер домена ничего ставить не нужно. Подключаем библиотеку через консоль PowerShell командой:

Add-PSSnapin Quest.ActiveRoles.ADManagement

Скрипт PowerShell, который добавляет пользователей AD из контейнера Пользователи в группу Группа.Пользователей, но прогоняет всех через фильтр:

Add-QADGroupMember -Identity 'Группа.Пользователей' `
-Member (Get-QADUser -SearchRoot "OU=Пользователи,DC=mydomen,DC=ru" `
-LdapFilter "(objectCategory=person)(!userAccountControl:1.2.840.113556.1.4.803:=2)`
(title=*)" -SizeLimit 0 | `
Where-Object{!($_.MemberOf -eq "CN=Группа.Пользователей,OU=Группы,DC=mydomen,DC=ru")} `
| %{$_.DirectoryEntry.distinguishedName}) #-WhatIf

Скрипт фильтрует пользователей и добавляет группу только тех, кто не действительно пользователь (objectCategory=person), не заблокированный (!userAccountControl:1.2.840.113556.1.4.803:=2) и у которого заполнено поле Title — (title=*). Также скрипт проверяет, а не входит ли этот пользователь уже в группу, если входит, то пропускает его. Перед применением скрипта можно раскоментировать –WhatIf (убрать перед ним #), чтобы посмотреть на результат виртуально, без применения изменений в AD.

Автор: did5

13 Мар 2014 в 13:01

Рубрика: PowerShell,Windows

Метки:

[PowerShell] Прописываем имя и инициалы пользователей в MS Office

3 комментария

По умолчанию после установки Microsoft Office в параметрах не прописаны Имя пользователя и инициалы. В результате получается, что нельзя отследить кем был создан документ или кем он заблокирован в данный момент. Поэтому нужно задавать эти значения у каждого пользователя.

office username initials thumb1 [PowerShell] Прописываем имя и инициалы пользователей в MS Office

Имя пользователя и инициалы Office задаются в реестре Windows в ветке — HKCU\SOFTWARE\Microsoft\Office\Common\Userinfo, параметры UserName и UserInitials соответственно.

Написал скрипт на PowerShell, который применяется через групповые политики на всех пользователей домена при логоне:

$strName = $env:username
$strFilter = "(&(objectCategory=User)(samAccountName=$strName))"
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.Filter = $strFilter
$objPath = $objSearcher.FindOne()
$objUser = $objPath.GetDirectoryEntry()
$officename = $objUser.cn
$officeinitials = $objUser.initials
reg add "HKCU\SOFTWARE\Microsoft\Office\Common\Userinfo" /v UserName /t REG_SZ /d $officename /f
reg add "HKCU\SOFTWARE\Microsoft\Office\Common\Userinfo" /v UserInitials /t REG_SZ /d $officeinitials /f

Теперь у всех пользователей в Office прописаны их ФИО и инициалы.

Автор: did5

07 Мар 2014 в 11:01

Рубрика: Office,PowerShell

Метки: ,

[PowerShell] Собираем информацию о принтерах

Комментариев нет

В организации есть несколько принт-серверов на платформе Windows Server 2003 SP2 и 2008R2, необходимо получить список этих принтеров с определенными полями в файле, чтобы можно было опрашивать эти принтеры по протоколу SNMP. Такой список получить достаточно просто при помощи PowerShell. Набросал такой вот скрипт:

$terminals = ("ps1.company.ru", "ps2.company.ru")
$terminals | ForEach-Object { Get-WmiObject -class Win32_Printer -computer $terminals `
| Where-Object {$_.ShareName -ne $null} `
| select Name, ShareName, PortName, Location, Comment, SystemName, DriverName } `
| Export-Csv -NoClobber -Encoding utf8 -Path d:\printers.csv

Скрипт опрашивает два сервера ps1 и ps2, сервера можно добавлять или удалять. Чтобы не выводить в списке разные виртуальные принтеры, скрипт проверяет заполнено ли поле ShareName. У всех принтеров в организации это поле заполнено, остальные принтеры пропускаем. В результате получился файл CVS, с которые можно делать все что угодно.

Автор: did5

07 Мар 2014 в 9:41

Рубрика: PowerShell,Windows

Метки:

Установка PowerShell 2.0 на Windows Server 2003

Один комментарий

Понадобилось мне тут запустить скрипт на PowerShell для сбора статистики на группе серверов. Все бы хорошо, но один из серверов ну очень старый, еще на Windows Server 2003 SP2. Как оказалось, обновления на этот сервер не ставились с момента его установки, поэтому про PowerShell он и не знает. Пришлось учить Windows Server 2003 SP2 павершелу, вот что для этого нужно:

1. Microsoft .NET Framework 2.0 Service Pack 2

2. Update for Windows Server 2003 (KB968930)

Скачал, установил оба обновления, перезагрузил сервер, запустил PowerShell. Теперь есть PowerShell!

Но чтобы полноценно пользоваться WMI из PowerShell нужно доустановить WMI Windows Installer провайдер, для этого понадобится дистрибутив Windows Server 2003, а точнее папку I386. Далее через Панель управления открывает панель Add Remove Programs –> Add/Remove Windows Components, дальше как на скриншоте.

wmi server2003 enable thumb Установка PowerShell 2.0 на Windows Server 2003

Автор: did5

30 Янв 2014 в 16:11

Рубрика: Server

Метки: ,

Ошибка Root element is missing при запуске PowerGUI

Комментариев нет

root elementi is missing thumb Ошибка Root element is missing при запуске PowerGUIПри запуске PowerGUI Administrative Console на Windows 7 x64 появляется ошибка: Root element is missing. На этом запуск программы прерывается.

Решение:

Нужно полностью удалить каталог —

C:\Users\<user>\AppData\Local\Quest Software и снова запустить PowerGUI. Перезагрузка не нужна. Если не сработало, то можно еще удалить каталог — C:\Users\<user>\AppData\Roaming\Quest Software.

Автор: did5

02 Дек 2013 в 11:47

Рубрика: PowerShell,Windows

Метки: , ,

[SharePoint2010] Резервное копирование

Комментариев нет

SP2010 Foundation logo1 [SharePoint2010] Резервное копированиеПро то, что резервное копирование любого сервиса должно работать как швейцарские часы, я даже говорить не буду, т.к. это должно быть понятно любому человеку непосредственно связанному с IT. SharePoint 2010 не исключение, поэтому сегодня я расскажу — как настроить автоматическое резервное копирование SharePoint 2010.

Читать полностью »

Автор: did5

30 мая 2013 в 11:48

Рубрика: PowerShell,Sharepoint

Метки: , ,

[SharePoint2010] The local farm is not accessible. Cmdlets with FeatureDependencyId are not registered

Комментариев нет

При попытке запустить SharePoint 2010 Management Shell вылезло сообщение — «The local farm is not accessible. Cmdlets with FeatureDependencyId are not registered», и соответственно не работают командлеты PowerShell для SharePoint 2010.

the local farm is accessible sharepoint 1 thumb [SharePoint2010] The local farm is not accessible. Cmdlets with FeatureDependencyId are not registered.

При траблшутинге выяснилось, что ошибка появилась после установки PowerShell 3.0 на сервер Server 2008 R2, а точнее после установки обновления KB2506143. Все дело в том, что SharePoint 2010 использует .NET Framework 3.5, а для PowerShell 3.0 нужен NET Framework 4.0, который SharePoint не поддерживает. Решение простое, нужно для SharePoint 2010 Managment Shell запускать PowerShell в режиме 2.0. А как это сделать расскажу ниже…

Читать полностью »

Автор: did5

28 мая 2013 в 16:50

Рубрика: PowerShell,Sharepoint

Метки: ,

[PowerShell] Экспорт списка учетных записей Active Directory в CSV-файл

2 комментария

Наводить порядок в Active Directory удобнее через MS Excel. Я написал скрипт на PowerShell, который все учетные записи пользователей из определенного контейнера в AD экспортирует в CSV-файл.

#
# Список всех пользователей в контейнере Отдел777 в Active Directory и экспорт их в CSV файл
#
#http://did5.ru
#16.01.2012
#
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = "LDAP://ou=Отдел777,ou=Структура,dc=contoso,dc=com"
$objSearcher.Filter = "(&(objectCategory=person)(!userAccountControl:1.2.840.113556.1.4.803:=2))"
$users = $objSearcher.FindAll()
# Количество учетных записей
$users.Count
$users | ForEach-Object {
   $user = $_.Properties
   New-Object PsObject -Property @{
   Должность = [string]$user.description
   Отдел = [string]$user.department
   Табельный = [string]$user.userprincipalname
   Телефон = [string]$user.telephonenumber
   Комната = [string]$user.physicaldeliveryofficename
   ФИО = [string]$user.cn
    }
} | Export-Csv -NoClobber -Encoding utf8 -Path  d:\list_user.csv

Автор: did5

16 Янв 2012 в 15:28

Рубрика: PowerShell

Метки: