首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell的ADS_CHASE_REFERRALS_EXTERNAL

Powershell的ADS_CHASE_REFERRALS_EXTERNAL
EN

Stack Overflow用户
提问于 2014-07-04 21:37:56
回答 1查看 123关注 0票数 0

我将VBScript转换为Powershell。这是我遇到的许多问题之一:

方法调用失败,因为ADODB.CommandClass不包含名为“Properties”的方法。

代码如下:

代码语言:javascript
复制
    $objConnection = new-Object  -com "ADODB.Connection"
    $objCommand = new-Object -com "ADODB.Command"

    $objConnection.Provider = "ADsDSOObject"
    $objConnection.Open( "Active Directory Provider")
    $objCommand.ActiveConnection = $objConnection

    $objCommand.CommandText = "Select Name From '" + $ADSPath + "' where " + $SearchField + " = '" + $SearchValue + "'"
    $objCommand.Properties("Chase referrals") = ADS_CHASE_REFERRALS_EXTERNAL

问题可能是因为ADS_CHASE_REFERRALS_EXTERNAL只为VB工作。在Powershell中有什么解决方案或适当的方法来做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-05 01:20:19

Properties成员不是函数,而是powershell属性:

代码语言:javascript
复制
# ~> $objCommand | get-member Properties


   TypeName: System.__ComObject#{986761e8-7269-4890-aa65-ad7c03697a6d}

Name       MemberType Definition                     
----       ---------- ----------                     
Properties Property   Properties Properties () {get} 

从签名中可以看到,它返回一个Properties对象,它是Com对象的集合,每个对象都是具有以下成员的com对象:

代码语言:javascript
复制
# ~> $objCommand.Properties | get-member


   TypeName: System.__ComObject#{00000503-0000-0010-8000-00aa006d2ea4}

Name       MemberType Definition                    
----       ---------- ----------                    
Attributes Property   int Attributes () {get} {set} 
Name       Property   string Name () {get}          
Type       Property   DataTypeEnum Type () {get}    
Value      Property   Variant Value () {get} {set}  

要获得您感兴趣的属性,最简单的方法是遍历返回的对象,使用感兴趣的名称查找属性,然后根据您的意愿设置值:

代码语言:javascript
复制
($objCommand.Properties | where{$_.Name -eq "Chase referrals"}).Value = ADS_CHASE_REFERRALS_EXTERNAL

如果你必须经常这样做,那就有点尴尬了,所以也许你可以把它变成一个函数:

代码语言:javascript
复制
function Set-ADOCommandPreoprty($objCOmmand, [string]$propertyName, $newValue)
{
    ($objCommand.Properties | ?{$_.Name -eq $propertyName}).Value = $newValue
}

那就这样说吧:

代码语言:javascript
复制
Set-ADOCommandPreoprty $objCommand "Chase referrals" ADS_CHASE_REFERRALS_EXTERNAL
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24580985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档