Я писал сценарий PS для перемещения компьютеров в AD из одной OU в другую. Исходный код, который у меня был, был таким;
$pc = Get-ADComputer -Filter *
foreach($item in $pc)
{
if($item.operatingsystem -Like "Windows XP*")
{
if($item.name -Like "*-B-*")
{
move-ADObject -Identity $item -TargetPath 'ou=myou,DC=mydomain,dc=com'
}
else if($item.name -Like "*-K-*")
{
move-ADObject -Identity $item -TargetPath 'ou=myou,DC=mydomain,dc=com'
}
}
else if($item.operatingsystem -Like "Windows 7*")
{
if($item.name -Like "*-B-*")
{
move-ADObject -Identity $item -TargetPath 'ou=myou,DC=mydomain,dc=com'
}
else if($item.name -Like "*-K-*")
{
move-ADObject -Identity $item -TargetPath 'ou=myou,DC=mydomain,dc=com'
}
}
}
Код работал, но на самом деле ничего не делал. Я отредактировал его так, и он сделал то, что хотел;
$pcw7 = Get-ADComputer -Filter {operatingsystem -Like "Windows 7*"}
$pcwinxp = Get-ADComputer -Filter {operatingsystem -Like "Windows XP*"}
foreach($item in $pcw7)
{
if($item.Name -Like "*-B-*")
{
move-ADObject -Identity $item -TargetPath 'ou=myou,DC=mydomain,dc=com'
}
elseif($item.Name -Like "*-K-*")
{
move-ADObject -Identity $item -TargetPath 'ou=myou,DC=mydomain,dc=com'
}
}
foreach($item in $pcwinxp)
{
if($item.Name -Like "*-B-*")
{
move-ADObject -Identity $item -TargetPath 'ou=myou,DC=mydomain,dc=com'
}
elseif($item.Name -Like "*-K-*")
{
move-ADObject -Identity $item -TargetPath 'ou=myou,DC=mydomain,dc=com'
}
}
Может кто-нибудь помочь мне объяснить, почему?