Почему ADSI, а не командлеты AD?
Я собираюсь предположить, что ответом на вышеупомянутое является то, что у вас нет RSAT на вашей рабочей станции. Однако, вам вам также не нужно устанавливать это. Просто установите sh удаленный сеанс для любого D C или другого хоста, на котором включен RSAT, и передайте командлет на вашу рабочую станцию через явное PowerShell remoting , что является очень распространенной вещью.
В любом случае, работа с MS Terminal Services через ADSI не является спецификацией PowerShell c и не является чем-то новым. Существуют летние примеры кода VBScript, во всем Интернете показывающие этот точный вариант использования, и, таким образом, то же самое можно сделать с любым сценарием. Вы бы сделали этот параметр на уровне домена, и репликация D C позаботится обо всем остальном.
Поиск с использованием вашего любимого движка, скажем ' powershell adsi connect to server 'или' 'powershell' .psbase.Invokeset ("Terminalservicesprofilepath" adsi"или" adsi set Terminalservicesprofilepath"и покажет вам множество примеров:
# Connect to a domain
$domainname = "SomeDomainName" #or use $env:userdomain
[ADSI]$domain = "WinNT://$domainname"
Или использовать готовые вещи
Привет, сценарист! Как я могу редактировать профили сервера терминалов для пользователей в Active Directory?
# QueryAndModifyTerminalServerProperties.ps1
function SetTSProperties()
{
$ou = [adsi]"LDAP://ou=mytestou,dc=nwtraders,dc=com"
$user = $ou.psbase.get_children().find($userDN)
$user.psbase.invokeSet("allowLogon", 1)
$user.psbase.invokeSet("TerminalServicesHomeDirectory", $hDirValue)
$user.psbase.invokeSet("TerminalServicesProfilePath", $ppValue)
$user.psbase.invokeSet("TerminalServicesHomeDrive", $hdValue)
$user.setinfo()
} #end SetTSProperties
function QueryTSProperties()
{
$ou = [adsi]"LDAP://ou=mytestou,dc=nwtraders,dc=com"
$user = $ou.psbase.get_children().find($userDN)
foreach ($property in $aryTSProperties)
{
"$($Property) value: $($user.psbase.invokeget($Property))"
} #end foreach
} #end QueryTSProperties
$userDN = "CN=My User"
$hDirValue = "\\Hamburg\TSUsers\Home\TestUser"
$hdValue = "t:"
$ppValue = "\\Hamburg\TSUsers\Profiles\TestUser"
$aryTSProperties = "allowLogon", "TerminalServicesHomeDirectory",
"TerminalServicesHomeDrive", "TerminalServicesProfilePath"
SetTSProperties
queryTSProperties