Я попадался такая же проблема, как я регулярно работаю с несколькими доменами. Я надеялся на более элегантное решение, но пока лучшее, что я придумал, - это сделать вашу работу еще на один шаг.
Если Get-ADDomainController -domain MyTrustedDomain -Discover
дает вам один сервер в целевом домене, вы можете передать его параметру -server для запроса этого DC. Вам необходимо предоставить учетные данные для запроса DC из другого домена, кроме вашего сеанса входа в систему, если не существует доверия.
$targetdomaindc = Get-ADDomainController -DomainName MyTrustedDomain -Discover
$targetdcname = $($targetdomaindc.hostname)
Get-ADDomainController -Filter * `
-Server $targetdcname `
-Credential (Get-Credential MyTrustedDomain\username) | ft HostName
или
Get-ADDomainController -Filter * `
-Server $((Get-ADDomainController -DomainName MyTrustedDomain -Discover).hostname) `
-Credential (Get-Credential MyTrustedDomain\username) | ft HostName
Если вы делаете такого рода вещи много, вы всегда можете сохранить свои учетные данные в переменную для повторного использования, $cred = Get-Credential MyTrustedDomain\username)
и сохранить повторные запросы. Пароль хранится как System.Security.SecureString и будет защищен до тех пор, пока вы сохраните его в своей сессии.
До тех пор, пока командлет Get-ADDomainController не будет обновлен, чтобы разрешить как параметр -filter, так и параметр Domainname, мы придерживаемся обходного пути.
отличное решение !! большое спасибо – Naigel
@LorenzoC Рад помочь! –
Есть ли аналогичный способ получить серверы из этого домена без использования модуля AD? что-то вроде '[System.DirectoryServices.ActiveDirectory.AnyComputer] :: FindAll ($ a)' – Naigel