调用InvokeSet异常,缓存中找不到目录属性

Exception calling InvokeSet, The directory property cannot be found in the cache

当运行下面的代码我收到错误 Exception calling "InvokeSet" with "2" argument(s): "The directory property cannot be found in the cache." 在线存在此错误是因为变量为 null 的问题。使用 Write-Host 后,我​​得出的结论是 $User = [ADSI]$LdapUser 行是导致问题的原因。

#Set Remote Control Settings Permissions 
        $LdapUser = "LDAP://" + (Get-ADUser $username).distinguishedName
        Write-Host $LdapUser
        $User = [ADSI]$LdapUser
        Write-Host $User
        $User.InvokeSet("EnableRemoteControl",5)
        $User.InvokeSet("TerminalServicesHomeDrive","U:\")
        $User.setinfo()

$LdapUser 的 Write-Host 命令显示 "LDAP://CN=Test Taco,CN=Users,DC=blah,DC=org" 这是正确的,但是 $User 的 Write-Host 命令显示 System.DirectoryServices.DirectoryEntry 为什么 $User 变量显示错误信息,我该如何解决?

write-host只能接受一串文本

$User 不是字符串,它更像是一个数组,因为它包含两行信息。它包含“distinguishedName”和“路径”。

您可以输入:

Write-Host $User.path
Write-Host $User.distinguishedName

问题是这个命令:

$User.InvokeSet("EnableRemoteControl",5)

你为什么用 5?用 2 测试,似乎有效

$User.InvokeSet("EnableRemoteControl",2)

我的代码的问题是我使用数字 5 来启用远程控制以及使用 U:\ 正确的代码使用 2 并且没有反斜杠所以 U:

#Set Remote Control Settings Permissions 
        $LdapUser = "LDAP://" + (Get-ADUser $username).distinguishedName
        $User = [ADSI]$LdapUser
        Write-Host $User
        $User.InvokeSet("EnableRemoteControl",2)
        $User.InvokeSet("TerminalServicesHomeDrive","U:")
        $User.setinfo()

pause

感谢@Judd Davey 帮助我完成他的回答,让我意识到我的回答可能哪里出错了。我不太确定为什么它会给我这样一个奇怪的错误。