none
Как удалить пустой OrganizationalUnit?

    Вопрос

  • По логике:

    Get-ADOrganizationalUnit -SearchBase выявить пустые и передать в Remove-ADOrganizationalUnit, но тут проблема: свойства пустых и не пустых OU идентичны и хранят в себе только сами свойства объектов, а не их содержимого.

    А как выявить и удалить именно пустые OU через PowerShell?

    • Перемещено Vector BCOModerator 8 августа 2018 г. 15:55 Перенесено из ветки Win2008
    8 августа 2018 г. 15:34

Ответы

  • Всё уже придумали до нас.

    https://social.technet.microsoft.com/Forums/windowsserver/en-US/4b682732-eb5d-4424-ba13-c538d756a076/list-empty-ous?forum=winserverpowershell

    • Помечено в качестве ответа KazunEditor 9 августа 2018 г. 10:34
    8 августа 2018 г. 15:48
  • get-adOrganizationalUnit -filter * | foreach { $candidate = $_.DistinguishedName $tmpRes = '' $tmpRes = get-adobject -searchBase $candidate -filter * | where {$_.ObjectClass -ne 'organizationalUnit'} if ([string]::isnullorempty($tmpRes)){ write-host $candidate -foregroundColor Yellow
    set-adobject $candidate -ProtectedFromAccidentalDeletion:$false
     remove-adorganizationalUnit $candidate -confirm:false -whatif } }



    The opinion expressed by me is not an official position of Microsoft




    • Изменено Vector BCOModerator 8 августа 2018 г. 16:03
    • Помечено в качестве ответа KazunEditor 9 августа 2018 г. 10:34
    8 августа 2018 г. 15:49
    Модератор
  • Спасибо за ответ!

    На основе идентичного решения было рождено:

    Get-ADOrganizationalUnit -Filter *| Where-Object {-not ( Get-ADObject -Filter * -SearchBase $_.Distinguishedname -SearchScope OneLevel -ResultSetSize 1 )}|
    foreach {Remove-ADOrganizationalUnit -Identity $_ -Confirm}

    • Помечено в качестве ответа gdterekhov 10 августа 2018 г. 7:38
    9 августа 2018 г. 10:03

Все ответы

  • Всё уже придумали до нас.

    https://social.technet.microsoft.com/Forums/windowsserver/en-US/4b682732-eb5d-4424-ba13-c538d756a076/list-empty-ous?forum=winserverpowershell

    • Помечено в качестве ответа KazunEditor 9 августа 2018 г. 10:34
    8 августа 2018 г. 15:48
  • get-adOrganizationalUnit -filter * | foreach { $candidate = $_.DistinguishedName $tmpRes = '' $tmpRes = get-adobject -searchBase $candidate -filter * | where {$_.ObjectClass -ne 'organizationalUnit'} if ([string]::isnullorempty($tmpRes)){ write-host $candidate -foregroundColor Yellow
    set-adobject $candidate -ProtectedFromAccidentalDeletion:$false
     remove-adorganizationalUnit $candidate -confirm:false -whatif } }



    The opinion expressed by me is not an official position of Microsoft




    • Изменено Vector BCOModerator 8 августа 2018 г. 16:03
    • Помечено в качестве ответа KazunEditor 9 августа 2018 г. 10:34
    8 августа 2018 г. 15:49
    Модератор
  • а чо там ща с галкой случайного удаления?
    8 августа 2018 г. 17:16
  • а чо там ща с галкой случайного удаления?

    4я строка снизу :)

    The opinion expressed by me is not an official position of Microsoft

    8 августа 2018 г. 17:22
    Модератор
  • Спасибо за ответ!

    На основе идентичного решения было рождено:

    Get-ADOrganizationalUnit -Filter *| Where-Object {-not ( Get-ADObject -Filter * -SearchBase $_.Distinguishedname -SearchScope OneLevel -ResultSetSize 1 )}|
    foreach {Remove-ADOrganizationalUnit -Identity $_ -Confirm}

    • Помечено в качестве ответа gdterekhov 10 августа 2018 г. 7:38
    9 августа 2018 г. 10:03