Форум программистов, компьютерный форум, киберфорум
Наши страницы

PowerShell

Войти
Регистрация
Восстановить пароль
 
QuickTrip
0 / 0 / 0
Регистрация: 10.04.2017
Сообщений: 3
#1

Powershell и AD - PowerShell

10.04.2017, 19:38. Просмотров 671. Ответов 5
Метки ad (Все метки)

Доброго времени суток! Первый раз в жизни взялся за Powershell и столкнулся со следующей задачей:

1. Спрашивает у администратора данные сотрудника: Имя, Фамилию, Логин, Отдел
2. Создаёт нового пользователя в Active Directory
3. Добавляет созданного пользователя в security группу Отдела
3. Заводит почтовый ящик в Exchange
4. Добавляет почтовый адрес в группу рассылки Отдела

CSV:
Login, Lastname, Firstname, Department

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Set-ExecutionPolicy Unrestricted
import-module activedirectory
 
Import-CSV -Path "C:\scripts\users.csv"
ForEach-Object -process {New-ADuser     
    -SamAccountName $_.Login 
    -Surname $_.Lastname 
    -GivenName $_.FirstName
    -Department $_.Department
 
    ForEach {Add-ADGroupMember      
        -Identity $_.Department 
        -Members $_.Login
 
        Foreach {New-Mailbox 
            -Alias $_.Login 
            -Name $_.Firstname
            -userPrincipalName "$_.Login" + "@company.com"
 
            Foreach {Add-DistributionGroupMember -Identity $_.Department
            }
        }
    }
}
Нету возможности проверить даже в песочнице. Адекватно ли написано?) Если есть возможность написать развёрнутый ответ с примерами - буду очень благодарен.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2017, 19:38
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Powershell и AD (PowerShell):

PowerShell vs PowerShell ISE - PowerShell
Скажите, пожалуйста, чем PowerShell отличается от PowerShell ISE. Спасибо.

PowerShell - PowerShell
PowerShell Windows PowerShell — это новая оболочка командной строки на основе задач и язык сценариев. Она специально разработана для...

Видеолекции по PowerShell - PowerShell
Смотрим видео " Сергей Шеин Автоматизация администрирования Windows Server 2008 с помощью Windows PowerShell ". Дальше по желанию, человек...

Изучение PowerShell - PowerShell
// Перенесено из темы: http://www.cyberforum.ru/cmd-bat/thread1453691.html чтобы разбираться в этом коде, что надо почитать? я так...

Мьютекс в PowerShell - PowerShell
Возник такой вопрос допустим отработало условие if(func1) и код запустился в отдельном потоке, обозначим его условно THREAD1. Затем в цикле...

Не запускается PowerShell - PowerShell
Выдает ошибку при запуске: Windows PowerShell завершена из-за следующей ошибки: Инициализатор типа...

5
Joey
Модератор
826 / 548 / 147
Регистрация: 05.05.2015
Сообщений: 3,181
Записей в блоге: 1
12.04.2017, 22:25 #2
Цитата Сообщение от QuickTrip Посмотреть сообщение
Нету возможности проверить даже в песочнице.
Почему? Может я у себя в песочнице запущу и отпишусь?

Добавлено через 7 минут
Выполнил Ваш код у себя (в песочнице, да), выдал ошибку на 6 знаке 6 строки:
Отсутствует выражение после одноместного оператора "-".

Речь идет о "-SamAccountName $_.Login "
1
QuickTrip
0 / 0 / 0
Регистрация: 10.04.2017
Сообщений: 3
13.04.2017, 17:24  [ТС] #3
Цитата Сообщение от Joey Посмотреть сообщение
Почему? Может я у себя в песочнице запущу и отпишусь?

Добавлено через 7 минут
Выполнил Ваш код у себя (в песочнице, да), выдал ошибку на 6 знаке 6 строки:
Отсутствует выражение после одноместного оператора "-".

Речь идет о "-SamAccountName $_.Login "

Тогда я прям теряюсь. SamAccountName - это точно логин, csv создавал? Второй строкой прописал тестовые значения? В синтаксе я дубовый, поэтому могу только предполагать подобные ошибки.
0
AAT666
25 / 14 / 5
Регистрация: 16.06.2016
Сообщений: 40
15.04.2017, 08:31 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от QuickTrip Посмотреть сообщение
Адекватно ли написано?)
Приветствую!

1. Строка 6 - результат импорта csv надо или сохранить в переменную или передать в конвейер.
2. Соответственно, командлету ForEach-Object не задан входной объект.
3. Отсюда и
Цитата Сообщение от Joey Посмотреть сообщение
Отсутствует выражение после одноместного оператора "-".
Речь идет о "-SamAccountName $_.Login "
так как $_.Login - не определен.
4. Лишние ForEach. Они не нужны.

как-то так:

PowerShell
1
2
3
4
5
6
$GetUsersData = Import-CSV -Path "C:\scripts\users.csv"
$GetUsersData | 
New-ADuser -SamAccountName $_.Login -Surname $_.Lastname -GivenName $_.FirstName -Department $_.Department | 
Add-ADGroupMember -Identity $_.Department -Members $_.Login | 
New-Mailbox -Alias $_.Login -Name $_.Firstname -userPrincipalName ($_.Login + "@company.com") |
Add-DistributionGroupMember -Identity $_.Department
...либо сразу из файла передаем в конвейер:

PowerShell
1
2
3
4
5
Import-CSV -Path "C:\scripts\users.csv" | 
New-ADuser -SamAccountName $_.Login -Surname $_.Lastname -GivenName $_.FirstName -Department $_.Department | 
Add-ADGroupMember -Identity $_.Department -Members $_.Login | 
New-Mailbox -Alias $_.Login -Name $_.Firstname -userPrincipalName ($_.Login + "@company.com") |
Add-DistributionGroupMember -Identity $_.Department
Для проверки можно поставить переключатель -WhatIf. Тогда ПоШ покажет, что будет делать командлет - но реально никаких действий не будет происходить. Ставится -WhatIf каждому командлету в скрипте.

Удачи!
3
QuickTrip
0 / 0 / 0
Регистрация: 10.04.2017
Сообщений: 3
15.04.2017, 13:52  [ТС] #5
Цитата Сообщение от AAT666 Посмотреть сообщение
Приветствую!

1. Строка 6 - результат импорта csv надо или сохранить в переменную или передать в конвейер.
2. Соответственно, командлету ForEach-Object не задан входной объект.
3. Отсюда и так как $_.Login - не определен.
4. Лишние ForEach. Они не нужны.

как-то так:

PowerShell
1
2
3
4
5
6
$GetUsersData = Import-CSV -Path "C:\scripts\users.csv"
$GetUsersData | 
New-ADuser -SamAccountName $_.Login -Surname $_.Lastname -GivenName $_.FirstName -Department $_.Department | 
Add-ADGroupMember -Identity $_.Department -Members $_.Login | 
New-Mailbox -Alias $_.Login -Name $_.Firstname -userPrincipalName ($_.Login + "@company.com") |
Add-DistributionGroupMember -Identity $_.Department
...либо сразу из файла передаем в конвейер:

PowerShell
1
2
3
4
5
Import-CSV -Path "C:\scripts\users.csv" | 
New-ADuser -SamAccountName $_.Login -Surname $_.Lastname -GivenName $_.FirstName -Department $_.Department | 
Add-ADGroupMember -Identity $_.Department -Members $_.Login | 
New-Mailbox -Alias $_.Login -Name $_.Firstname -userPrincipalName ($_.Login + "@company.com") |
Add-DistributionGroupMember -Identity $_.Department
Для проверки можно поставить переключатель -WhatIf. Тогда ПоШ покажет, что будет делать командлет - но реально никаких действий не будет происходить. Ставится -WhatIf каждому командлету в скрипте.

Удачи!
Спасибо большое за ответ!
Может быть вы знаете где можно найти интересные задачи в рамках изучения PowerShell?
0
AAT666
25 / 14 / 5
Регистрация: 16.06.2016
Сообщений: 40
15.04.2017, 15:45 #6
К сожалению, нет - не знаю. Изучаю ПоШ на реальных задачах.
Но, что Вам мешает зайти, скажем, сюда Hey, Scripting Guy! Blog или PowerShell Blogger и брать как задачи заголовки тем ? И не заглядывая внутрь, пробовать найти ответ самостоятельно ? (;
0
15.04.2017, 15:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2017, 15:45
Привет! Вот еще темы с ответами:

Возможности PowerShell - PowerShell
Хочу понять, какие возможности у этой штуки :) чуть позже буду смотреть Нагетсы, а так, чтобы правильно распланировать время, подскажите: ...

DHCP vs. PowerShell 2.0 - PowerShell
есть Windows Server 2008 r2 x64. есть не совсем маленькая сетка, где надо резервировать порядка 60 адресов в DHCP. понятное дело, что при...

Ftp powershell - PowerShell
Подскажите. Есть такой скрипт, работает с фтп нормально, файлы закидывает, но работает только на компьютерах с 3g модемами, на компах где...

PowerShell в Windows 7 - PowerShell
В семерке есть встроенный PowerShell модуль, но при загрузке он выдает сообщение: ПРЕДУПРЕЖДЕНИЕ: Не удается загрузить файл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru