<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Powershell on Блог Агапова Максима</title><link>https://magapov.nmph.ru/tags/powershell/</link><description>Recent content in Powershell on Блог Агапова Максима</description><generator>Hugo</generator><language>ru</language><lastBuildDate>Mon, 31 Jan 2022 05:02:42 +0000</lastBuildDate><atom:link href="https://magapov.nmph.ru/tags/powershell/index.xml" rel="self" type="application/rss+xml"/><item><title>Access. Не возможно открыть базу данных, файл уже используется</title><link>https://magapov.nmph.ru/2022/01/access.html</link><pubDate>Tue, 11 Jan 2022 08:52:00 +0000</pubDate><guid>https://magapov.nmph.ru/2022/01/access.html</guid><description>&lt;div style="text-align: justify;">Посвящается бедолагам, кто любит ставить свежие обновления Office. В середине декабря, вышло обновление KB5002104 (Office 2013) и KB5002099 (Office 2016) которое закрывало &lt;a href="https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2021-42293" target="_blank">уязвимость&lt;/a> ядра при подключении к базе данных Microsoft Jet Red. Но имело одну известную проблему с совместным доступом к файлу базы данных Access на сетевом диске или DFS.&lt;/div>&lt;div style="text-align: justify;">Microsoft выпустили заплатку для &lt;a href="https://support.microsoft.com/en-us/topic/december-29-2021-update-for-office-2013-kb2965317-66fd5547-78e4-26da-d473-ca6aa295f26e" target="_blank">Office 2013&lt;/a>&amp;nbsp;KB2965317&amp;nbsp;и &lt;a href="https://support.microsoft.com/en-us/topic/databases-on-network-share-can-t-be-accessed-by-multiple-users-in-office-2016-kb4484211-88a51f7f-f7dd-2d9c-0b96-b7fca0867a4f" target="_blank">Office 2016&lt;/a>&amp;nbsp;KB4484211, но к несчастью, они решали проблему только для файлов расположенных в сети по UNC-путям. Статус выхода обновлений можно посмотреть &lt;a href="https://support.microsoft.com/en-us/office/error-in-access-when-opening-a-database-on-a-network-file-share-6cbc1560-62c2-46e7-9980-d079a46f5acc" target="_blank">тут&lt;/a>.&lt;/div>&lt;div style="text-align: justify;">Как счастливый обладатель файлового сервера на DFS, для меня единственным решением оказалось удалить обновления KB5002104 и KB5002099.&amp;nbsp;&lt;/div>&lt;span></description></item><item><title>SNMP. Собираем данные о принтерах</title><link>https://magapov.nmph.ru/2021/11/snmp.html</link><pubDate>Tue, 30 Nov 2021 11:49:00 +0000</pubDate><guid>https://magapov.nmph.ru/2021/11/snmp.html</guid><description>&lt;p>Пригодится в хозяйстве, без установки дополнительного ПО, библиотек и прочего.&lt;/p>&lt;p>Скрипт собирает данные по SNMP-протоколу о всех принтерах с сервера печати.&amp;nbsp;&lt;/p>
&lt;pre>&lt;code class="bash hljs">$printSRV = 'printsrv.kondor.ru'
$getPrinters = Get-Printer -ComputerName $printSRV | Where-Object {$_.Name -like "IN*"} | Select-Object Name, PortName
$result = @()
foreach ($printer in $getPrinters) {
 $SNMP = New-Object -ComObject olePrn.OleSNMP
 $SNMP.open($printer.PortName,'public',1,1000)
 $result += @(
 [PSCustomObject]@{'Имя принтера' = $printer.Name; 
 'Всего страниц напечатано' = $SNMP.get('.1.3.6.1.2.1.43.10.2.1.4.1.1');
 'Осталось копий' = $SNMP.Get('.1.3.6.1.2.1.43.11.1.1.9.1.1');
 'Серийный номер' = $SNMP.Get('.1.3.6.1.2.1.43.5.1.1.17.1');
 'Модель принтера' = $SNMP.Get('.1.3.6.1.4.1.11.2.3.9.4.2.1.1.3.1')})
 $SNMP.Close()
}
$result.GetEnumerator() | Sort-Object 'Всего страниц напечатано' &lt;/code>&lt;/pre>
&lt;p>Готовый скрипт можно взять тут&lt;/p></description></item><item><title>Intraservice. Работаем через API</title><link>https://magapov.nmph.ru/2020/12/intraservice-api.html</link><pubDate>Sat, 26 Dec 2020 11:34:00 +0000</pubDate><guid>https://magapov.nmph.ru/2020/12/intraservice-api.html</guid><description>&lt;p style="text-align: justify;">Попробуем парсить обращения из Intraservice при помощи Powershell. Пригодится, когда надо регулярно и быстро доставать инфу, имея на руках только номер обращения. Опишу основные действия, хотя это всё есть в официальной &lt;a href="https://intraservice.ru/upload/iblock/907/IntraService_API_v4_47.pdf" target="_blank">документации&lt;/a>. Мне пригодилось в части автоматизации составления документов на печать из данных, полученных из обращения.&amp;nbsp;&lt;/p>&lt;p>Сперва посмотрим, какие данные можем получить из заявки через API в формате json через веб-браузер. Для этого переходим по адресу сервера/api/task/номер_заявки&lt;span>&lt;/span>&lt;/p></description></item><item><title>SCCM. Дубликаты GUID</title><link>https://magapov.nmph.ru/2019/01/sccm-guid.html</link><pubDate>Fri, 11 Jan 2019 08:31:00 +0000</pubDate><guid>https://magapov.nmph.ru/2019/01/sccm-guid.html</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on">
&lt;div style="text-align: justify;">
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/Logo_SCCM.png" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="317" data-original-width="640" height="315" src="https://magapov.nmph.ru/img/Logo_SCCM.png" width="640" />&lt;/a>&lt;/div>
Столкнулся с проблемой, когда после развёртывания образов с Windows 7 при помощи клонирования, в консоли System Center Configuration Manager (SCCM) отображались не все машины. Оказалось, что под одним уникальным идентификатором (GUID), с которого снимался образ, кроются несколько компов. Чтобы решить проблему, надо сгенерировать новый GUID для всех проблемных машин.&lt;/div>
&lt;div style="text-align: justify;">
Запускаем &lt;span style="font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;">&lt;b>cmd&lt;/b>&lt;/span> под администратором и выполняем следующие шаги:&lt;/div>
&lt;pre>&lt;code class="bash hljs"># Останавливаем службу CCM-клиента
net stop ccmexec
# Удаляем файл конфигурации клиента
del c:\windows\SMSCFG.INI
# Удаляем сертификаты SCCM
certutil -delstore SMS SMS

# Удаляем клиент SCCM, ждём пока завершится процесс ccmsetup.exe (примерно 5 минут)
c:\windows\ccmsetup\ccmsetup.exe /uninstall
# Удаляем рабочий каталог
del c:\windows\ccm /q
# Удаляем ветки в реестре
reg delete "HKLM\SOFTWARE\Microsoft\CCMSetup" /f
reg delete "HKLM\SOFTWARE\Microsoft\SMS" /f

# Ставим клиент снова
C:\Windows\ccmsetup\ccmsetup.exe&lt;/code>&lt;/pre>
&lt;/div>

При установке ccm-клиента в логах C:\Windows\ccmsetup\Logs\ccmsetup.log может выпадать ошибка
&lt;pre>&lt;code class="bash hljs">ErrorMessages:
Setup was unable to compile the file DiscoveryStatus.mof&lt;/code>&lt;/pre>

Сталкивался с таким в 100% случаев при обновлении с Windows 8.1 на 10. Делаем
&lt;pre>&lt;code class="bash hljs">cd C:\Program Files\Microsoft Policy Platform
mofcomp ExtendedStatus.mof

# Ставим клиент снова
C:\Windows\ccmsetup\ccmsetup.exe&lt;/code>&lt;/pre></description></item><item><title>Автонастройка Outlook с использованием Office Customization Tool и GPO</title><link>https://magapov.nmph.ru/2018/04/outlook-office-customization-tool-gpo.html</link><pubDate>Mon, 16 Apr 2018 07:47:00 +0000</pubDate><guid>https://magapov.nmph.ru/2018/04/outlook-office-customization-tool-gpo.html</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on">
&lt;div style="text-align: justify;">
Решил довести до ума настройку почтового клиента для новых пользователей. В результате имеем полностью сконфигурированный профиль для подключения к почтовому серверу. Пользователю остается только ввести пароль. Берем в расчет то, что в AD профиле пользователя указан почтовый адрес. Еще потребуется учетная запись для доступа к LDAP (подойдет любая с правами Пользователь домена). Для создания файла автонастройки профиля Outlook в формате *.prf потребуется дистрибутив Office Professional.&lt;/div>
&lt;br />
Заходим в корень установки и запускаем &lt;br />
&lt;pre>&lt;code class="bash hljs">setup.exe \admin&lt;/code>&lt;/pre>
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/profile1.jpg" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="708" data-original-width="1239" height="364" src="https://magapov.nmph.ru/img/profile1.jpg" width="640" />&lt;/a>&lt;/div>
Переходим во вкладку Outlook&amp;gt;Профиль Outlook&lt;br />
Выставляем все как на скриншоте&lt;br />
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/profile2.jpg" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="708" data-original-width="1239" height="365" src="https://magapov.nmph.ru/img/profile2.jpg" width="640" />&lt;/a>&lt;/div>
Затем в Outlook&amp;gt;Добавление учетных записей&amp;gt;Добавить&lt;br />
Заполняем настройки подключения. Можно на скорую руку, в последствии все равно можно подправить в блокноте.&lt;br />
&lt;div class="separator" style="clear: both; text-align: center;">
&lt;a href="https://magapov.nmph.ru/img/profile3.jpg" style="margin-left: 1em; margin-right: 1em;">&lt;img border="0" data-original-height="708" data-original-width="1239" height="365" src="https://magapov.nmph.ru/img/profile3.jpg" width="640" />&lt;/a>&lt;/div>
Переходим в Outlook&amp;gt;Экспорт параметров и сохраняем *.prf&lt;br />
Открываем файл блокнотом, смотрим Section 5&lt;br />
&lt;pre>&lt;code class="bash hljs">[Account1]
UniqueService=No
AccountName=%username%
POP3Server=mail.ya.ru
SMTPServer=mail.ya.ru
POP3UserName=%mail%
EmailAddress=%mail%
POP3UseSPA=0
DisplayName=%cname%
ReplyEMailAddress=
SMTPUseAuth=1
SMTPAuthMethod=0
ConnectionType=0
LeaveOnServer=0x0
POP3UseSSL=1
ConnectionOID=MyConnection
POP3Port=995
ServerTimeOut=60
SMTPPort=465
SMTPSecureConnection=1&lt;/code>&lt;/pre>
Параметр SMTPSecureConnection - это галочка "Использовать шифрование" SSL. &lt;a href="https://stackoverflow.com/questions/6058431/outlook-prf-settings-for-tls-encrypted-connection" target="_blank">Возможные&lt;/a> параметры:&lt;br />
&lt;pre>&lt;code class="bash hljs">0 нет
1 для SSL2 для TLS
3 для Auto
&lt;/code>&lt;/pre>
Подробное описание всех &lt;a href="https://www.slipstick.com/outlook/config/understanding-microsoft-outlook-profile-file-prf/" target="_blank">параметров&lt;/a>&lt;br />
&lt;br />
&lt;div style="text-align: justify;">
Как видим, в файле использованы переменные %username%, %mail% и %cname%. Если %username% - это системная переменная окружения уже указана в системе, то %mail% и %cname% мы добавим в пользовательские переменные при помощи powershell скрипта. Я нашел скрипт, без использования модуля activedirectory, так как его импорт занимает много времени, да еще его надо как-то раскидать на все рабочие станции. Долго.&lt;/div>
&lt;div style="text-align: justify;">
Скрипт берет параметры mail и name учетной записи AD авторизованного пользователя и создает переменную %mail% и %cname%.&amp;nbsp;&lt;/div>
&lt;pre>&lt;code class="bash hljs">Clear-Host
$dn = New-Object System.DirectoryServices.DirectoryEntry ("LDAP://servername:389/dc=domain,dc=com","LDAPUser@domain.com","pa$$w0rd")
$user2Find = [Security.Principal.WindowsIdentity]::GetCurrent().Name -replace ".+\\"
$Rech = new-object System.DirectoryServices.DirectorySearcher($dn)
$rc = $Rech.filter = "((sAMAccountName=$user2Find))"
$rc = $Rech.SearchScope = "subtree"
$rc = $Rech.PropertiesToLoad.Add("mail");
$rc = $Rech.PropertiesToLoad.Add("name");
$theUser = $Rech.FindOne()
[Environment]::SetEnvironmentVariable("mail", $theUser.Properties["mail"] , "User")
[Environment]::SetEnvironmentVariable("cname", $theUser.Properties["name"] , "User")&lt;/code>&lt;/pre>
&lt;div style="text-align: justify;">
Через GPO добавляем logon-скрипт в Конфигурацию пользователя. Убеждаемся, что пользователь имеет права доступа к скрипту и групповыми политиками разрешен запуск powershell-скриптов. После перезагрузки, на рабочей станции запускаем powershell и проверяем что в переменной %mail% и %cname%&lt;/div>
&lt;pre>&lt;code class="bash hljs">$env:mail
agap0v@karelia-er.ru
$env:cname
Агапов Максим&lt;/code>&lt;/pre>
Вернемся к файлу автонастройки. Кладем его в&amp;nbsp; доступное место на файловом сервере и через &lt;a href="https://technet.microsoft.com/ru-ru/library/cc179062(office.12).aspx" target="_blank">ГПО &lt;/a>создаем запись в реестре. Пример для Office 2013&lt;br />
&lt;pre>&lt;code class="bash hljs">[HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Setup]
"ImportPRF"="\\\\servername\\install\\Office 2013\\karelia-er.prf"&lt;/code>&lt;/pre>
Таким образом, при первом запуске от пользователя, Outlook берёт настройки с файла и мы видим окно ввода пароля для учетной записи %mail%&lt;br />
&lt;br />
Если потребуется сбросить первоначальные настройки - надо удалить все параметры из &lt;br />
&lt;pre>&lt;code class="bash hljs">[HKCU\Software\Microsoft\Office\15.0\Outlook\Setup]&lt;/code>&lt;/pre>
&lt;br />
При помощи этой же утилиты, можно настраивать и другие продукты MS. Я использовал для &lt;a href="https://magapov.nmph.ru/2020/03/lync-client.html">тихой установки Lync Client 2013&lt;/a>&lt;/div>&lt;div dir="ltr" style="text-align: left;" trbidi="on">&lt;br />&lt;/div>&lt;div dir="ltr" style="text-align: left;" trbidi="on">Продолжаем совершенствоваться в работе с Outlook. &lt;a href="https://magapov.nmph.ru/2020/11/outlook-2013.html" target="_blank">Используем шаблоны&lt;/a>&lt;/div></description></item><item><title>Настройка Wake On Lan (WOL) при помощи Powershell</title><link>https://magapov.nmph.ru/2016/06/wake-on-lan-wol-powershell.html</link><pubDate>Wed, 29 Jun 2016 19:53:00 +0000</pubDate><guid>https://magapov.nmph.ru/2016/06/wake-on-lan-wol-powershell.html</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on">
Поговорим о том, как активировать Wake On Lan (WOL) в Windows (7;8,1;10).&lt;br />
Сперва проверим, активирован ли режим WOL.&lt;br />
Через GUI - Управление компьютером &amp;gt; Диспетчер устройств &amp;gt; Сетевые адаптеры&lt;br />
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;">&lt;tbody>
&lt;tr>&lt;td style="text-align: center;">&lt;a href="https://magapov.nmph.ru/img/WOL-0.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;">&lt;img border="0" height="579" src="https://magapov.nmph.ru/img/WOL-0.jpg" width="640" />&lt;/a>&lt;/td>&lt;/tr>
&lt;tr>&lt;td class="tr-caption" style="text-align: center;">Все сетевые адаптеры в системе&lt;br /></description></item></channel></rss>