Ошибка «Get-ADComputer: не удается найти объект с удостоверением» при получении из CSV - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь отключить ПК из файла CSV, но получаю сообщение об ошибке ниже.

Код работает, когда я вручную копирую список устройств в текстовый файл (блокнот)

Спасибо

Get-ADComputer: не удается найти объект с идентификатором: 'PC-125632' в разделе: 'DC = XXX, DC = XXX, DC = XXX'.В строке: 12 символов: 15 + $ ADComputer = Get-ADComputer $ Computer -Properties Описание +
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Вот что я пробовал до сих пор

Get-Content C:\Temp\test.csv |  Select-Object -Skip 1 | Set-Content C:\Temp\List.txt
$Computers = Get-Content C:\Temp\List.txt
Start-Sleep -s 5    
ForEach ($Computer in $Computers)    
{     
    $ADComputer = $null    
    $ADComputer = Get-ADComputer $Computer -Properties Description    
    If ($ADComputer)    
    { 
        Add-Content c:\temp\computers.log -Value "The following PC $Computer has been found and disabled"    
        Set-ADComputer $ADComputer -Description "$($ADComputer.Description)- Disable due to inactivity - $(Get-Date) - by $env:UserName " -Enabled $False    
    }    
    Else    
    { 
    Add-Content c:\temp\computers.log -Value "$Computer not Found in Active Directory or Was disabled before"    
    }    
} 

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Сообщение об ошибке действительно показывает проблему, но она довольно тонкая ... есть пробел (в конце имя компьютера):

'PC-125632'

Это берется как часть имени компьютера, когда оно не должно быть включено.

Это легко исправить с помощью Trim(), чтобы удалить любой ведущий илизавершающий пробел.

Я также использую Import-Csv согласно моему предыдущему комментарию и -Filter "Name -eq $Computer", так как это вернет ноль, если совпадений нет.

$Computers = Import-Csv C:\temp\test.csv

Foreach ($Computer in $Computers.DeviceName) {
    $Computer = $Computer.Trim()
    $ADComputer = Get-ADComputer -Filter "Name -eq $Computer" -Properties Description
    If ($ADComputer) {
        Add-Content c:\temp\computers.log -Value "The following PC $Computer has been found and disabled"
        Set-ADComputer $ADComputer -Description "$($ADComputer.Description)- Disable due to inactivity - $(Get-Date) - by $env:UserName " -Enabled $False
    }
    Else {
        Add-Content c:\temp\computers.log -Value "$Computer not Found in Active Directory or Was disabled before"
    }
}
0 голосов
/ 11 июня 2018

Get-ADComputer: не удается найти объект с идентификатором: «PC-125632» в разделе: «DC = XXX, DC = XXX, DC = XXX».В строке: 12 символов: 15 + $ ADComputer = Get-ADComputer $ Computer -Properties Описание +

Вышеуказанная ошибка устраняется с помощью (2) и (3)

Ниже кода у меня естьвыполнено успешно.Он работает нормально ..

(1) Я изменил способ импорта CSV.

 $computers=Import-Csv -Path "C:\Temp\test.csv" 

(2) и вместо

ForEach ($Computer in $Computers)

я использую

ForEach ($Computer in $Computers.distinguishedName) 

остальные такие же ..

В целом этовыглядит так:

$computers=Import-Csv -Path "C:\Temp\test.csv" 

ForEach ($Computer in $Computers.distinguishedName)    
{     
    $ADComputer = $null    
    $ADComputer = Get-ADComputer $Computer -Properties Description    
    If ($ADComputer)    
    { 
        Add-Content c:\temp\computers.log -Value "The following PC $Computer has been found and disabled"    
        Set-ADComputer $ADComputer -Description "$($ADComputer.Description)- Disable due to inactivity - $(Get-Date) - by $env:UserName " -Enabled $False    
    }    
    Else    
    { 
    Add-Content c:\temp\computers.log -Value "$Computer not Found in Active Directory or Was disabled before"    
    }    
} 

(3) Где мой формат CSV такой:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...