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

Как сделать скрипт для Удаление не активных ПК более 60 дней

Скрипт удаляет не активные ПК более 60

<# .SYNOPSIS
    Удаление не активных ПК более 60
.DESCRIPTION
    Скрипт удаляет не активные ПК более 60
#>
#╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗#
$Host.UI.RawUI.WindowTitle = "Удаление не активных ПК более 60"
#╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝#
Import-Module ActiveDirectory
[system.gc]::Collect()
$ErrorActionPreference="Continue"
#------ 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
    }
}
#------ Variables ------#
$Result = @()
$OrgUnit = "OU=Locations,DC=adminbd.ru,DC=ru"
$td1 = (Get-Date).adddays(-60) # Шаг 7 дней
$td1=$td1.ToFileTime()
 
#------ Workspace ------#
 
#Get-ADComputer -SearchBase $OrgUnit -Filter {lastLogonTimeStamp -le $td1 -and Enabled -eq "True"} -Properties 'lastLogonTimeStamp','Name'| Select-Object 'Name',@{n='lastLogonTimeStamp';e={[DateTime]::FromFileTime($_.lastLogonTimeStamp)}} | Export-Csv -Path C:\tmp\pc.csv -Encoding UTF8
$PCadminbd.ru = Get-ADComputer -SearchBase $OrgUnit -Filter {lastLogonTimeStamp -le $td1} -Properties 'lastLogonTimeStamp','Name'| Select-Object 'Name',@{n='lastLogonTimeStamp';e={[DateTime]::FromFileTime($_.lastLogonTimeStamp)}} #| Export-Csv -Path C:\tmp\pc.csv -Encoding UTF8
 
ForEach ($PC in $PCadminbd.ru)   {
    Remove-ADComputer -Identity $PC.name -Confirm:$False
    $detailed = [ordered]@{
        Name = $PC.name
        Status = 'delete'
        Error = ''
    }
#------ Error ------#
 
    if ($detailed.Error -eq "") {
        $Error.Clear()
 
        if($Error[0]) {
            #Write-Host "Error logged"
            foreach ($E in $Error) {
                $detailed.Error += $E.Exception.Message
            }
        } else {
            $detailed.Error = "No error"
        }
    }
    $Result += New-Object PSObject -Property $detailed
  
}
 
 
#------ Finishing ------#
$Result | Export-CSV -Path "$fileLocation" -NoTypeInformation -Append -Force -Encoding "UTF8" -Delimiter ";"

 

Similar Posts:

Метки:

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *