PowerShell InvokeGet 找不到目录属性

2024-01-08

我们需要检索活动目录中有关“终端服务”的信息。为此,我创建了一个在大多数情况下都能正常工作的函数。但是,对于某些用户,我们遇到了问题。

代码:

Function Get-ADTSProfile {
               [CmdletBinding()]
            Param(
                [Parameter(Mandatory=$true,Position=0)]
                [String] $DistinguishedName,
                [parameter(Mandatory=$true,Position=1)]
                [ValidateNotNullOrEmpty()]
                [ValidateSet('UserProfile','AllowLogon','HomeDirectory','HomeDrive')]
                [String]$Property
            )
            Begin {
                $User = [ADSI]"LDAP://$DistinguishedName"
            }
            Process {
                Switch ($Property) {
                    'AllowLogon'    {if ($($User.psbase.InvokeGet('allowLogon')) -eq '1'){$True}else{$False}}
                    'HomeDirectory' {$User.psbase.InvokeGet('TerminalServicesHomeDirectory')}
                    'HomeDrive'     {$User.psbase.InvokeGet('TerminalServicesHomeDrive')}
                    'UserProfile'   {$User.psbase.InvokeGet('TerminalServicesProfilePath')}
                }   
            }
        }

错误:

Get-ADTSProfile -DistinguishedName 'CN=test\, test (Den Bosch) NLD,OU=Users,OU=Disabled,OU=NLD,OU=EU,DC=domain,DC=net' -Property 'UserProfile'
Exception calling "InvokeGet" with "1" argument(s): "The directory property cannot be fo
und in the cache.
"
At S:\Test\Brecht\Testie.ps1:84 char:38
+                     'UserProfile'   {$User.psbase.InvokeGet('TerminalServicesPro ...
+                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodTargetInvocation

我真的不明白为什么它对某些人有效而不是对所有人有效。


我最近一直致力于一个使用 ADSI 来设置和读取终端服务属性的项目。根据我的测试,每当您执行“InvokeGet({TS Attribute})”时,都会抛出 COM 异常,并显示消息“在缓存中找不到目录属性”

这似乎仅在 AD 中未设置“userParameters”属性时才会发生。也许该属性会在内部检查 ADSI 缓存中的 userParameters?因此,我从逻辑上认为,您可以首先检查 DirectoryEntry 中的 userParameters,然后尝试读取属性,或者将其设置为构造 blob

if ($user.Properties.Contains("userParameters"))
{
 #Read the Property from ADSI
 Write-Host $user.InvokeGet("TerminalServicesProfilePath")
} else {
 #Set the property to construct the userParameter blob
 $user.InvokeSet("TerminalServicesProfilePath", "\\somepath")
 $user.CommitChanges()
}

即使未设置 userParameters 属性,您仍然可以执行 InvokeSet 来构造它

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PowerShell InvokeGet 找不到目录属性 的相关文章

随机推荐

  • Android 版 Google plus:凭据无效

    我使用以下代码来获取访问令牌 在连接到 Google 后 获取个人资料信息和电子邮件 String sAccessToken GoogleAuthUtil getToken this mPlusClient getAccountName o
  • Web 表单脚手架而不是 MVC

    可以使用 Web 表单代码搭建脚手架吗 thanks ASP NET 动态数据 http www asp net dynamicdata是一个应该与 Web 表单和 MVC 一起使用的脚手架解决方案
  • C# 中浮点和双精度数据类型的实际范围是多少?

    我正在学习 C 并试图获得 C 中数据类型实际范围的逻辑视觉表示 我已经介绍了整数 现在介绍了浮点和双精度数据类型 8 位 1 字节 sbyte 128 到 127 8 位 1 字节 字节 0 到 255 16 位 2 字节 短 32 76
  • Safari 6 中未设置 Cookie

    晚上好 这个问题我已经问过几次了 没有得到答复 希望这次一切顺利 我使用 php 和 Facebook PHP SDK 开发 Facebook 应用程序已经有几年了 最近我一直在为 Safari 和 Facebook 的登录而烦恼 问题是
  • dc.js 带复选框的多选菜单

    我有一个数据集 其中包含 5 列 gt 国家 地区 ID 值和部门 我能够使用值和国家 地区在 dc js 中创建行图 其中国家 地区是我的维度 var rowChart dc rowChart rowChart d3 csv data c
  • g++ 错误:“malloc”未在此范围内声明

    我在 Fedora 下使用 g 编译 openGL 项目 其中包含以下行 textureImage GLubyte malloc sizeof GLubyte RESOURCE LENGTH 编译时 g 错误提示 error malloc
  • 修剪字符串中的最后一个字符

    我有一个字符串说 Hello world 我想做一个修剪或移除以取出 关世界但不关你好 Hello world TrimEnd 阅读更多 https msdn microsoft com en us library 64zz6w66 v v
  • JScrollPane 中的 JTable 具有可调整大小的 JFrame 固定大小?

    我有一个JTable里面的一个JScrollPane 我想让列在调整大小时保持固定 行保持相同的大小 并且有一个滚动条可以上下移动 但我无法让滚动条在垂直方向上以相同的方式工作 这是我的项目的图片 其中 Duke 的 y 轴完全正常 并且有
  • Haskell - Foldl 和 Foldr?

    之间的区别是foldl and foldr只是循环的方向 我认为他们所做的事情有所不同 而不仅仅是方向上的不同 如果您的函数不具有关联性 即 用括号括起表达式的方式很重要 则存在差异 例如 foldr 0 1 10 5 but foldl
  • java.lang.NoSuchMethodError: org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest

    我正在通过多部分过滤器处理文件上传 如下所述here http balusc blogspot com 2007 11 multipartfilter html 我创建了一个 WAR 文件并部署在 Weblogic 10 3 3 服务器上并
  • window.location 与 just location

    在网络上 我看到大量 JavaScript 程序员在编写window location而不仅仅是location 我很好奇是否有人可以解释原因 window是全局对象 因此没有必要包含 不是吗 我的意思是 你看不到人们写window Mat
  • 允许 Firebase Analytics 域名而不允许其他 Google 服务

    我有一个应用程序 旨在在防火墙后面的内部网络内使用 需要为此应用程序启用 Firebase Analytics 并且网络管理员需要允许 Firebase 端点而不允许所有 Google 服务 到目前为止我才知道我需要允许 firebase
  • 我可以在调用纯虚函数时禁用异常吗?

    我有一些代码看起来像这样 class Writable public virtual void putc const char ch 0 protected virtual Writable class Readable public vi
  • 尝试添加强类型视图在 MVC 项目中找不到任何类

    我有一个非常奇怪的问题 每当我尝试在 ASP NET MVC2 中使用 添加视图 对话框 然后尝试通过从可用类的下拉列表中选择 视图数据类 来 创建强类型视图 时 没有任何类 模型 在我的 MVC 项目中出现了 非常奇怪的部分是我的 MVC
  • 如何在 KeyDown 中确定 Shift + Tab 被按下

    How can I determine in KeyDown that Tab was pressed private void DateTimePicker BirthDate KeyDown object sender KeyEvent
  • 当我们存储长度小于10的字符串时,varchar(10)和varchar(1000)有什么区别吗?

    我理解之间的区别char and varchar但我不确定的确切含义varchar最大长度 当我们存储string长度小于10的有什么区别varchar 10 and varchar 100 我认为这两种情况都使用相同的空间并具有相同的性能
  • 如何在 F# 中连接字符串列表?

    我现在正在尝试这个 但我还没有完全解决方法签名 有人吗 messages 是 seq string 的一个字段 let messageString List reduce messages fun m1 m2 gt m1 m2 Enviro
  • 创建通用循环缓冲区

    鉴于希望从其内容中抽象出循环缓冲区的结构 并从以下代码段开始 由this http en wikipedia org wiki Circular buffer维基百科条目 typedef struct int value ElemType
  • 使用WebFlux的Reactive编程如何处理依赖的外部api调用

    我是响应式编程的新手 我想知道的一件事是 假设我们有一个 api 它在内部调用 3 个其他 api 其中第一个 api 的结果被输入到第二个 api 而第二个 api 的输出被输入到第三个 它不会减少到基于正常单线程的执行吗 如果是的话 那
  • PowerShell InvokeGet 找不到目录属性

    我们需要检索活动目录中有关 终端服务 的信息 为此 我创建了一个在大多数情况下都能正常工作的函数 但是 对于某些用户 我们遇到了问题 代码 Function Get ADTSProfile CmdletBinding Param Param