Изменить пользователей в зависимости от местоположения Office - PullRequest
0 голосов
/ 22 июля 2011

Я не могу заставить это работать ... есть идеи?По сути, даже если пользователь находится в Чикаго, заявка о том, что он не является пользователем, входит в оператор else.

Я хочу собрать всех пользователей в AD.

Тогда я хочучтобы посмотреть местонахождение их офиса и в зависимости от того, где они находятся, установить их адрес ....

 $Users = Get-ADGroupMember "Domain Users" -recursive | Select-Object sAMAccountName

foreach ($User in $Users)
{
if 
(Get-ADUser -filter {saMAccountName -eq '$User' -and Office -eq "Chicago"})
{
Set-ADUser -StreetAddress "66 Chicago Rd" -City "Chicago" -PostalCode "60618" -State "IL" -Country "US"  -Replace @{ co="United States"; countryCode="804" }
}
else
{
(echo $User " not in Chicago!")}
}

Ответы [ 2 ]

1 голос
/ 22 июля 2011

Можете ли вы попробовать это:

$Users = Get-ADGroupMember "Domain Users" -recursive | Select-Object sAMAccountName

foreach ($User in $Users)
{
if 
(Get-ADUser -filter {saMAccountName -eq $User.saMAccountName -and Office -eq "Chicago"})
{
Set-ADUser -StreetAddress "66 Chicago Rd" -City "Chicago" -PostalCode "60618" -State "IL" -Country "US"  -Replace @{ co="United States"; countryCode="804" }
}
else
{
(echo $User " not in Chicago!")}
}

Я просто заменяю

saMAccountName -eq '$User' 

от

saMAccountName -eq $User.saMAccountName
0 голосов
/ 22 июля 2011

Попробуйте, по какой-то причине $ obj.Property не раскрывается в блоке сценария фильтра.Я использовал Foreach-Object вместо Select-Object для извлечения значений sAMAccountName.Вам также не хватало пользовательского объекта для установки в команде Set-ADUser:

$Users = Get-ADGroupMember "Domain Users" -recursive | Foreach-Object {$_.sAMAccountName}

foreach ($User in $Users)
{
    if (Get-ADUser -Filter {sAMAccountName -eq $User -and Office -eq 'Chicago'})
    {
        $user | Set-ADUser -StreetAddress '66 Chicago Rd' -City Chicago -PostalCode 60618 -State IL -Country US  -Replace @{ co='United States'; countryCode=804 }
    }
    else
    {
        "$User  not in Chicago!"
    }
}

ОБНОВЛЕНИЕ:

Вы также можете использовать потоковую природу рассматриваемых командлетов (обрабатывать один объект можно ввремя) со следующей однострочником:

Get-ADGroupMember 'Domain Users' -Recursive | Where-Object {$_.ObjectClass -eq 'user'} | Get-ADUser -Properties Office | Where-Object {$_.Office -eq 'Chicago'} | Set-ADUser -StreetAddress '66 Chicago Rd' -City Chicago -PostalCode 60618 -State IL -Country US  -Replace @{ co='United States'; countryCode=804 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...