我正在尝试设置一个方法,用户可以在其中告诉我用户名,我将其插入并且它将返回我的计算机名称。
//获取用户名
$username = Read-Host -prompt 'Username'
//获取DistinguishedName并存储
$usernameDN = Get-ADUser $username -properties * | SELECT DistinguishedName
//获取ComputerName
//每次都失败
Get-ADComputer -Filter {ManagedBy -eq $usernameDN} -properties * | SELECT CN,ManagedBy
//我收到的错误......几乎就像它必须是一个字符串
Get-ADComputer:无效值:''为扩展属性指定: '的ManagedBy&#39 ;.在行:1个字符:1 + Get-ADComputer -Filter {ManagedBy -eq $ usernamedn} -properties * | SE ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ + CategoryInfo:InvalidArgument:(:) [Get-ADComputer],ArgumentException + FullyQualifiedErrorId:ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Comm ands.GetADComputer
//所以你把它作为一个字符串
PS C:\WINDOWS\system32> Get-ADComputer -Filter {ManagedBy -eq '$usernamedn'} -properties * | SELECT CN,ManagedBy
//错误
Get-ADComputer:扩展属性中提供的身份信息: '的ManagedBy'无法解决。原因:'无法找到对象 身份:' $ usernamedn'在:' DC = ****,DC = *****'。'。在行:1个字符:1 + Get-ADComputer -Filter {ManagedBy -eq' $ usernamedn'} -properties * | ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~ + CategoryInfo:InvalidData:(:) [Get-ADComputer],ADIdentityResolutionException + FullyQualifiedErrorId:ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityResolutionException ,Microsoft.ActiveDirectory.Management.Commands.GetADComputer
//但是如果用文字DistinguishedName替换变量......它将起作用
PS C:\WINDOWS\system32> Get-ADComputer -Filter {ManagedBy -eq 'CN=*******\, ***** *.,OU=********,OU=*****,OU=******,DC=*****,DC=******'} -properties * | SELECT CN,ManagedBy
//结果
CN ManagedBy
-- ---------
********* CN=**\, ** *.,OU=***,OU=***,OU=***,DC=***,DC=**
********* CN=**\, ** *.,OU=***,OU=***,OU=***,DC=***,DC=**
所以我认为我的问题是Filter要求它是字符串,但是我无法找出正确的转义以使变量以这种方式读取。
我也尝试过字符串格式化,但我还没有完全理解
谢谢,
答案 0 :(得分:0)
我建议使用Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("A1:C10")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=holdCodes"
.ShowInput = True
.ShowError = True
End With
End If
End Sub
代替-LDAPFilter
并使用LDAP过滤字符串:
-Filter
值得您学习LDAP search filter syntax,因为这就是PowerShell必须“翻译”Get-ADUser -LDAPFilter "(managedBy=$usernameDN)"
。
答案 1 :(得分:0)
这只是一个表达问题,您的示例对我来说很好。您只是在{}中缺少了()。
Get-ADComputer -Filter {(ManagedBy -eq $usernameDN)} -properties * | SELECT CN,ManagedBy