Укажите Учетные данные для выполнения Скрипта Powershell для Запросов AD

  1. Если Вы хотите просто отправить почту (без полноценного MTA), можно установить nullmailer пакеты.
  2. Да, необходимо позволить исходящие соединения с портом TCP 25. Чтобы быть более строгими, откройтесь только к Вашему адресу сервера SMTP.
1
задан 25 May 2010 в 13:19
4 ответа

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

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

Я никогда не пробовал ни один из них, таким образом, потребуется некоторый метод проб и ошибок.

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

  1. Используйте платформу.NET DirectoryService классы. Вот хорошая статья, которая обходит Вас посредством этого процесса. Это включает пример с помощью альтернативных учетных данных.
  2. Используйте управление Active Directory Quest cmdlets. Это обертки вокруг большого количества AD материала, которое делает много вещей легче. Они также позволяют Вам передать в альтернативных учетных данных.
3
ответ дан 3 December 2019 в 16:58
  • 1
    Я много раз использовал пространство имен DirectoryServices и в PowerShell и в недоменный точно, как Вы описываете. Это может быть немного подробным, но это делает и работает хорошо. –  Goyuix 25 May 2010 в 18:02

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

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 > }

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

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

2
ответ дан 3 December 2019 в 16:58

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

0
ответ дан 3 December 2019 в 16:58

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

Получать-учетные-данные

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

Импорт-csv получать-учетных-данных test.csv | foreach {$ou = [ADSI] "LDAP://ou=users, dc=test, dc=com" $newuser = $ou. Создайте ("Пользователь", "cn= $name" $newuser. SetInfo ()

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

1
ответ дан 3 December 2019 в 16:58

Теги

Похожие вопросы