PDA

Показать полную графическую версию : [решено] Set-ADComputer на .net


c4uran
11-09-2018, 11:37
Необходимо выгрузить с не доменного компьютера информацию в ad используя powershell

Эквивалент комманды:

Set-ADComputer "computername" -Replace @{extensionAttribute1="myattribute"}

только на языке .net чтобы можно было вызвать в powershell

Kazun
11-09-2018, 12:18
$pc = "computername$"
$obj = ([adsisearcher]"samaccountname=$pc").FindOne().GetDirectoryEntry()
if($obj) {
$obj.Put("extensionAttribute1", "myattribute")
$obj.SetInfo()
}

c4uran
11-09-2018, 12:29
А учетные данные как туда добавить?

строку:

$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, (Get-Content $PasswordFile | ConvertTo-SecureString -Key $key)

Kazun
11-09-2018, 12:33
Куда и как я уже отвечал - http://forum.oszone.net/post-2829121-12.html

c4uran
11-09-2018, 13:16
Даа я вскрыл себе мозг но разобрался)

спасибо большое, когда видишь этот синтаксис уже ничего не хочется

$pc="MSK-O001-STRING$"

$Domain = New-Object System.DirectoryServices.DirectoryEntry($DomainDN ,$Credential.UserName,$Credential.GetNetworkCredential().Password)
$Searcher.SearchRoot = $Domain
$Searcher.Filter = "(samaccountname=$pc)"
$obj = $Searcher.FindOne().GetDirectoryEntry()

Iska
11-09-2018, 21:06
когда видишь этот синтаксис уже ничего не хочется »
Ха! Что тут такого страшного? Всё достаточно обычно и типично. Но Вам таки стоит опробовать собственноручное составление запросов ADSI на LDAP с фильтрацией, используя OID'ы: Search Filter Syntax | Microsoft Docs (https://docs.microsoft.com/en-us/windows/desktop/adsi/search-filter-syntax) :). Ежели Когда осилите — никакой чёрт в виде AD Вам будет не страшен ;). Ну, разве что кроме страшных и ужасных слов ACL, DACL, SACL :).

c4uran
12-09-2018, 08:27
Просто логика фильтрации отличается от ps, здесь в начале пихаешь в определенные свойства объекта условия, а потом выполняешь сам объект, вроде логично, но впервой непривычно, когда разбираешься то уже понятно становится, меня еще интересует интеграция с azuread, но это когда ч уже встряну буду позже спрашивать, а еще спасибо господа большое, вы уже давно помогаете мне на этом форуме, очень признателен за ваше время и труд!

Iska
12-09-2018, 17:08
Просто логика фильтрации отличается от ps, »
c4uran, ничуть. Есть два диалекта — SQL (SQL Dialect | Microsoft Docs (https://docs.microsoft.com/en-us/windows/desktop/adsi/sql-dialect)) и LDAP (LDAP Dialect | Microsoft Docs (https://docs.microsoft.com/en-us/windows/desktop/adsi/ldap-dialect)), и, так или иначе, всё сводится к ним, и PowerShell пользует ровно те же самые средства. Вот, посмотрите выше (http://forum.oszone.net/post-2830882.html#post2830882) на код коллеги Kazun. Создаётся экземпляр класса DirectorySearcher Class (System.DirectoryServices) | Microsoft Docs (https://docs.microsoft.com/en-us/dotnet/api/system.directoryservices.directorysearcher?redirectedfrom=MSDN&view=netframework-4.7.2)) посредством перегруженного конструктора Directory Searcher(String) (https://docs.microsoft.com/en-us/dotnet/api/system.directoryservices.directorysearcher.-ctor?view=netframework-4.7.2#System_DirectoryServices_DirectorySearcher__ctor_System_String_), где параметром конструктору передаётся строка "samaccountname=ИмяКомпьютера", содержащая фильтр в формате LDAP.

Если я буду писать на WSH и пользовать библиотеку ADSI посредством Automation, або на C++ и обращаться к классам библиотеки, мне будут доступны те же самые два диалекта.

c4uran
13-09-2018, 14:54
В этих доках я реально плаваю, а есть описание для тех кто с нуля дот нет пытается понять?




© OSzone.net 2001-2012