Вопрос для import-csv и foreach - PullRequest
       6

Вопрос для import-csv и foreach

0 голосов
/ 26 февраля 2020

Я хочу импортировать CSV, а затем удалить из AD несколько объектов

$ImportComputer = "C:\Users\deng\Desktop\ComputerLastlogondateformatBis.csv"

Import-Module ActiveDirectory

foreach ($Computer in(Import-Csv -Path C:\Users\deng\Desktop\ComputerLastlogondateformatBis.csv))
{
Remove-ADObject -Identity $Computer.'Computer'

эти два объекта существуют в AD, но я не могу понять, почему он не работает.

см. ниже сообщение об ошибке:

Remove-ADObject : Cannot find an object with identity: 'fr-borr-mac' under: 'DC=PII,DC=net'.
At C:\Users\deng\OneDrive - Aptus Health\Script\Export.ps1:7 char:1
+ Remove-ADObject -Identity $Computer.'Computer'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (fr-borr-mac:ADObject) [Remove-ADObject], ADIdentityNotFoundException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.ActiveDirectory.Management.Commands.RemoveADObject

Remove-ADObject : Cannot find an object with identity: 'jlinmacfr' under: 'DC=PII,DC=net'.
At C:\Users\deng\OneDrive - Aptus Health\Script\Export.ps1:7 char:1
+ Remove-ADObject -Identity $Computer.'Computer'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Содержание CSV ниже:

Computer   
--------   
fr-borr-mac
jlinmacfr  

Может ли кто-нибудь дать ответ на этот вопрос?

1 Ответ

0 голосов
/ 26 февраля 2020

Параметр -Identity в командах *-ADObject предполагает значение либо DistinguishedName, либо Guid. Если вы хотите работать с SamAccountName или другим атрибутом, вам следует рассмотреть возможность использования *-ADComputer или -Filter для поиска ваших объектов.

# Using Remove-ADObject
Remove-ADObject -Filter "SamAccountName -eq '$($Computer.Computer)'"

# Using Remove-ADComputer
Remove-ADComputer -Identity $Computer.Computer

В качестве альтернативы вы можете использовать Get-ADComputer или Get-ADObject, чтобы сначала получить ваш объект, а затем направить его в Remove-ADObject.

Get-ADObject -Filter "SamAccountName -eq '$($Computer.Computer)'" | Remove-ADObject

См. документацию Remove-ADObject для следующей выдержки, касающейся явной привязки к -Identity:

Указывает объект Active Directory, предоставляя одно из следующих значений свойств. Идентификатор в скобках - это отображаемое имя протокола LDAP для атрибута. Допустимые значения этого параметра:

  • Отличительное имя
  • GUID (objectGUID)

Для передачи объекта в Remove-ADObject, применяется следующий отрывок, поэтому вы можете использовать команду Get-AD* и передать результат в Remove-ADObject:

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

Также допускаются производные типы, такие как следующие:

  • Microsoft.ActiveDirectory.Management.ADGroup
  • Microsoft. ActiveDirectory.Management.ADUser
  • Microsoft. Microsoft.ActiveDirectory.Management.ADDomain
...