Укажите учетные данные для запуска скрипта Powershell для запроса AD

Я хочу запустить скрипт powershell для запроса AD с компьютера, который НЕ находится в домене.

В основном я хочу запросить, есть ли учетная запись компьютера в домене для этой машины, и создать ее, если ее нет. Поскольку это должно произойти до того, как машина присоединится к домену, я предполагаю, что мне потребуется указать некоторые учетные данные, чтобы она могла работать. (Я довольно новичок в Powershell, поэтому извиняюсь, если это вопрос новичка!)

Сценарий, который я использую для проверки учетной записи, приведен ниже, а затем, после его запуска, он присоединится к домену с использованием указанного имени компьютера.

Можете ли вы сказать мне, как указать некоторые учетные данные домена для запуска этого раздела сценария как?

Ура,

Бен

$found=$false
$thisComputer = <SERVICE TAG FROM BIOS>
$ou = [ADSI]"LDAP://OU=My Computer OU,DC=myDomain,DC=com"
foreach ($child in $ou.psbase.Children ) {   
    if ($child.ObjectCategory -like '*computer*') {
        If ($child.Name -eq $thisComputer) {
            $found=$true
        } 
    }
}

If ($found) { <DELETE THE EXISTING ACCOUNT> }

4 ответа

Решение

Насколько я знаю, нет возможности передать альтернативные учетные данные с помощью ускорителя типа ADSI. Есть два способа обойти это в вашем коде:

  • powershell.exe запускается как пользователь домена, а не как локальный пользователь - это заставит все в сценарии использовать учетные данные домена
  • использовать Invoke-Command Командлет, который позволяет передать блок сценария для выполнения и альтернативные учетные данные.

Я никогда не пробовал ни одного из них, так что это потребует проб и ошибок.

Другой вариант, который может быть более гибким для вас, это не использовать ускоритель типа ADSI. Есть 2 способа сделать это.

  1. Используйте.NET Framework DirectoryService классы. Вот хорошая статья, которая проведет вас через этот процесс. Он включает в себя пример использования альтернативных учетных данных.
  2. Используйте командлеты Quest Active Directory Management. Это обертки вокруг множества рекламных материалов, которые облегчают многие вещи. Они также позволяют вам ввести альтернативные учетные данные.

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

MattB был ударом по деньгам! Получил следующую работу:

$thisComputer = <SERVICE TAG FROM BIOS>
$found = $false

$strFilter = "(&(objectCategory=Computer))"

$objDomain = New-Object System.DirectoryServices.DirectoryEntry "LDAP://mydomain.com", <USER>, <PASSWORD>

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = "Subtree"

$colProplist = "name"
foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}

$colResults = $objSearcher.FindAll()

foreach ($objResult in $colResults)
    {$objItem = $objResult.Properties; 
        if ($objItem.name -eq $thisComputer) {
            $found = $true
        }   
    }

if ($found) { <DELETE MACHINE ACCOUNT > }

Теперь я доказал концепцию, зашифрую пароль, чтобы сделать его немного более безопасным.

Спасибо за вашу помощь!

Вы можете продолжать использовать ускоритель [ADSI] и передавать учетные данные, добавив следующую строку:

Get-Credential

Это должно быть одной из первых вещей в вашем сценарии. В моем собственном окружении мне нужно было написать скрипт для подключения к другому домену. С этим другим доменом у меня были разные учетные данные, поэтому написание следующего позволило мне сделать то, что мне нужно было сделать:

Get-Credential Import-csv test.csv | foreach {$ ou = [ADSI] "LDAP: // ou = пользователи,dc=test,dc=com" $newuser = $ou.Create("Пользователь", "cn=$name" $ ​​newuser.SetInfo()

Я понимаю, что приведенный выше код был использован для создания пользователя, но концепция должна быть верна для любого другого действия

Не похоже, что он вам все еще нужен, но вот ссылка о том, как создать учетные данные PowerShell.

Другие вопросы по тегам