Про PowerShell и SCCM::Журнал СА 03.2019
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

 Читать далее...

Событие  

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

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6225
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6931
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4213
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3006
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3806
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3819
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6315
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3166
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3459
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7276
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10645
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12364
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13998
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9123
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7077
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5387
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4614
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3426
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3154
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3399
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3024
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Про PowerShell и SCCM

Архив номеров / 2019 / Выпуск №03 (196) / Про PowerShell и SCCM

Рубрика: Администрирование /  Инструменты

Сергей Болдин СЕРГЕЙ БОЛДИН, системный администратор в энергетической компании, bsergey2@gmail.com

Про PowerShell и SCCM

Скрипты PowerShell позволяют упростить и автоматизировать многие операции при работе с Configuration Manager

Наиболее распространенный метод управления SCCM-сервером – с помощью графической консоли. В ней визуально отображаются компоненты и их содержимое, статусы и ошибки, удобно вносить изменения в конфигурации и создавать отчеты. Помимо этого, в Configuration Manager может применяться и PowerShell, который при помощи огромного количества команд [1] позволяет обращаться к реестру, Active Directory, WMI, файловой системе, операционной системе. Рассмотрим несколько примеров управления либо получения нужной информации с помощью командной строки.

Командлеты PowerShell разбиты на группы и пишутся через дефис. Чтобы получить какую-то информацию, нужно использовать Get-группу, для установки значений – Set-группу, для остановки – StopNew\Remove – для создания/удаления, Move – для переноса, Rename – для переименования, а для вывода информации – Out-группу.

Работать с командной строкой PowerShell можно как без сохранения результата, так и с сохранением. Чтобы в дальнейшем править имеющийся скрипт или применять его где-то, можно изначально создать пустой текстовый файл с помощью программы Блокнот, а затем сменить расширение с .txt на .ps1.

Первые действия

Сначала нужно подключиться PowerShell относительно сервера SCCM [2]. Для этого в консоли Configuration Manager на главной панели в первом меню выбираем пункт Connect via Windows PowerShell.

Другой способ подключения к SCCM – с помощью специального модуля, используя командлет Import-Module. Для этого нужно запустить консоль PowerShell от имени администратора, перейти в каталог установки сервера (в нашем случае CD ‘D:\SCCM2016\AdminConsole\bin’) и выполнить импорт:

Import-Module .\ConfigurationManager.psd1 –verbose

Еще вариант установить набор командлетов SCCM – запустить PowerShellCmdlets.msi.

Нам может понадобиться обращаться к Active Directory и получать в ответ нужные данные, поэтому сразу установим еще один необходимый модуль:

Add-WindowsFeature -Name "RSAT-AD-PowerShell" –IncludeAllSubFeature

Далее пробуем вывести список доступных командлетов:

Get-Command –Module ConfigurationManager | out-gridview

Затем проверим работоспособность справки, например:

help Remove-CMDevice –full

Также выведем информацию о сайте (Get-CMSite) и список доступных пакетов для установки (Get-CMPackage | ft name) (см. рис. 1), множество несложных конструкций можно найти здесь [3].

 Рисунок 1. Список доступных пакетов

Рисунок 1. Список доступных пакетов

Дальнейшие действия

После того как настроили работу командной строки, приведем сначала несложные примеры ее применения.

Пример 1. Удалить все компьютеры в SCCM, где в имени встречается сочетание букв DUD. За удаление компьютеров отвечает командлет remove-cmdevice:

Get-CMDevice | where {$_.name -like '*DUD*'} | Remove-CMDevice –Force

Пример 2. Вывести всех пользователей SCCM, фамилии которых начинаются на b. Делаем так:

Get-CMUSER | where {$_.name -like 'b*'} | ft name

Пример 3. Вывести пользователей Active Directory, названия их компьютеров и IP-адреса, ОС.

Get-ADComputer -filter * -SearchBase "OU=Computers,dc=dmk,dc=dc03,dc=corp" | Select-Object -Property Name, ipv4*, OperatingSystem

Далее наши действия усложняются, ведь PowerShell не ограничивается только наборами командлетов и ключей.

Например, в Configuration Manager необходимо разрешить доступ на чтение к пакету по его имени сотруднику техподдержки. В этом случае удобно применить переменную, присвоив ей значения массива данных, а потом ее использовать в другом месте. Переменная объявляется символом $.

$Name = Get-CMAccessAccount -PackageName "Office 2016"
Set-CMAccessAccount -PackageName $Name -Type User -UserName "KKK\Andreev.dd" -Access Read –Confirm .

Чтобы разрешить доступ к драйверам, загрузочным образам или приложениям, вместо ключа -PackageName можно использовать и такие ключи, как -Application-OperatingSystemImage-OperatingSystemInstaller-BootIm-ageId-DriverPackage и другие.

Пример 5. Вывести информацию о компьютерах. Здесь еще больше усложняется конструкция, и может она визуально выглядеть, как код какого-то языка программирования, то есть с объявлением переменных и присвоением им значений, функциями, циклами, комментариями, считыванием данных из файла, экспортом в файл, специальными отступами.

Откроем пустой файл в редакторе с расширением .ps, нажав на нем правой кнопкой мыши и выбрав из контекстного меню пункт Edit. Откроется программа PowerShell ISE (или открыть ее из меню Пуск), состоящая из трех частей: справа – список командлетов, сверху – поле для написания кода, а снизу – его результат (см. рис. 2).

Рисунок 2. Скриптовый редактор PowerShell

Рисунок 2. Скриптовый редактор PowerShell

В данном случае для получения данных о комплектующих компьютера нам необходимо обратиться к WMI [4]. Значение каждого WMI-запроса присваиваем новой переменной, параметр Computername необходим для получения данных не с локальной машины, а с помощью символа «|» и Select-Object перечисляются необходимые параметры дальнейшего вывода значений, например, так:

$HDD = Get-WmiObject Win32_DiskDrive –Computername $PC | Select-Object Size

Эту и остальные переменные ($PC, $OS, $Mem, $IP, $CPU) завернем в функцию с математическими преобразованиями и протащим ее через цикл Foreach(), получив на выходе данные со всех компьютеров:

function PS_Inv
{
Param ([Parameter(Mandatory=$False, Position=0, HelpMessage="ComputerName")][Object] $PC = $env:COMPUTERNAME)

PROCESS {
$OS = Get-WmiObject Win32_OperatingSystem -Computername $PC
$PCProperties = Get-WmiObject Win32_ComputerSystem -ComputerName $PC
$MemoryProperties = Get-WmiObject Win32_PhysicalMemory -ComputerName $PC
$HDD = Get-WmiObject Win32_DiskDrive | Select-Object Size
$CPU = Get-WmiObject Win32_Processor | Select-Object Name
"-------------------------"
""
"PC    : {0}" -f $OS.csname
"OS    : {0}" -f $OS.Caption  + $OS.CSDVersion
"Mem   : {0}" –f ([math]::round(($PCProperties.TotalPhysicalMemory/1024/1024),0))
"HDD   : {0}" -f ($HDD.Size/1GB)
"CPU   : {0}" -f $CPU.Name
} }
Clear-Host
PS_Inv $env:COMPUTERNAME
Get-ADcomputer -filter * | foreach {PS_Inv -PC $_.Name}

Результат можно увидеть на рис. 2.

Пример 6. Удалить у всех пользователей программы из магазина (при установке OC) Windows 10 Pro.

В этом случае воспользуемся встроенным функционалом работы со скриптами PowerShell [5]. Для этого заходим в меню Software Library → Overview → Scripts, жмем правой кнопкой мыши и выбираем пункт Create Script. Мастер запросит ввести имя, например Delete StoreApp, и сам скрипт, который выглядит так:

удалить 3D Builder - Get-AppxPackage -allusers *bing* | Remove-AppxPackage

Если же необходимо будет удалить все лишние приложения, то придется их перечислить и прогнать в цикле, например, так:

$Delete_Apps = @("*3DBuilder*" "*Advertising*" "*BingWeather*" "*Feedback*" "*GetStarted*" "*Maps*" "*Messaging*" "*People*" "*ZuneMusic*" "*ZuneVideo*")

ForEach($app in $Delete_Apps)
{
Get-AppxPackage -Name $app | Remove-AppxPackage -ErrorAction SilentlyContinue
}

Затем новый скрипт необходимо будет утвердить. Для этого нажимаем на нем правой кнопкой мыши, в меню выбираем пункт Approve/Deny, жмем кнопку Next, проверяем установленный по умолчанию вариант Approve, потом Next → Next → Close.

После этого переходим в Assets and Compliance → Overview → Device Collections. На группе компьютеров нажимаем правой кнопкой мыши и выбираем пункт Run Script. В появившемся окне выбираем нужный нам скрипт и ожидаем результат работы, а в это время можно наблюдать за процессом его выполнения (см. рис. 3).

Рисунок 3. Мониторинг работы скрипта

Рисунок 3. Мониторинг работы скрипта

Конечно же, мы рассмотрели только малую часть того, как можно получать, выводить и структурировать информацию. Помимо этого, с помощью PowerShell можно управлять сервером Configuration Manager, используя командлеты для создания точки распространения (Add-CMDistributionPoint), очистки статуса последнего развертывания (Clear-CMPxeDeployment), отключения программы в пакетах (Disable-CMProgram), включения последовательности задач (Enable-CMTaskSequence), экспорта пакета драйверов (Export-CMDriverPackage), получения/вывода данных о коллекциях устройств (Get-CMDeviceCollection), установки клиентской части (Install-CMClient), создания нового загрузочного образа (New-CMBootImage), удаления точки управления (Remove-CMManagementPoint), изменения настроек границ (Set-CMBoundary), старта распространения пакетов программ (Start-CMPackageDeployment), обновления статуса клиентов (Update-CMClientStatus) и многого другого.

Отладка

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

Чтобы в лог-файле появилась информация, нужно применить два командлета, один – Start-Transcript – для начала записи, другой – Stop-Transcript – для остановки. Для удобства нужно еще указать путь к файлу и можно еще запретить его перезапись.

На деле это будет выглядеть так:

Start-Transcript -Path D:\PS_Log\log1.txt -NoClobber
…Код скрипта…
Stop-Transcript

Пример лог-файла можно увидеть на рис. 4.

Рисунок 4. Пример лог-файла PowerShell

Рисунок 4. Пример лог-файла PowerShell

ПО для PowerShell

Помимо стандартной оболочки написания скрипта PowerShell и PowerShell ISE существуют и более расширенные, но небесплатные.

Например, PowerShell Studio 2019 [6], Ошибка! Недопустимый объект гиперссылки.Ошибка! Недопустимый объект гиперссылки.Ошибка! Недопустимый объект гиперссылки. [7]. Еще стоит упомянуть про утилиту PowerShell App Deployment Toolkit [8], которая интегрируется с SCCM и помогает распространять приложения.

Достоинства: расширяются знания по администрированию SCCM-сервера.

Недостатки: тратится время на изучение командлетов, а также тестирование и отладку.

Использование командной строки PowerShell в Configuration Manager дает системному администратору дополнительные навыки и более глубокое понимание тонкостей работы в администрировании данного сервера, сбора и обработки полученной информации.

  1. Описание PowerShell – https://docs.microsoft.com/en-us/previous-versions/system-center/powershell/system-center-2012-r2/jj821733(v%3dsc.20) .
  2. Подключение PowerShell к SCCM – https://msdn.microsoft.com/en-us/library/dn528996.aspx?f=255&MSPPError=-2147217396.
  3. Простые конструкции PowerShell – https://www.youtube.com/watch?v=OakNmNAmAsc.
  4. Описание командлетов для WMI – https://forsenergy.com/ru-ru/windowspowershellhelp/html/a4c499fa-deec-4c4b-b3fb-6e195d48a396.htmhttps://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Management/Get-WmiObject?view=powershell-5.1.
  5. Использование PowerShell в SCCM – https://docs.microsoft.com/ru-ru/sccm/apps/deploy-use/create-deploy-scripts#security-scopeshttps://www.systemcenterdudes.com/sccm-deploy-powershell-script/.
  6. Программа PowerShell Studio 2019 – https://www.sapien.com/software/powershell_studio.
  7. Программа PowerShell Plus – https://www.idera.com/productssolutions/freetools/powershellplus.
  8. Утилита PowerShell App Deployment Toolkit – https://psappdeploytoolkit.com/.
  9. Блоги по PowerShell и SCCM – https://smsagent.wordpress.com/page/11/https://www.sccmog.com/category/sccm/http://www.powertheshell.com/transcript/.

Ключевые слова: командлеты, ключи, параметры, командная строка, пример, конструкция, вывести, узнать, отобразить, PowerShell, SCCM-сервер, скрипт.


Комментарии
 
  02.07.2021 - 06:17 |  den.k.v

Пробовал по аналогии с этим: "удалить 3D Builder - Get-AppxPackage -allusers *bing* | Remove-AppxPackage".
Не удаляется приложение. Сценарий отрабатывает, ошибок нет, приложение не удаляется. Версия 2103

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru