2016-10-24 2 views
0

아래 코드를 작성했는데 작동하지 않는 사람을 알아 내지 못했습니다. 이 작업을 수동으로 수행하면 문제가되는 것 같습니다. 내 변수가 for-eachobject에 배열로 들어 가지 않고 변수의 전체 내용이 한 번에 하나의 컴퓨터 이름 대신 사용됩니다.powershell을 사용하여 메일 그룹에 컴퓨터를 추가하는 방법

도움을 주시면 감사하겠습니다.

import-module activedirectory 
$virtuals = get-adcomputer -filter "Name -like '*v'" | foreach-object{$_.distinguishedname} 
foreach-object -inputobject $virtuals { 
    Add-ADGroupMember VMs "$_" 
} 

내가 오류는 다음과 같습니다

무슨 일이 일어나고 있는지입니다
Add-ADGroupMember : Cannot find an object with identity: 'CN=CSD-024V,OU=VM,OU=Workstations,OU=... 
' under: 'DC=co,DC=****,DC=wi,DC=us'. 
At line:4 char:22 
+  Add-ADGroupMember <<<< VMs "$_" 
    + CategoryInfo   : ObjectNotFound: (CN=CSD-024V,OU=...ark,DC=wi,DC=us:ADPrincipal) [Add-ADGroupMember], ADIdentityNotFoundException 
    + FullyQualifiedErrorId : SetADGroupMember.ValidateMembersParameter,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember 

답변

2

. 고려 :

PS D:\> $nums = 1..5 

PS D:\> $nums | ForEach-Object { "* $_ *" } 
* 1 * 
* 2 * 
* 3 * 
* 4 * 
* 5 * 

PS D:\> ForEach-Object -InputObject $nums { "* $_ *" } 
* 1 2 3 4 5 * 

그 차이가 존재하는 이유는 모르겠지만,이 도움말에 설명되어 있습니다, here :

당신이 배관의 대신에 ForEach-객체로 InputObject 매개 변수를 사용하는 경우 명령 결과를 ForEach-Object로 보내면 InputObject 값은 이 단일 개체로 처리됩니다. 값이 -InputObject (Get-Process)과 같이 명령의 결과 인 컬렉션 인 경우에도 마찬가지입니다.

그래서 당신의 수정은 다음과 같습니다

$virtuals | ForEach-Object { 
    Add-ADGroupMember VMs "$_" 
} 

내 코드 블록 (사용 가능한 경우)에서

자동 생성 된 PS의 도움말 링크 :

+0

정말 고마워요! –

관련 문제