是否可以枚举通过 [ADSI] 对象的 Invoke() 可用的所有方法和属性?

2023-11-21

我很好奇是否有人可以描述如何通过绑定实例枚举可用的 ADSI 方法:[ADSI]$instance.psbase.Invoke()?

研究已经出现“请参阅 ADSI 接口的文档”。但我对这个答案不是特别满意。

如果我实例化为:

[ADSI]$lhost_group="WinNT://./Administrators,group"

然后尝试:

@($lhost_group.psbase.Invoke("Members")) | foreach-object {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}

Powershell 将返回out of GetProperty("Name")对于组中包含的每个对象。

如何枚举通过任何给定 ADSI 接口可用的所有可用方法和属性?

谢伊·利维的回答是另一个语法示例,其中[ADSI]$_.GetTypes().InvokeMember() and [ADSI]$_.psbase.Invoke()被使用。


答案是否定的,并且不太可能改变。我和你一样对这个答案感到不满,但我可以提供一些技术背景来支持和解释它。

核心问题是本机代码 ADSI 对象必须实现 COM 接口 IDispatch [它允许调用后期绑定方法],但它们不一定实现 ITypeInfo [它允许类似反射的行为]。在 PowerShell 中,实现 IDispatch 但不实现 ITypeInfo 的 COM 对象会导致一组奇怪的限制,这就是您所注意到的。

WinNT ADSI 提供程序至少已有 15 年历史,而且它从来都不是一个强大的功能。这是一个占位符写的beforeActive Directory 发布(远远早于 CLR 或 PowerShell)。当时,Microsoft 的“脚本”意味着 VBScript 的早期版本,并对 JScript 提供一定支持,这两者都依赖于 IDispatch 并且从未使用过 ITypeInfo。

这是 PowerShell 早期讨论的一个话题,当时一位 PowerShell 团队成员说:

2006 年 7 月 14 日

...如果 ITypeInfo 存在,则 PowerShell 无法显示 COM 对象的方法 未提供接口。这个问题很快就会得到解决。解决方法是使用 类型.InvokeMethod()。

PowerShell 对 COM 对象的支持有所改进,但完整的修复从未实现。我认为团队成员可能过度承诺了技术上可行的事情。这可能会让人们感到困惑。几年前,我向团队中的一位开发主管朋友询问了这个问题;他显然熟悉这个问题,并表示该用例不是高优先级,并提到了解决方法。

PowerShell 团队一直在提供令人印象深刻的功能和一些错误修复,但坦率地说,我认为这个问题永远不会成为错误栏。

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

是否可以枚举通过 [ADSI] 对象的 Invoke() 可用的所有方法和属性? 的相关文章

  • 在远程桌面上使用 Powershell 获取 Windows DisplayLanguage

    我正在尝试通过 powershell 获取 Windows 显示语言设置远程计算机 我尝试了 Get WinUserLanguageList 但这会返回所有语言的列表 Get WinSystemLocale 和 Get Culture 也不
  • SQL:将一个表中的所有记录插入到另一表中,而不指定列

    我想将备份表 foo bk 中的所有记录插入到 foot 表中 而不指定特定的列 如果我尝试这个查询 INSERT INTO foo SELECT FROM foo bk 我会收到错误 插入错误 列名称或提供的值的数量与表定义不匹配 是否可
  • 从 PowerShell 运行 SSIS 包,无需部署项目

    This https learn microsoft com en us sql integration services ssis quickstart run powershell view sql server ver16 ssis
  • Java获取编译时安全方法名

    在使用反射类和注释时 我发现没有明确的方法以编译时安全的方式引用方法名称 我真正想要的是能够在注释中引用方法 可能看起来像 CallAfter method Foo class foo void Bar 目前 您只能使用字符串来执行此操作
  • 在 C# 中使用反射列出枚举中的值

    我正在尝试使用反射来列出一个 Visual Studio 解决方案内的各个项目中的一些类的公共成员和方法 我尝试访问的所有类都是 C 的 并且它们都是从 C 类访问的 我用来进行这些调用的代码如下 public void PopulateE
  • Python:使类可迭代

    我继承了一个包含许多大型类的项目 这些类仅由类对象 整数 字符串等 组成 我希望能够检查属性是否存在 而无需手动定义属性列表 是否可以制作一条蟒蛇classiterable 本身使用标准语法 也就是说 我希望能够使用迭代所有类的属性for
  • ES2015 中 `export { foo as default }` 有效吗?

    我收到了GitHub 上的问题 https github com benmosher eslint plugin import issues 54关于我的 ES2015 模块导入 导出验证插件 ESLint 无法识别default使用以下语
  • 填充 datagridview

    我正在开发一个表单 它将在所有连接的驱动器中搜索 PST 文件 我可以使用以下命令让它工作 Get PSDrive PSProvider filesystem get childitem root include pst r select
  • 将变量传递给 Start-Job

    我必须在这里遗漏一些非常简单的东西 这是一个非常基本的脚本来说明我正在尝试的内容 Computers comp1 comp2 ScriptBlock New Item C Temp C txt Force Foreach C in Comp
  • Import-Csv - 成员已存在问题

    我必须将多个 CSV 文件合并为一个文件 每个 CSV 都有一个标题 其中一列标题是相同的 理想情况下 最终文件 all out csv 必须有一个标头 我运行 PowerShell 代码 Import Csv out 1 result c
  • 为什么这个 if 语句会导致语法错误

    我正在尝试设置一个 elif 语句 如果用户按下 Enter 键 代码将继续 但是我不断遇到语法错误 GTIN 0 while True try GTIN int input input your gtin 8 number if len
  • 在 Powershell 4 中压缩和解压缩文件

    我使用的是 Windows Server 2012 R2 64 位 我有 powershell 版本 4 可用 我正在尝试压缩和解压缩文件 当我尝试 Write Zip 命令时 它会抛出以下错误 Write Zip 术语 Write Zip
  • Python问题:打开和关闭文件返回语法错误

    大家好 我发现了这个有用的 python 脚本 它允许我从网站获取一些天气数据 我将创建一个文件和其中的数据集 有些东西不起作用 它返回此错误 File
  • 将 Powershell 输出转换为 Markdown 文件

    我有以下代码 xmlFile C Users kraer Desktop bom xml xml xml Get Content xmlFile xml bom components component ForEach Object fin
  • PowerShell中有解析TOML文件的模块吗?

    我正在尝试寻找一个TOML https toml ioPowerShell 的文件解析器 我也找不到任何有关它的信息PowerShell 画廊 https www powershellgallery com 或在预安装的 PowerShel
  • Powershell 将单个字符串与多个正则表达式匹配?

    除了依次迭代每个正则表达式之外 是否有一种更 powershelly 的方式将单个字符串与正则表达式的数组 集合进行匹配 我真正想做的是这样的 database Name match includeRegexArray 考虑到 Powers
  • Java注释处理器:检查TypeMirror是否实现特定接口

    我正在使用 Java 注释处理器 我的注释 foo用于标记可以在运行时读取到文件或从文件中读取的字段变量 但是 我想检查变量类型是否实现Serializable在编译时 这样如果该字段不可序列化 我可以在编译时给出警告 错误 我不需要实际检
  • 反思 Groovy 脚本中声明的函数

    有没有一种方法可以获取 Groovy 脚本中声明的函数的反射数据 该脚本已通过GroovyShell目的 具体来说 我想枚举脚本中的函数并访问附加到它们的注释 Put this到 Groovy 脚本的最后一行 它将作为脚本的返回值 a la
  • 当一组凭据下的计划任务启动的进程在另一组凭据下运行另一个程序时,Windows 是否有限制

    所以我有一个简单的例子 其中我有应用程序 A 它对用户 X 本地管理员 有一些硬编码的凭据 然后它使用硬编码的绝对路径启动带有这些凭据的应用程序 B A 和 B 以及 dotnet 控制台应用程序 但是它们不与控制台交互 只是将信息写入文件
  • 在 PowerShell 中显示 Unicode 表情符号

    我想在 PowerShell 中显示像 U 1F4A9 这样的 Unicode 表情符号 我知道这仅在 ISE 控制台内有效 但我不知道如何操作 到目前为止我尝试过的 CharBytes System Text Encoding Unico

随机推荐

  • Ruby 安装 (2.2.2) 在 macOS Big Sur 中失败

    我在 macOS Big Sur 上安装 Ruby 2 2 2 时遇到了一些问题 有人遇到过类似的问题并且能够解决吗 非常感谢 Error Downloading openssl 1 0 2u tar gz gt https dqw8nmj
  • Android M:如何获取当前前台活动包名称(从服务)

    在Android L上很容易从ActivityManager服务中获取正在运行的任务列表 并且首先返回当前活动的任务 但它不再适用于 Android M 返回列表仅包含我的应用程序任务 有什么办法解决吗 My code List
  • 计数汽车 OpenCV + Python 问题

    我已经trying在过线时计算汽车数量 它可以工作 但问题是它对一辆车进行多次计数 这是荒谬的 因为它只应该计算一次 这是我正在使用的代码 import cv2 import numpy as np bgsMOG cv2 Backgroun
  • 为什么 (long)9223372036854665200d 给我 9223372036854665216?

    我知道一些带有精确误差的奇怪东西 但我无法理解 Why is long 9223372036854665200d给我9223372036854665216 9223372036854665200d是类型常量double 然而 9223372
  • Ruby 和 Python 版本的“self”有什么区别?

    我已经完成了一些 Python 但现在才开始使用 Ruby我可以很好地解释这两种语言中 自我 之间的区别 乍一看很明显 Self 不是 Python 中的关键字 但无论你如何称呼它 都有一个 self like 值 Python 方法接收
  • 从 Android 应用程序安装程序和主屏幕启动应用程序时出现活动堆栈排序问题

    仅出于测试目的 我允许通过 URL 下载和安装我的应用程序 APK 一旦下载到手机上 它就可以通过 Android 应用程序安装程序启动 用户可以选择将其安装到设备上然后运行 考虑一下我们是否以上述方式下载并运行应用程序 我的应用程序中的主
  • 如何将 Expander ToggleButton 放在右侧

    默认情况下 扩展器有一个左对齐的切换按钮 但在我的 WPF 应用程序中 我希望切换按钮位于标题的右侧 而不需要 Expression Blend 的帮助 只是简单的 XAML 和 或 C 我的扩展器包含一个垂直方向的堆栈面板 其中标签作为其
  • 我应该如何将 Python 嵌入到 C++ Builder / Delphi 2010 应用程序中?

    我有兴趣尝试在我的应用程序中嵌入 Python 让用户在应用程序环境中运行 Python 脚本 访问内部 C 实现的 对象等 我对此很陌生 所以不知道到底是什么我正在做 我读过了将 Python 嵌入到另一个应用程序中 尽管这似乎只讨论 C
  • 我需要 __closure__

    我刚刚查看了这个非常有趣的思维导图 http www mindmeister com 10510492 python underscore 我想知道一些新的含义是什么 比如 code and closure 我用谷歌搜索了一下 但没有具体的
  • ggplot2 - 在绘图之外进行注释

    我想将样本大小值与绘图上的点相关联 我可以用geom text将数字放置在点附近 但这很混乱 将它们沿着地块的外边缘排列起来会干净得多 例如 我有 df data frame y c cat1 cat2 cat3 x c 12 10 14
  • ASP.NET 黄屏死机 (YSOD) 可以按需生成或捕获吗?

    例如 我们只想从 Global asax 错误处理程序捕获 YSOD 输出以在错误报告电子邮件中使用 有没有办法利用内置的 ysod 生成器 我会调查ELMAH ASP NET 的错误日志模块和处理程序 ELMAH 错误记录模块和 Hand
  • 本地 MQTT mosquitto 实例正在连接 ECONNREFUSED 127.0.0.1:1883

    我正在尝试通过 docker 和 docker compose 运行本地 mosquitto 代理 发布者和订阅者设置 但发布者无法连接到代理 但是 通过 cli 连接到本地代理可以正常工作 运行以下设置时出现以下错误 Error conn
  • 如何/是否在 Xcode 中制作通用故事板

    在 Xcode 中创建情节提要文件时 必须选择它是适用于 iPhone 还是 iPad 这意味着人们应该始终将 iPhone 和 iPad UI 放入单独的故事板中 这是真的 我的应用程序有多个故事板 虽然 iPhone 和 iPad 之间
  • 使用 Vagrant Docker 提供程序从 boot2docker 转发端口

    我正在尝试利用 Vagrant 1 6 的 Docker 提供程序 但似乎遇到了障碍 我可以成功启动 Docker 容器和来宾操作系统 但无法从主机操作系统访问容器内启动的服务 这是我的 Vagrantfile VAGRANTFILE AP
  • Python 在类定义中实例化类

    我正在尝试向保存该类实例的类添加一个变量 以下是我的代码的缩短版本 class Classy def init self self hi HI CLASSIES variable holds instances of class Class
  • VueJS 渲染 VNode

    tl dr 给定一个 VueJSVNode对象 如何获取渲染后生成的 HTML 元素 e g gt temp1 VNode tag h1 data undefined children Array 1 text undefined elm
  • Spring Boot 图像上传和服务

    I m making new Spring Boot app and want to be able to store and serve images I want images to be stored in applications
  • Android:防止显示屏关闭

    我编写了一个小游戏 仅由一些传感器控制 没有触摸屏输入或类似的东西 问题是 游戏几秒钟后 屏幕关闭 因为没有触摸输入 是否有类似清单条目之类的东西可以防止屏幕出现这种行为 regards 在游戏的 Activity 中使用此代码作为 sup
  • 如何在 NTFS 上创建稀疏文件?

    我正在测试一个稀疏文件 但我的测试代码不能很好地工作 HANDLE h CreateFileW L D sparse test GENERIC READ GENERIC WRITE FILE SHARE READ FILE SHARE WR
  • 是否可以枚举通过 [ADSI] 对象的 Invoke() 可用的所有方法和属性?

    我很好奇是否有人可以描述如何通过绑定实例枚举可用的 ADSI 方法 ADSI instance psbase Invoke 研究已经出现 请参阅 ADSI 接口的文档 但我对这个答案不是特别满意 如果我实例化为 ADSI lhost gro