none
Правка объекта в ADSI, через PowerShell RRS feed

  • Вопрос

  • Добрый день.

    Наткнулся на статью: как запретить всем пользователям OMA, решил использовать у себя, но т.к. я человек новый в PS, так и не понял как применять к конкретному пользователю. Помогите пож-та разобраться.

    Сам скрипт:

    Set xDSE = GetObject(«LDAP://rootDSE»)
    Set xUsers = GetObject(«LDAP://cn=Users,» & xDSE.Get(«defaultNamingContext»))
    For Each xUser In xUsers
    xUser.Put «msExchOmaAdminWirelessEnable», «7″
    xUser.setinfo
    Next

    Задача:

    Отключить OMA одному пользователю. Идеальный был бы вариант: при исполнении скрипта, он бы спрашивал кому отключить из пользователей отключить OMA

    Спасибо за помощь, пока пойду читать PS :)

    2 октября 2013 г. 12:47

Ответы

  • Function Disable-OMA($user)
    {
    	$s = [adsisearcher]"(samaccountname=$user)"
    	$u = $s.FindOne().GetDirectoryEntry()
    	if($u) {
    		$u.Put("msExchOmaAdminWirelessEnable", 7)
    		$u.SetInfo()
    	}
    }
    
    Disable-OMA SamAccountName

    • Помечено в качестве ответа Land-Group 4 октября 2013 г. 5:44
    2 октября 2013 г. 12:59
    Отвечающий

Все ответы

  • Function Disable-OMA($user)
    {
    	$s = [adsisearcher]"(samaccountname=$user)"
    	$u = $s.FindOne().GetDirectoryEntry()
    	if($u) {
    		$u.Put("msExchOmaAdminWirelessEnable", 7)
    		$u.SetInfo()
    	}
    }
    
    Disable-OMA SamAccountName

    • Помечено в качестве ответа Land-Group 4 октября 2013 г. 5:44
    2 октября 2013 г. 12:59
    Отвечающий
  • Спасибо за ответ, но у меня не вышло и не пойму почему:

    You cannot call a method on a null-valued expression.
    At C:\Users\land-group\Desktop\123.ps1:4 char:37
    +     $u = $s.FindOne().GetDirectoryEntry <<<< ()
        + CategoryInfo          : InvalidOperation: (GetDirectoryEntry:String) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull

    • Изменено Land-Group 2 октября 2013 г. 13:16
    2 октября 2013 г. 13:15
  • Спасибо за ответ, но у меня не вышло и не пойму почему:

    You cannot call a method on a null-valued expression.
    At C:\Users\land-group\Desktop\123.ps1:4 char:37
    +     $u = $s.FindOne().GetDirectoryEntry <<<< ()
        + CategoryInfo          : InvalidOperation: (GetDirectoryEntry:String) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull


    Неправильно указали пользователя из Active Directory. Смотрим у пользователя атрибут SamAccountName и подставляем, как параметр.
    2 октября 2013 г. 13:19
    Отвечающий
  • так и делаю, но ошибка

    Function Disable-OMA($user)
    {
        $s = [adsisearcher]"(land-group=$user)"
        $u = $s.FindOne().GetDirectoryEntry()
        if($u) {
            $u.Put("msExchOmaAdminWirelessEnable", 7)
            $u.SetInfo()
        }
    }

    Disable-OMA land-group


    • Изменено Land-Group 2 октября 2013 г. 13:24
    2 октября 2013 г. 13:22
  • так и делаю, но ошибка

    Function Disable-OMA($user)
    {
        $s = [adsisearcher]"(land-group=$user)"
        $u = $s.FindOne().GetDirectoryEntry()
        if($u) {
            $u.Put("msExchOmaAdminWirelessEnable", 7)
            $u.SetInfo()
        }
    }

    Disable-OMA land-group


    Зачем Вы добавляете свои ошибки? Скопируйте мой скрипт без изменений   и выполните команду:

    Disable-OMA land-group

    2 октября 2013 г. 13:35
    Отвечающий
  • Большое спасибо, все получилось.

    Если не сложно не подскажете, как его сделать более интерактивным, т.е. при запуске скрипта, он бы спрашивал кому выключить OMA - это в идеале. Ну а если нет, то как можно пачке юзеров выключить OMA скриптом, просто добавить через запятую логины?

    Прошу прощения за наглость :)



    • Изменено Land-Group 2 октября 2013 г. 13:48
    2 октября 2013 г. 13:45
  • Большое спасибо, все получилось.

    Если не сложно не подскажете, как его сделать более интерактивным, т.е. при запуске скрипта, он спросит кому выключить OM, это в идеале. Ну а если нет, то как можно пачке юзеров выключить OMA скриптом?

    Прошу прощения за наглость :)


    Используйте модуль Active Directory:

    1) Для одного пользователя

    Set-ADUser SamAccountName -Replace @{"msExchOmaAdminWirelessEnable" = 7}

    2) Для одного и более:

    Get-ADUser -Filter * -SearchBase "OU=Test,DC=Contoso,DC=Com" | Set-ADUser  -Replace @{"msExchOmaAdminWirelessEnable" = 7}

    2 октября 2013 г. 13:50
    Отвечающий
  • Используйте модуль Active Directory:

    1) Для одного пользователя

    Set-ADUser SamAccountName -Replace @{"msExchOmaAdminWirelessEnable" = 7}

    2) Для одного и более:

    Get-ADUser -Filter * -SearchBase "OU=Test,DC=Contoso,DC=Com" | Set-ADUser  -Replace @{"msExchOmaAdminWirelessEnable" = 7}

    Не понял, а куда мне его вставить?
    2 октября 2013 г. 13:57
  • В консоли PowerShell. Для базового знакомство с модулем для AD:
    Модуль Active Directory для Windows PowerShell – Руководство по быстрому старту (Quick start guide)
    3 октября 2013 г. 5:32
    Отвечающий
  • Выполняю команду со своего ПК (Win7), DC на Win2003. Ошибка:

    PS C:\Users\land-group\Desktop> Set-ADUser land-group -Replace @{"msExchOmaAdminWirelessEnable" = 7}
    Set-ADUser : Unable to find a default server with Active Directory Web Services running.
    At line:1 char:11
    + Set-ADUser <<<<  land-group -Replace @{"msExchOmaAdminWirelessEnable" = 7}
        + CategoryInfo          : ResourceUnavailable: (land-group:ADUser) [Set-ADUser], ADServerDownException
        + FullyQualifiedErrorId : Unable to find a default server with Active Directory Web Services running.,Microsoft.Ac
       tiveDirectory.Management.Commands.SetADUser

    3 октября 2013 г. 11:59
  • Для поддержки данного модуля на серверах Windows Server 2003,требуется установить компонент ADWS,более подробно в статье - http://blogs.technet.com/b/heyscriptingguy/archive/2011/08/30/install-active-directory-management-service-for-easy-powershell-access.aspx
    3 октября 2013 г. 12:07
    Отвечающий
  • Хорошо, но тогда не совсем понятно, почему Ваш скрипт сработал, а для выполнения команды, необходимо доп. ПО на DC?
    4 октября 2013 г. 8:43