Перейти к содержимому

Windows

Все по Windows

Как сделать скрипт для отключения учетных записей пользователей с просроченными паролями.

Отключение учетных записей пользователей с просроченными паролями (пароль не менялся более 100 дней).

<# .SYNOPSIS
    Отключение учетных записей пользователей с просроченными паролями
.DESCRIPTION
    Отключение учетных записей пользователей с просроченными паролями (пароль не менялся более 100 дней).
#>
#╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗#
$Host.UI.RawUI.WindowTitle = "Отключение учетных записей пользователей с просроченными паролями"
#╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝#
[system.gc]::Collect()
#------ Logging section ------#
$fileLocation = (gi $MyInvocation.InvocationName) | ForEach-Object {
    $fileDirectory = "$($_.DirectoryName)\$($_.BaseName)";
    "$fileDirectory\$($_.BaseName)_$('{0:yyyy-MM-dd}'-f(date))";
    if (!(Test-Path "$fileDirectory")) {
        ni "$fileDirectory" -ItemType "directory" | Out-Null
    }
}
$Domain     = "adminbd.ru.ru"
$Sender     = "helpdesk@adminbd.ru.ru"
$smtpserver = "mail.adminbd.ru.ru"
#------ Variables ------#
Import-Module ActiveDirectory
$tAD = 'pwdLastSet','Name','whenCreated','PasswordNeverExpires','PasswordExpired','SamAccountName','mail','lastLogonTimestamp','DistinguishedName','Description','CanonicalName','extensionAttribute15'
$tAD2 = 'whenCreated','Name','SamAccountName','mail',@{n='pwdLastSet';e={[DateTime]::FromFileTime($_.pwdLastSet)}},'PasswordNeverExpires','PasswordExpired',@{n='lastLogonTimestamp';e={[DateTime]::FromFileTime($_.lastLogonTimestamp)}},'DistinguishedName','Description','CanonicalName','extensionAttribute15'
$OrgUnit = "OU=Locations,DC=adminbd.ru,DC=ru"
$ExceptinOU 
Читать далее

Как сделать автоматическую смену пароля у пользователя exchange и отправка нового пароля на email.

Авто смена пароля пользователей AD OU=External

Скрипт проверяет дату окончания действия пароля пользователе

<# .SYNOPSIS
    Авто смена пароля пользователей AD OU=External
.DESCRIPTION
    Скрипт проверяет дату окончания действия пароля пользователей и меняет его в день окончания. Новый пароль отправляется на почту в поле mail.
#>
#╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗#
$Host.UI.RawUI.WindowTitle = "Авто смена пароля пользователей AD"
#╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝#
 
Import-Module ActiveDirectory
 
#------ Logging section ------#
 
$dp0 = ($MyInvocation.MyCommand.Path | Split-Path -Parent)
$fileLocation = (gi $MyInvocation.InvocationName) | ForEach-Object {
    $fileDirectory = "$($_.DirectoryName)\$($_.BaseName)";
    "$fileDirectory\$($_.BaseName)_$('{0:yyyy-MM-dd}'-f(date))";
    if (!(Test-Path "$fileDirectory")) {
        ni "$fileDirectory" -ItemType "directory" | Out-Null
    }
}
$watch = [System.Diagnostics.Stopwatch]::StartNew()
$watch.Start()
Start-Transcript "${fileLocation}.log" -append
 
#------ Initialization ------#
 
. $dp0\functions\Generate-Password.ps1
Читать далее

Как создать переадресацию с одного ящика на другой в exchange. Переезд в другой домен.

Задача. Есть два домена. Из одного домена люди перешли в другой. Нужно настроить переадресацию писем из одного домена в другой.

Скрипт вытягивает пользователей из домена adminbd1 находит соответствие в adminbd2 и создаёт правило пересылки.

<# .SYNOPSIS
    Создание переадресации писем сотрудников adminbd1 с adminbd2 на adminbd1
.DESCRIPTION
    Скрипт вытягивает пользователей из домена adminbd1 находит соответствие в adminbd2 и создаёт правило пересылки.
#>
#╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗#
$Host.UI.RawUI.WindowTitle = "Создание переадресации писем с adminbd2 на adminbd1"
#╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝#
[system.gc]::Collect()
$ErrorActionPreference="Continue"
#------ Logging section ------#
 
#$dp0 = ($MyInvocation.MyCommand.Path | Split-Path -Parent)
$fileLocation = (gi $MyInvocation.InvocationName) | ForEach-Object {
    $fileDirectory = "$($_.DirectoryName)\$($_.BaseName)";
    "$fileDirectory\$($_.BaseName)_$('{0:yyyy-MM-dd}'-f(date))";
    if (!(Test-Path "$fileDirectory")) {
        ni 
Читать далее

Как создать контакты в exchange из другого домена.

Скрипт вытягивает пользователей из домена adminbd.ru и создаёт их контакты в домене adminbd2.ru . Так же прячет одноимённую почту домена adminbd2.ru

При создание файла с данными для входа $UserCredential = Import-CliXML -Path ‘D:\Programs\Scripts\Import_contact-arn_to_vx\mycredentials_adminbd.xml’ важно генерировать файл от того пользователя от которого будет производится запуск крипта.

<# .SYNOPSIS
    Заведение контактов - adminbd.ru to adminbd2.ru
.DESCRIPTION
    Скрипт вытягивает пользователей из домена adminbd.ru и создаёт их контакты в домене adminbd2.ru. Так же прячет одноиённую почту домена adminbd2.ru.
#>
#╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗#
$Host.UI.RawUI.WindowTitle = "Заведение контактов - adminbd.ru to adminbd2.ru"
#╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝#
[system.gc]::Collect()
$ErrorActionPreference="Continue"
#------ Logging section ------#
 
#$dp0 = ($MyInvocation.MyCommand.Path | Split-Path -Parent)
$fileLocation = (gi 
Читать далее

Как сделать скрипт для архивировании почты exchange перед удаление учетной записи.

Задача архивировать почту перед удалением

 

#Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
Import-Module ActiveDirectory
[system.gc]::Collect()
 
#------ Variables ------#
 
$ExceptinUsers = 'sd'
$OrgUnit    = "OU=Locations,DC=adminbd,DC=ru"
$domain     = "adminbd.ru"
$dt         = (Get-Date).AddDays(-30)
$Filter     = '(Enabled -eq $False) -and (Modified -le $dt)' #   -and (Name -like "ч*")
#$Filter1   = '(Enabled -eq $False) -and (EmailAddress -notlike "*@adminbd.ru") -and (Modified -le $dt)'
$dtstamp    = Get-Date -Format "yyyy-MM-dd-hh-mm-ss"
$dtstamp1   = Get-Date -Format "ddMMyyyy"
$pattern    = '[/\\:?*<>"|]'
$exppath    = "\\arc01.adminbd.ru\archive-pst$\ARC\"
New-Item -Path "$exppath" -Name "$dtstamp1" -ItemType "directory"
#каталог должен быть создан предварительно и на него даны права чтени¤ и записи дл¤ доменной группы Exchange Trusted Subsystem
 
#------ Search Users ------#
 
$adminbd 
Читать далее

Как сделать автоматическое создание почтовых ящиков с отключёнными ActiveSync и MAPI и добавить в группу G-Deny to send

Задача завести ящики для пользователей с отключёнными ActiveSync и MAPI и добавить в группу G-Deny to send.

 

<# .SYNOPSIS
    Заведение почты операторов adminbd
.DESCRIPTION
    Скрипт ищет пользователей с пустым полем mail и заводит почту в adminbd.ru. Исключение $OperatorsOU = "*Operators*".
#>
#╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗#
$Host.UI.RawUI.WindowTitle = "Заведение почты операторов adminbd"
#╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝#
[system.gc]::Collect()
 
#------ Variables ------#
 
$BaseOU = "OU=Locations,DC=adminbd,DC=ru"
$OperatorsOU = "*Operators*"
$MailCorp = Get-ADUser -SearchBase $BaseOU -filter {Enabled -eq "True"} -properties 'mail','UserPrincipalName','SamAccountName','CanonicalName' |
Where-Object    {
        ($_.CanonicalName -like $OperatorsOU) -and ($_.mail -like $NULL)
    }
#$MailCorp = Get-ADUser -Identity Anastasiya.Bodrukh -properties 'mail','CanonicalName'
 
  
 #------ Execution ------#
 
$UserCredential = Import-CliXML -Path 'D:\Programs\Scripts\adminbd_operators\mycredentials_adminbd.xml'
$Sessionadminbd = New-PSSession 
Читать далее

Как сделать автоматическое создание почтового ящика exchange.

  • Выполняется каждый час ищет OU office и просматривает поле mail, если пустое то почта заводится в базу SK05/06 в зависимости какая свободна.
  • Политика хранения ставится Move to archive after 6 month.
  • Проставляется архив в зависимости от номера базы.

 

<# .SYNOPSIS
    Заведение почты  adminbd
.DESCRIPTION
    Скрипт ищет пользователей с пустым полем mail и заводит почту в adminbd.ru. Исключение $OfficeOU = "*Office*".
#>
#╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗#
$Host.UI.RawUI.WindowTitle = "Заведение почты  adminbd"
#╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝#
[system.gc]::Collect()
 
#------ Variables ------#
 
$BaseOU = "OU=Locations,DC=adminbd,DC=ru"
$OfficeOU = "*Office*"
<#$MailCorp = Get-ADUser -SearchBase $BaseOU -filter {Enabled -eq "True"} -properties 'mail','UserPrincipalName','SamAccountName','CanonicalName'| Where-Object {$_.mail -Match ".*@corp.adminbd.ru"} |
    Where-Object    {
        !($(foreach ($u in 
Читать далее

Как сделать автоматическую очистку почты exchange при заполнении больше 90 процентов ящика.

Задача чистить почту при заполнении почты у пользователей больше 90%. Удаляются самые старые письма.

<# .SYNOPSIS
    Очистка почты операторов
.DESCRIPTION
    Скрипт проверяет все ящики в базах Op01/02, при заполнении почты более чем на 90% от квоты удаляет самые старые письма в папке Входящие и её подкаталогах.
    Удаление идёт до тех пор пока размер заполнености ящика не станет равен 90%.
#>
#╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗#
$Host.UI.RawUI.WindowTitle = "Очистка почты операторов"
#╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝#
 
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
$watch = [System.Diagnostics.Stopwatch]::StartNew()
$watch.Start()
[system.gc]::Collect()
#------ Logging section ------#
 
$fileLocation = (gi $MyInvocation.InvocationName) | ForEach-Object {
    $fileDirectory = "$($_.DirectoryName)\$($_.BaseName)";
    "$fileDirectory\$($_.BaseName)_$('{0:yyyy-MM-dd}'-f(date))";
    if (!(Test-Path "$fileDirectory")) {
        ni "$fileDirectory" -ItemType "directory" | Out-Null
    }
Читать далее

Как завести пользователь в exchange через powershell.

Задача у пользователей была почта zimbra и прописана в ad. Надо всех пользователей завести в exchange.

<# .SYNOPSIS
    Заведение почты операторов adminbd
.DESCRIPTION
    Скрипт ищет пользователей с почтой corp.adminbd.ru и заводит почту в adminbd.ru. Исключение OU=External.
#>
#╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗#
$Host.UI.RawUI.WindowTitle = "Заведение почты операторов adminbd"
#╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝#
[system.gc]::Collect()
 
#------ Variables ------#
 
$BaseOU = "OU=Locations,DC=adminbd,DC=ru"
$ExceptinOU = "*External*"
$MailCorp = Get-ADUser -SearchBase $BaseOU -filter * -properties 'mail','UserPrincipalName','SamAccountName' | Where-Object {$_.mail -Match ".*@corp.adminbd.ru"} | Where-Object {$_.CanonicalName -notlike $ExceptinOU}
#$MailCorp = Get-ADUser -SearchBase $BaseOU -filter * -properties 'mail','UserPrincipalName','SamAccountName' | Where-Object {$_.mail -like $NULL} | Where-Object {$_.CanonicalName -notlike $ExceptinOU}
 
  
 #------ Execution ------#
$UserCredential = Get-Credential
#$UserCredential 
Читать далее

Как сбросить все зависшие или в состоянии disconnect сессии в rpd rds ferma со всех хостов разом.

Задача отключить всех зависших или отключённых пользователей от терминальной фермы со всех (rdsh host) хостов.

 

$dtstamp = Get-Date -Format "yyyy-MM-dd"
$RDSCollection = "Farm"
$activbrocer = if (Get-RDConnectionBrokerHighAvailability -ConnectionBroker  "HWRDCB01.adminbd.ru")
{Get-RDConnectionBrokerHighAvailability -ConnectionBroker  "HWRDCB01.adminbd.ru"}
else 
{Get-RDConnectionBrokerHighAvailability -ConnectionBroker  "HWRDCB02.adminbd.ru"}



$server = Get-RDSessionHost -CollectionName $RDSCollection -ConnectionBroker $activbrocer.ActiveManagementServer 
$server=$server.SessionHost

foreach($servers in $server) {



$ts = qwinsta /server:$servers
    $td = ($ts | where { ($_ -like "*Disc*" -or $_ -like "*Диск*" -or $_ -like "*ЁбЄ*" ) -and $_ -notlike "*services*"})
    $tdselect = $td # Для отладки или внесения в лог: Login Id State
        $td = $td -ireplace ("[a-z][0-9]","") # убираем логины содержащие цифры
    $td = 
Читать далее