J3qx

information archive

UserAccRU_.ps1

Posted by j3qx на Ноябрь 26, 2016

############################################
#
# Скрип для мониторинга изменения состояния аккаунтов пользователей в AD
# Отслеживается изменение состояния enabled\disabled, изменения за сутки пишутся в БД
# Powershell v4.0
# v1.0 2014.08.01
# Borodin Nikita
#
############################################

cls
#Функция создания логов
function global:LogPath
{
param ([bool]$Readhost = $false, [string]$logpath = «C:\Scripts\Logs\UserAccStatus», [string]$file = «log.log»)
$Date = Get-Date -DisplayHint DateTime -Format yy.MM.dd
if ($file -ne «»)
{
if ($Readhost -eq $false)
{
if ((Test-Path $logpath) -eq $false)
{
New-Item $logpath -type directory | Out-Null
Write-Output «$logpath\$Date$file»
}
else
{
Write-Output «$logpath\$Date$file»
}
}
else
{
$logpath = (Read-Host «Enter the path»).trimend(«\\»)
if ((Test-Path $logpath) -eq $false)
{
New-Item $logpath -type directory | Out-Null
Write-Output «$logpath\$Date$file»
}
else
{
Write-Output «$logpath\$Date$file»
}
}
}
elseif ($file -eq «»)
{
if ($Readhost -eq $false)
{
if ((Test-Path $logpath) -eq $false)
{
New-Item $logpath -type directory | Out-Null
Write-Output «$logpath»
}
else
{
Write-Output «$logpath»
}
}
else
{
$logpath = (Read-Host «Enter the path»).trimend(«\\»)
if ((Test-Path $logpath) -eq $false)
{
New-Item $logpath -type directory | Out-Null
Write-Output «$logpath»
}
else
{
Write-Output «$logpath»
}
}
}
}
#Функция преобразования объекта AD в объект PS c нужными полями
function global:AddtoList
{
param ($object)
$ocol = @()
foreach ($obj in $object)
{
$o = New-Object PSobject
$o | Add-Member -MemberType NoteProperty -Name Name -Value $obj.Name
$o | Add-Member -MemberType NoteProperty -Name SamAccountName -Value $obj.SamAccountName
if (($obj | gm enabled).membertype -eq «Property»)
{
if ($obj.get_enabled() -eq $false)
{
$o | Add-Member -MemberType NoteProperty -Name Enabled -Value «no»
}
else
{
$o | Add-Member -MemberType NoteProperty -Name Enabled -Value «yes»
}
}
elseif(($obj | gm enabled).membertype -eq «NoteProperty»)
{
$o | Add-Member -MemberType NoteProperty -Name Enabled -Value $obj.enabled

}
$ocol += $o
}
$ocol
}
#Функция поиска в массиве индекса указанного элемента
function findinarr ($array, $value) {for ($i=0; $i -lt $array.count;$i++){if($array[$i] -eq $value){$i}}}
[array]$user = $null
$OU = «DC=office,DC=example,DC=ru»
$date = Get-Date -DisplayHint DateTime -Format «dd.MM.yy H:mm:ss»

#Выгрузка в массив содержимого AD(obj users)
$user1 = Get-ADuser -SearchBase $OU -Filter «*» | where {$_.DistinguishedName -notlike «*OU=office*»}
$user2 = Get-ADuser -SearchBase $OU -Filter «*» | where {$_.DistinguishedName -like «*OU=RU*»}
$user += $user1
$user += $user2
#Формирование списка на основе массива $lastexport и выгрузка списка в csv
(AddtoList -object $user) | Export-Csv -Delimiter «;» -Path (logpath -File «allAD.csv») -NoTypeInformation -Append -Force -Encoding UTF8

Реклама

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

 
%d такие блоггеры, как: