Единственное место, где вы на самом деле разговариваете с AD, - $ADSI.psbase.commitchanges()
. Таким образом, единственное место, где вам нужно установить учетные данные, - это когда вы создаете $ADSI
.
Ускоритель типа [ADSI]
- это просто ярлык для создания объекта DirectoryEntry
. DirectoryEntry
имеет конструктор , который принимает учетные данные , но для его использования вы больше не можете использовать ускоритель типов. Вам понадобится пользователь New-Object
, например:
$ADSI = New-Object System.DirectoryServices.DirectoryEntry("LDAP://$OUPath", "username", "password")
Просто замените username
и password
учетными данными, которые имеют разрешение делать то, что вы делаете.
Если вы хотите, чтобы сценарий вызывал Get-Credential
и использовал любые учетные данные, которые вводит пользователь, вы можете использовать решение здесь .
Примечание: вам не нужно использовать psbase
в последних двух строках. Можете, если хотите, но функциональной разницы это не имеет. Можно обойтись без:
$ADSI.ObjectSecurity.SetAccessRule($ACE)
$ADSI.CommitChanges()