THE-IT-FILES
se non è vero, è ben trovato
среда, 6 апреля 2022 г.
BSS Plugin - установка возможна только при удалении предыдущей версии
Скорее всего был некорректно удален BSS Plugin. Чтобы плагин можно было снова установить удалите ветку реестра HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\BSS LLC, а также папку %userprofile%\AppData\Roaming\BSS.
четверг, 6 февраля 2020 г.
[Powershell] Пробежаться по работающим компам в домене и выполнить удаленную команду
Иногда, работая в Powershell, требуется по-быстрому "пройтись" по компьютерам в домене и выполнить какой-нибудь удаленный код.
Связка с фирменной утилитой psexec здесь прекрасно работает, если недоступно удаленное управление машинами через Powershell, к тому же через psexec выполнение команд происходит намного быстрее, ввиду совершенно другой технологии подключения к удаленному компьютеру.
Например, для очистки DNS-кэша удаленных компьютеров я использую такой код.
cls
$comps = Get-ADComputer -Filter {name -like '*-W*'} | sort name
$comps | % {
$cn = $_.dnshostname
$count = 1
$timeout = 1000
$filter = 'Address="{0}" and Timeout={1}' -f $cn, $timeout
if (Get-WmiObject -Class Win32_PingStatus -Filter $filter) {
Write-Host $cn -ForegroundColor Magenta
cmd /c "psexec -s -d \\$cn ipconfig /flushdns" | out-null
}
}
Для обновления групповых политик соответственно меняем строчку на
cmd /c "psexec -s -d \\$cn gpupdate /force" | out-null
и так далее, возможны любые команды.
Обратите внимание, что перед выполнением команды сначала проверяется доступность компьютера с помощью WMI пинг-запроса.
Связка с фирменной утилитой psexec здесь прекрасно работает, если недоступно удаленное управление машинами через Powershell, к тому же через psexec выполнение команд происходит намного быстрее, ввиду совершенно другой технологии подключения к удаленному компьютеру.
Например, для очистки DNS-кэша удаленных компьютеров я использую такой код.
cls
$comps = Get-ADComputer -Filter {name -like '*-W*'} | sort name
$comps | % {
$cn = $_.dnshostname
$count = 1
$timeout = 1000
$filter = 'Address="{0}" and Timeout={1}' -f $cn, $timeout
if (Get-WmiObject -Class Win32_PingStatus -Filter $filter) {
Write-Host $cn -ForegroundColor Magenta
cmd /c "psexec -s -d \\$cn ipconfig /flushdns" | out-null
}
}
Для обновления групповых политик соответственно меняем строчку на
cmd /c "psexec -s -d \\$cn gpupdate /force" | out-null
и так далее, возможны любые команды.
Обратите внимание, что перед выполнением команды сначала проверяется доступность компьютера с помощью WMI пинг-запроса.
вторник, 4 февраля 2020 г.
[Error] Ошибка Access Denied при выполнении командлета New-MailboxExportRequest
Команда New-MailboxExportRequest требует в качестве параметра FilePath указывать имя расшаренной сетевой папки. Для избежания ошибки необходимо дать права Full Access на сетевой доступ к папке, а также NTFS-права следующим участникам:
Exchange Trusted Subsystem - если папка находится не на сервере Exchange,
SYSTEM и Exchange Trusted Subsystem - если папка находится на самом сервере Exchange.
Exchange Trusted Subsystem - если папка находится не на сервере Exchange,
SYSTEM и Exchange Trusted Subsystem - если папка находится на самом сервере Exchange.
среда, 25 апреля 2018 г.
[ERROR] Не открывается оснастка локальной групповой политики
На свежеустановленном сервере Windows Server 2016 не открывается оснастка локальной групповой политики.
Для решения данной проблемы мне помогло удаление файла
C:\Windows\System32\GroupPolicy\Machine\Registry.pol.
Справедливости ради необходимо отметить, что сервер вываливался в BSOD во время установки драйверов, и возможно этот файл был поврежден.
Для решения данной проблемы мне помогло удаление файла
C:\Windows\System32\GroupPolicy\Machine\Registry.pol.
Справедливости ради необходимо отметить, что сервер вываливался в BSOD во время установки драйверов, и возможно этот файл был поврежден.
четверг, 2 ноября 2017 г.
Проблема применения групповой политики и группа Authenticated Users
Недавно столкнулся с проблемой, когда групповая политика, не раз применявшаяся до этого, перестала полностью обрабатываться, и только некоторые ее параметры применялись, при этом в диагностике RSOP эта политика не отображалась.
Никаких сообщений об ошибках применения параметров в журнале событий я также не нашел. Опытным путем и перебором различных вариантов было выявлено, что необходимо в свойства делегирования групповой политики добавить группу Authenticated Users (право на чтение, Read), которая там отсутствовала по причине того, что в фильтрации участников безопасности (Security Filtering) стояла кастомная доменная группа.
Также, после последующей гуглёжки, была найдена статья под названием "Who broke my user GPOs", подробно описывающая данную проблему, вызванную, оказывается, обновлением от Microsoft (lol).
Никаких сообщений об ошибках применения параметров в журнале событий я также не нашел. Опытным путем и перебором различных вариантов было выявлено, что необходимо в свойства делегирования групповой политики добавить группу Authenticated Users (право на чтение, Read), которая там отсутствовала по причине того, что в фильтрации участников безопасности (Security Filtering) стояла кастомная доменная группа.
Также, после последующей гуглёжки, была найдена статья под названием "Who broke my user GPOs", подробно описывающая данную проблему, вызванную, оказывается, обновлением от Microsoft (lol).
четверг, 26 октября 2017 г.
[Exchange] Как запретить техподдержке создавать почтовые ящики в определенных базах
Для начала вспомним, как мы делегируем права техподдержке (т.е. по сути обычным пользователям домена, в примере это пользователь DOMAIN\test) создавать почтовые ящики или управлять ими.
Сначала на основе родительских шаблонов создадим 2 тестовые роли (этот шаг можно пропустить, используя готовые шаблоны ролей):
New-ManagementRole -Name 'MR-Recipients' -Parent 'Mail Recipients'
New-ManagementRole -Name 'MR-RecipientCreation' -Parent 'Mail Recipient Creation'
Данные шаблоны ролей определяют минимальный набор прав для создания/управления почтовыми ящиками пользователей.
Далее назначим эти роли группе или пользователю.
New-ManagementRoleAssignment -Name 'MRA-Recipients' -Role 'MR-Recipients' -User DOMAIN\test
New-ManagementRoleAssignment -Name 'MRA-RecipientCreation' -Role 'MR-RecipientCreation' -User DOMAIN\test
Создадим область ограничения для нашей роли:
New-ManagementScope -Name 'MS_Test' -DatabaseRestrictionFilter "Name -like 'mbx*'"
Данная область ограничения (фильтр) будет разрешать пользователю производить операции с базами данных, названия которых начинаются со слова mbx.
Теперь назначим эту область ограничения нашему назначению роли:
Set-ManagementRoleAssignment 'MRA_Recipients' -CustomConfigWriteScope 'MS_Test'
Set-ManagementRoleAssignment 'MRA_RecipientCreation' -CustomConfigWriteScope 'MS_Test'
Сначала на основе родительских шаблонов создадим 2 тестовые роли (этот шаг можно пропустить, используя готовые шаблоны ролей):
New-ManagementRole -Name 'MR-Recipients' -Parent 'Mail Recipients'
New-ManagementRole -Name 'MR-RecipientCreation' -Parent 'Mail Recipient Creation'
Данные шаблоны ролей определяют минимальный набор прав для создания/управления почтовыми ящиками пользователей.
Далее назначим эти роли группе или пользователю.
New-ManagementRoleAssignment -Name 'MRA-Recipients' -Role 'MR-Recipients' -User DOMAIN\test
New-ManagementRoleAssignment -Name 'MRA-RecipientCreation' -Role 'MR-RecipientCreation' -User DOMAIN\test
Создадим область ограничения для нашей роли:
New-ManagementScope -Name 'MS_Test' -DatabaseRestrictionFilter "Name -like 'mbx*'"
Данная область ограничения (фильтр) будет разрешать пользователю производить операции с базами данных, названия которых начинаются со слова mbx.
Теперь назначим эту область ограничения нашему назначению роли:
Set-ManagementRoleAssignment 'MRA_Recipients' -CustomConfigWriteScope 'MS_Test'
Set-ManagementRoleAssignment 'MRA_RecipientCreation' -CustomConfigWriteScope 'MS_Test'
среда, 28 июня 2017 г.
"Красивый" экспорт информации об учетных записях пользователей
Иногда требуется выгрузить адресную книгу Outlook или дополнительную информацию о пользователях домена. Как правило, выходной файл желательно иметь в формате Excel, чтобы потом иметь возможность сортировки по столбцам, поэтому необходима табуляция между значениями. Проще всего использовать для этого PowerShell:
$tab = [char]9
$users = Get-ADUser -Filter * -Properties * -SearchBase 'OU=Accounts,DC=domain,DC=local' | ? {$_.Enabled -eq $True} | Select name,emailaddress,officephone,company | sort name
$users | % {($_.name + $Tab + $_.emailaddress + $Tab + $_.officephone + $Tab + $_.company)} | Out-File C:\Users.txt
Здесь происходит поиск всех пользователей контейнера Accounts домена domain.local, затем из полученных значений формируется разделенный табуляцией массив информации и выгружается в текстовый файл. Этот файл потом можно открыть в Excel и работать как с обычной таблицей.
$tab = [char]9
$users = Get-ADUser -Filter * -Properties * -SearchBase 'OU=Accounts,DC=domain,DC=local' | ? {$_.Enabled -eq $True} | Select name,emailaddress,officephone,company | sort name
$users | % {($_.name + $Tab + $_.emailaddress + $Tab + $_.officephone + $Tab + $_.company)} | Out-File C:\Users.txt
Здесь происходит поиск всех пользователей контейнера Accounts домена domain.local, затем из полученных значений формируется разделенный табуляцией массив информации и выгружается в текстовый файл. Этот файл потом можно открыть в Excel и работать как с обычной таблицей.
среда, 19 апреля 2017 г.
[Powershell] Получаем список арендованных IP-адресов с DHCP-сервера
$Server = 'DHCP.local'
$Scope = Get-DhcpServerv4Scope -ComputerName $Server
$Scope | ForEach {Get-DhcpServerv4Lease -ComputerName $Server -AllLeases -ScopeId $_.ScopeId | Select HostName, IPAddress,ClientId} | Sort-Object IPAddress
$Scope = Get-DhcpServerv4Scope -ComputerName $Server
$Scope | ForEach {Get-DhcpServerv4Lease -ComputerName $Server -AllLeases -ScopeId $_.ScopeId | Select HostName, IPAddress,ClientId} | Sort-Object IPAddress
понедельник, 17 апреля 2017 г.
[Exchange] Как получить список мобильных устройств пользователей ActiveSync
Просто выполняем команду в Exchange Management Shell:
Get-ActiveSyncDevice -ResultSize Unlimited | Select-Object @{Name="User"; Expression={($_.UserDisplayName).Split('/')[-1]}},DeviceModel,WhenChanged | Sort-Object User
Get-ActiveSyncDevice -ResultSize Unlimited | Select-Object @{Name="User"; Expression={($_.UserDisplayName).Split('/')[-1]}},DeviceModel,WhenChanged | Sort-Object User
вторник, 11 апреля 2017 г.
Сброс пароля учетной записи root в CentOS (Elastix)
Очень нужная штука, которая выручила меня в неподходящий момент:
При запуске ОС любой клавишей заходим в GRUB-меню, жмем "E" для редактирования команд, выбираем "kernel /boot...", опять нажимаем "E" и дописываем в конец следующий текст:
single init=/bin/bash
Далее нажимаем ENTER и клавишу "B".
После загрузки системы набираем эти команды и наслаждаемся назначением нового пароля:
mount -o remount,rw /
setenforce 0
getenforce (ввод этих двух команд зависит от версии ОС, в Elastix 2.5.0-8 мне это не понадобилось)
passwd root
При запуске ОС любой клавишей заходим в GRUB-меню, жмем "E" для редактирования команд, выбираем "kernel /boot...", опять нажимаем "E" и дописываем в конец следующий текст:
single init=/bin/bash
Далее нажимаем ENTER и клавишу "B".
После загрузки системы набираем эти команды и наслаждаемся назначением нового пароля:
mount -o remount,rw /
setenforce 0
getenforce (ввод этих двух команд зависит от версии ОС, в Elastix 2.5.0-8 мне это не понадобилось)
passwd root
[Exchange] Как дать администратору полный доступ ко всем почтовым ящикам пользователей
Задача также подразумевает, чтобы ящики пользователей не отображались в почтовом клиенте Outlook целым списком, а добавлялись администратором по требованию через вкладку Дополнительно (Открыть дополнительные п/я). Это гораздо удобнее, чем использовать команду Add-MailboxPermission, потому что тогда почтовый ящик сразу отобразится в Outlook.
Итак, просто выполняем команду:
Get-MailboxDatabase | Add-ADPermission -User Admin -AccessRights GenericAll
Дальше просто добавляем/удаляем через указанную вкладку любые ящики пользователей в Outlook.
Итак, просто выполняем команду:
Get-MailboxDatabase | Add-ADPermission -User Admin -AccessRights GenericAll
Дальше просто добавляем/удаляем через указанную вкладку любые ящики пользователей в Outlook.
пятница, 7 апреля 2017 г.
Медленный запуск 1C ERP на терминальном сервере Windows Server 2008/2012/R2
Локально на сервере приложений 1С база запускается достаточно быстро, в пределах 15-20 секунд. На терминалах первоначальная загрузка базы доходит до 2,5 минут, а после появления кэша занимает около минуты. У пользователей создается впечатление, что база медленно работает. Для решения проблемы отключаем на терминале распределение ресурсов процессора и диска для терминальных пользователей, модифицируя параметры реестра EnableCpuQuota и EnableFairShare.
reg ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Quota System" /v EnableCpuQuota /t REG_DWORD /d 0x00000000 /f
reg ADD "HKLM\SYSTEM\CurrentControlSet\Services\TSFairShare\Disk" /v EnableFairShare /t REG_DWORD /d 0x00000000 /f
reg ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Quota System" /v EnableCpuQuota /t REG_DWORD /d 0x00000000 /f
reg ADD "HKLM\SYSTEM\CurrentControlSet\Services\TSFairShare\Disk" /v EnableFairShare /t REG_DWORD /d 0x00000000 /f
четверг, 6 апреля 2017 г.
[PowerShell] Быстрая отправка почтового сообщений
Иногда необходимо по-быстрому проверить соединение с почтовым сервером и корректность отработки отправки письма. Здесь приходит на помощь командлет Send-MailMessage.
Send-MailMessage -To "user@domain.com" -From "test@domain.net" -Subject "Test-Email" -SmtpServer smtp.domain.net -Port 25 -Credential (Get-Credential) -Verbose
Send-MailMessage -To "user@domain.com" -From "test@domain.net" -Subject "Test-Email" -SmtpServer smtp.domain.net -Port 25 -Credential (Get-Credential) -Verbose
четверг, 30 марта 2017 г.
[Hyper-V] Поиск серверов виртуализации в домене и отсутствие записи serviceConnectionPoint у хоста Hyper-V
Для поиска серверов Hyper-V в домене я использую Powershell:
Import-Module ActiveDirectory
$hv_hosts = Get-ADObject -Filter 'ObjectClass -eq "serviceConnectionPoint" -and Name -eq "Microsoft Hyper-V"' | Select DistinguishedName
$hv_hosts | % {Get-ADComputer ($_.DistinguishedName -Replace 'CN=Microsoft Hyper-V,') | Select Name} | Sort Name
Но бывает так, что сервера нет в списке. Это значит, что у него отсутствует запись класса serviceConnectionPoint. Для исправления этого открываем оснастку Adsiedit.msc (Default Naming Context), находим наш объект компьютера-сервера Hyper-V, щелкаем правой кнопкой мыши по нему, выбираем Новый > Объект, далее видно на скриншотах.
Import-Module ActiveDirectory
$hv_hosts = Get-ADObject -Filter 'ObjectClass -eq "serviceConnectionPoint" -and Name -eq "Microsoft Hyper-V"' | Select DistinguishedName
$hv_hosts | % {Get-ADComputer ($_.DistinguishedName -Replace 'CN=Microsoft Hyper-V,') | Select Name} | Sort Name
Но бывает так, что сервера нет в списке. Это значит, что у него отсутствует запись класса serviceConnectionPoint. Для исправления этого открываем оснастку Adsiedit.msc (Default Naming Context), находим наш объект компьютера-сервера Hyper-V, щелкаем правой кнопкой мыши по нему, выбираем Новый > Объект, далее видно на скриншотах.
вторник, 28 марта 2017 г.
[Powershell] Как конвертировать VHD в WIM
Существует много способов, но этот, на мой взгляд, наиболее рациональный.
New-Item c:\VHD_Mount -Type Directory
Mount-WindowsImage -ImagePath "C:\Win81.vhdx" -Path C:\VHD_Mount -Index 1
New-WindowsImage -CapturePath C:\VHD_Mount -Name Win81 -ImagePath C:\Win81.wim -Description "Windows 8.1" -Verify
Dismount-WindowsImage -Path C:\VHD_Mount -Discard
Remove-Item c:\VHD_Mount -Force
В данном примере файл Win81.vhdx на диске C: конвертируется в файл Win81.wim. Далее этот wim-файл можно (легко) разворачивать на физических машинах, например с помощью GImageX (или просто утилиты imagex).
New-Item c:\VHD_Mount -Type Directory
Mount-WindowsImage -ImagePath "C:\Win81.vhdx" -Path C:\VHD_Mount -Index 1
New-WindowsImage -CapturePath C:\VHD_Mount -Name Win81 -ImagePath C:\Win81.wim -Description "Windows 8.1" -Verify
Dismount-WindowsImage -Path C:\VHD_Mount -Discard
Remove-Item c:\VHD_Mount -Force
В данном примере файл Win81.vhdx на диске C: конвертируется в файл Win81.wim. Далее этот wim-файл можно (легко) разворачивать на физических машинах, например с помощью GImageX (или просто утилиты imagex).
[Exchange] При попытке создания почтового ящика консоль EMC закрывается с ошибкой
Ошибка носит такой вид и не представляет собой ничего информативного и полезного.
Пробуем создать почтовый ящик через Exchange Management Shell:
Enable-Mailbox -Identity User -Verbose
Получаем нижеследующую ошибку:
"The property value is invalid. The value can't contain leading or trailing whitespace."
Т.е. имя нашего пользователя содержит пробел в начале или конце. Открываем оснастку Active Directory Users and Computers (ADUC) и убеждаемся в этом, удаляем лишние пробелы и все начинает работать как обычно.
Самое интересное, что через консоль ADUC вручную создать пользователя с лишними пробелами нельзя - они будут отсекаться. Только с помощью командной строки. И как обычно я удивлен, что Microsoft в Exchange Server не удосужились сделать проверку на ненужные пробелы, чтобы EMC не закрывалась с ошибкой, а просто переименовывала бы пользователя или предлагала выбор. До смешного!
Пробуем создать почтовый ящик через Exchange Management Shell:
Enable-Mailbox -Identity User -Verbose
Получаем нижеследующую ошибку:
"The property value is invalid. The value can't contain leading or trailing whitespace."
Т.е. имя нашего пользователя содержит пробел в начале или конце. Открываем оснастку Active Directory Users and Computers (ADUC) и убеждаемся в этом, удаляем лишние пробелы и все начинает работать как обычно.
Самое интересное, что через консоль ADUC вручную создать пользователя с лишними пробелами нельзя - они будут отсекаться. Только с помощью командной строки. И как обычно я удивлен, что Microsoft в Exchange Server не удосужились сделать проверку на ненужные пробелы, чтобы EMC не закрывалась с ошибкой, а просто переименовывала бы пользователя или предлагала выбор. До смешного!
пятница, 24 марта 2017 г.
[AD] Групповое создание учетных записей пользователей в Active Directory
Создаем текстовый файл Users.txt с кодировкой Unicode примерно такого содержания:
"Name","SamAccountName","Pwd","Title"
"Иванов Иван Иванович","ivanov","123321","Менеджер"
"Петров Петр Петрович","petrov","234432","Водитель"
"Кузнецова Марина Васильевна","kuznetsova","345543","Бухгалтер"
Импортируем файл в переменную $users:
$users = Import-CSV Users.txt
Выполняем нижеследующую команду, заменив домен и компанию на свои значения:
$users | % {New-ADUser -Name $_.Name -GivenName (($_.Name).Split(' '))[1] -Surname (($_.Name).Split(' '))[0] -DisplayName $_.Name -SamAccountName $_.SamAccountName -UserPrincipalName ($_.SamAccountName + '@domain.local') -AccountPassword ($_.Pwd | ConvertTo-SecureString -AsPlainText -Force) -Enabled $True -PasswordNeverExpires $True -Company 'Microsoft' -Title $_.Title}
Учтите, если вы нарушите требования политики паролей, то учетная запись создастся отключенной без пароля.
"Name","SamAccountName","Pwd","Title"
"Иванов Иван Иванович","ivanov","123321","Менеджер"
"Петров Петр Петрович","petrov","234432","Водитель"
"Кузнецова Марина Васильевна","kuznetsova","345543","Бухгалтер"
Импортируем файл в переменную $users:
$users = Import-CSV Users.txt
Выполняем нижеследующую команду, заменив домен и компанию на свои значения:
$users | % {New-ADUser -Name $_.Name -GivenName (($_.Name).Split(' '))[1] -Surname (($_.Name).Split(' '))[0] -DisplayName $_.Name -SamAccountName $_.SamAccountName -UserPrincipalName ($_.SamAccountName + '@domain.local') -AccountPassword ($_.Pwd | ConvertTo-SecureString -AsPlainText -Force) -Enabled $True -PasswordNeverExpires $True -Company 'Microsoft' -Title $_.Title}
Учтите, если вы нарушите требования политики паролей, то учетная запись создастся отключенной без пароля.
вторник, 21 марта 2017 г.
Доступ к общим административным ресурсам Windows 7-10
По умолчанию, доступ к административным шарам Windows 7-10 закрыт. Даже отключив Simple File Sharing, мы не можем достучаться до C$ - система вновь и вновь требует он нас пароль. В серверных системах 2008-2016 такой проблемы нет - на то они и серверные системы.
Для того, чтобы доступ к общим административным ресурсам на пользовательских операционных системах все-таки заработал, нужно просто добавить один параметр в реестр.
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 00000001
Для того, чтобы доступ к общим административным ресурсам на пользовательских операционных системах все-таки заработал, нужно просто добавить один параметр в реестр.
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 00000001
среда, 15 марта 2017 г.
[PowerShell] Групповое изменение сетевого адаптера виртуальных машин
Иногда бывает, когда у сервера Hyper-V несколько виртуальных сетевых коммутаторов (VM Switch), один из них перестает работать. И нужно быстро "на лету" поменять соединение сетевого адаптера виртуальной машины к другому виртуальному коммутатору.
Get-VM -ComputerName HV-01 | ? {$_.State -eq 'Running'} | Get-VMNetworkAdapter | Connect-VMNetworkAdapter -SwitchName 'NewSwitch'
Получаем список всех запущенных виртуальных машин на сервере HV-01 и соединяем их сетевые адаптеры с новым коммутатором NewSwitch.
Get-VM -ComputerName HV-01 | ? {$_.State -eq 'Running'} | Get-VMNetworkAdapter | Connect-VMNetworkAdapter -SwitchName 'NewSwitch'
Получаем список всех запущенных виртуальных машин на сервере HV-01 и соединяем их сетевые адаптеры с новым коммутатором NewSwitch.
четверг, 9 марта 2017 г.
[Exchange] Групповое скрытие из адресной книги почтовых ящиков отключенных пользователей
Просто выполняем команду в Exchange Management Shell, не забыв на всякий случай указать соответствующий контейнер, где следует применить наш скрипт. В данном примере отключенные пользователи из контейнера Accounts домена domain.com будут скрыты из адресной книги.
Get-ADUser -Filter * -SearchBase 'OU=Accounts,DC=domain,DC=com' | ? {$_.Enabled -eq $False} | ForEach {Set-Mailbox -Identity $_.samAccountName -HiddenFromAddressListsEnabled $True}
Get-ADUser -Filter * -SearchBase 'OU=Accounts,DC=domain,DC=com' | ? {$_.Enabled -eq $False} | ForEach {Set-Mailbox -Identity $_.samAccountName -HiddenFromAddressListsEnabled $True}
Подписаться на:
Сообщения (Atom)