Показать полную графическую версию : [решено] Set-ADComputer на .net
Необходимо выгрузить с не доменного компьютера информацию в ad используя powershell
Эквивалент комманды:
Set-ADComputer "computername" -Replace @{extensionAttribute1="myattribute"}
только на языке .net чтобы можно было вызвать в powershell
$pc = "computername$"
$obj = ([adsisearcher]"samaccountname=$pc").FindOne().GetDirectoryEntry()
if($obj) {
$obj.Put("extensionAttribute1", "myattribute")
$obj.SetInfo()
}
А учетные данные как туда добавить?
строку:
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, (Get-Content $PasswordFile | ConvertTo-SecureString -Key $key)
Куда и как я уже отвечал - http://forum.oszone.net/post-2829121-12.html
Даа я вскрыл себе мозг но разобрался)
спасибо большое, когда видишь этот синтаксис уже ничего не хочется
$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()
когда видишь этот синтаксис уже ничего не хочется »
Ха! Что тут такого страшного? Всё достаточно обычно и типично. Но Вам таки стоит опробовать собственноручное составление запросов ADSI на LDAP с фильтрацией, используя OID'ы: Search Filter Syntax | Microsoft Docs (https://docs.microsoft.com/en-us/windows/desktop/adsi/search-filter-syntax) :). Ежели Когда осилите — никакой чёрт в виде AD Вам будет не страшен ;). Ну, разве что кроме страшных и ужасных слов ACL, DACL, SACL :).
Просто логика фильтрации отличается от ps, здесь в начале пихаешь в определенные свойства объекта условия, а потом выполняешь сам объект, вроде логично, но впервой непривычно, когда разбираешься то уже понятно становится, меня еще интересует интеграция с azuread, но это когда ч уже встряну буду позже спрашивать, а еще спасибо господа большое, вы уже давно помогаете мне на этом форуме, очень признателен за ваше время и труд!
Просто логика фильтрации отличается от 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++ и обращаться к классам библиотеки, мне будут доступны те же самые два диалекта.
В этих доках я реально плаваю, а есть описание для тех кто с нуля дот нет пытается понять?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.