收到有关属性与采用管道输入的任何参数都不匹配的错误

问题描述 投票:0回答:2

尝试比较两个用户 (CopyFromUser) 和 (CopyToUser),获取 (Copytouser) 缺少的组,显示组并选择我要将 (copytouser) 添加到的组。

收到此错误:输入对象无法绑定到命令的任何参数,因为该命令不采用管道输入,或者输入及其属性与采用管道输入的任何参数都不匹配。

有关错误的更多信息:Out-Gridview 可以工作并显示组,我可以选择哪个组,但它不会触发错误 Add-ADgroupmember。

Powershell代码:

$CopyFromUser = Get-ADUser usertest -prop MemberOf
$CopyToUser = Get-ADUser dsstest -prop MemberOf

$MissingGroups = Compare-Object $CopyFromUser $CopyToUser -Property MemberOf | ? SideIndicator -eq '<='

$GroupsObj = $MissingGroups.MemberOf | Get-ADGroup –prop Description | Select Name,Description

$GroupsObj | Out-GridView -PassThru | Add-ADGroupMember -Members $CopyToUser

期望我可以使用 Out-GridView -PassThru 来选择要添加 CopyToUser 的组

powershell active-directory
2个回答
0
投票

出现此问题的原因是您正在使用

Select Name, Description
并且
Add-ADGroupMember
不知道如何处理具有这 2 个属性的管道对象。
您必须保留至少 1 个可以从管道绑定到 的属性
-Identity
然后在管道到
Add-ADGroupMember
之前扩展该属性:

  • 一个响亮的名字
  • GUID(对象GUID)
  • 安全标识符(objectSid)
  • 安全帐户管理员帐户名称 (sAMAccountName)

此外,您之前的逻辑可以通过使用 Active Directory 过滤器来简化,不需要

Compare-Object
或其他任何东西。 只需查询 AD 中包含
$CopyFromUser
为成员且没有
$CopyFromUser
为成员的群组即可。

$CopyFromUser = (Get-ADUser usertest).DistinguishedName
$CopyToUser = (Get-ADUser dsstest).DistinguishedName

$getADGroupSplat = @{
    LDAPFilter = "(&(member=$CopyFromUser)(!member=$CopyToUser))"
    Properties = 'Description'
}

Get-ADGroup @getADGroupSplat |
    Select-Object Name, Description, DistinguishedName |
    Out-GridView -PassThru |
    ForEach-Object DistinguishedName |
    Add-ADGroupMember -Members $CopyToUser

0
投票

您的比较应该只比较用户所属的组列表 - 而不是使用属性“MemberOf”的用户对象本身。

这样的东西应该有效:

$CopyFromUser = Get-ADUser -Identity usertest -Properties MemberOf
$CopyToUser = Get-ADUser -Identity destest -Properties MemberOf

$MissingGroups = 
    Compare-Object $CopyFromUser.MemberOf $CopyToUser.MemberOf | 
        Where-Object -Property SideIndicator -EQ -Value '<='
            

$GroupsObj = 
    $MissingGroups.InputObject | 
        Get-ADGroup -Properties Description | 
            Select-Object Name,Description

($GroupsObj | 
    Out-GridView -PassThru ).Name | 
        Add-ADGroupMember -Members $CopyToUser
© www.soinside.com 2019 - 2024. All rights reserved.