|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] запуск скрипта без параметров, скрипт предлагал ввести параметры |
|
|
PowerShell - [решено] запуск скрипта без параметров, скрипт предлагал ввести параметры
|
Старожил Сообщения: 473 |
Всем привет!!!
Есть скрипт, который создает пользователя и почтовый ящик для него, но для этого нужно передать скрипту несколько параметров и соответственно строка получается очень длинной, как то можно сделать что бы при запуске скрипта без параметров, скрипт давал возможность вводить параметры поочередно, т.е запустил скрипт он проверил что нет значений для требуемых параметров и в консоли вывел имя первого параметра что то вроде param1:дальше вводишь значения для этого параметра и нажимаешь ентер, ниже снова просит значения для param2: , и тд для всех параметров. Можно такое сделать? Пример скрипта: Param ($account, $al, $gname, $sname, $OrUn, $Dep) $fname = $sname + " " + $gname $password = ConvertTo-SecureString "Password" -AsPlainText -Force #------------------ Создание учетной записи -------------------# New-Mailbox -Name $fname ` -Alias $al ` -OrganizationalUnit "Users/$OrUn" ` -UserPrincipalName "$account@corp.local" ` -SamAccountName $account ` -FirstName $gname ` -Initials '' ` -LastName $sname ` -Password $password ` -DisplayName ($sname + ' ' + $gname)` -ResetPasswordOnNextLogon $true |
|
Отправлено: 14:11, 13-09-2012 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать 1) Использовать Read-Host
2) Указать параметр mandatory |
Отправлено: 14:22, 13-09-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 473
|
Профиль | Отправить PM | Цитировать Спасибо, сработало!!!! еще просьба подскажите насколько правильно составлен скрипт и что еще можно добавить?
полная версия скрипта: [CmdletBinding()] Param( [Parameter(Mandatory=$true)] $account, [Parameter(Mandatory=$true)] $al, [Parameter(Mandatory=$true)] $gname, [Parameter(Mandatory=$true)] $sname, [Parameter(Mandatory=$true)] $OrUn, [Parameter(Mandatory=$true)] $Dep ) $fname = $sname + " " + $gname $password = ConvertTo-SecureString "Password" -AsPlainText -Force #------------------ Создание учетной записи -------------------# New-Mailbox -Name $fname ` -Alias $al ` -OrganizationalUnit "npfcapital.kz/NPFCapital/Users/$OrUn" ` -UserPrincipalName "$account@corp.loc" ` -SamAccountName $account ` -FirstName $gname ` -Initials '' ` -LastName $sname ` -Password $password ` -DisplayName ($sname + ' ' + $gname)` -ResetPasswordOnNextLogon $true import-module ActiveDirectory #------------------ Добавляем учетную запись в группу Restrict участие в этих группах не дает возможность получать\отправлять за пределы предприятия----------# $group = Get-ADGroup -Filter {Name -like "DG-CAP-Restrict-*"} Foreach ($DG in $group) { Add-ADPrincipalGroupMembership $account -MemberOf $DG } #------------------ Добавляем учетную запись в группу OpenFire ----------# Add-ADGroupMember GRP-OpenFire -Members $account #------------------ Добавляем учетную запись в группу соответствующего региона или департамента ----------# $regname = Get-ADGroup -Filter {cn -like $Dep } -Properties cn | ` Where {$_.GroupCategory -eq "Security"} Add-ADGroupMember $regname -Members $account #----------------- Вытаскиваем из текущей группы Директора или Начальника и отпровляем сообщения----------# $user = $regname | Get-ADGroupMember | Get-AdUser -Properties Description, mail | ` %{ If ($_.Description -like '*Директор*') { Write-Host 'Сообщение ушло на адрес' $_.mail $mail=$_.mail # Формируем уведомление для начальника или директора # его отдела с данными для авторизации нового пользователя #$Attach = new-object System.Net.Mail.Attachment("d:\list.txt") $SMTPClient = new-object System.Net.Mail.SMTPClient $Msg = new-object System.Net.Mail.MailMessage #$Msg.Attachments.add($Attach) $Msg.To.Add("$mail") $Msg.from="Admin@corp.loc" $Msg.Subject="Заявка на предоставление доступа" $Msg.Body="Заявка на предоставление доступа к информационным ресурсам фонда для пользователя $fname - исполнена. Имя для входа в компьютер: $account Пароль: Password" $SMTPClient.Host="mailserver" $SMTPClient.Send($Msg) } elseif ($_.Description -like '*Начальник*') { Write-Host 'Сообщение ушло на адрес' $_.mail $mail=$_.mail # Формируем уведомление для начальника или директора # его отдела с данными для авторизации нового пользователя #$Attach = new-object System.Net.Mail.Attachment("d:\list.txt") $SMTPClient = new-object System.Net.Mail.SMTPClient $Msg = new-object System.Net.Mail.MailMessage #$Msg.Attachments.add($Attach) $Msg.To.Add("$mail") $Msg.from="Admin@corp.loc" $Msg.Subject="Заявка на предоставление доступа" $Msg.Body="Заявка на предоставление доступа к информационным ресурсам фонда для пользователя $fname - исполнена. Имя для входа в компьютер $account Пароль Password" $SMTPClient.Host="mailserver" $SMTPClient.Send($Msg) } } Да, еще не получается написать нормально условия для отправки сообщения только директору (если он присутствует в группе, куда дабовляется новый пользователь) или начальнику (если директора в данной группе нет) |
Последний раз редактировалось ejik_off, 13-09-2012 в 15:21. Отправлено: 15:15, 13-09-2012 | #3 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать насколько правильно составлен скрипт и что еще можно добавить?? - Это уже без меня.
![]() Ошибки: добавить после блока Param() оператор trap. К New-MailBox добавить параметр -ErrorAction Stop . New-MailBox .... -ErrorAction Stop Не вижу,особого смысла использовать код отправки два раза. $regname | Get-ADGroupMember | Get-AdUser -Properties Description, mail | Where {$_.Description -match "Директор|Начальник"} | %{ $mail=$_.mail # Формируем уведомление для начальника или директора # его отдела с данными для авторизации нового пользователя #$Attach = new-object System.Net.Mail.Attachment("d:\list.txt") $SMTPClient = new-object System.Net.Mail.SMTPClient $Msg = new-object System.Net.Mail.MailMessage #$Msg.Attachments.add($Attach) $Msg.To.Add("$mail") $Msg.from="Admin@corp.loc" $Msg.Subject="Заявка на предоставление доступа" $Msg.Body="Заявка на предоставление доступа к информационным ресурсам фонда для пользователя $fname - исполнена. Имя для входа в компьютер: $account Пароль: Password" $SMTPClient.Host="mailserver" $SMTPClient.Send($Msg) Write-Host 'Сообщение ушло на адрес' $_.mail } |
Отправлено: 15:38, 13-09-2012 | #4 |
Старожил Сообщения: 473
|
Профиль | Отправить PM | Цитировать Kazun, большое спасибо!!!
|
|
Отправлено: 15:55, 13-09-2012 | #5 |
Старожил Сообщения: 473
|
Профиль | Отправить PM | Цитировать Kazun, не подскажите по чему в скрипте не отрабатывается условие Where {$_.Description -match "Директор|Начальник"}.
То есть если директор то письмо уходит, а если начальник, то условие не работает, письмо не уходит. |
Отправлено: 08:00, 03-10-2012 | #6 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Вывод покажите:
$regname | Get-ADGroupMember | Get-AdUser -Properties Description, mail | Where {$_.Description -match "Начальник"} и $regname | Get-ADGroupMember | Get-AdUser -Properties Description, mail | Group Description |
Отправлено: 08:47, 03-10-2012 | #7 |
Старожил Сообщения: 473
|
Профиль | Отправить PM | Цитировать Цитата Kazun:
PS C:\script> $regname = "GG-CAP-AdmPensionAccounts-Payments-Transfers" PS C:\script> $regname | Get-ADGroupMember | Get-AdUser -Properties Description, mail | Where {$_.Description -match "На чальник"} Description : Начальник Отдела DistinguishedName : CN=Жанпейсова Лиза,OU=Local,OU=Users,OU=NPFCapital,DC=npfcapital,DC=kz Enabled : True GivenName : Лиза mail : lz*****@npfcapital.kz Name : Жанпейсова Лиза ObjectClass : user ObjectGUID : 63681ec4-c5b9-4e0e-a199-779e16d92e93 SamAccountName : l_zhanpeisova SID : S-1-5-21-1801674531-796845957-725345543-1531 Surname : Жанпейсова UserPrincipalName : l_zhanpeisova@npfcapital.kz PS C:\script> $regname | Get-ADGroupMember | Get-AdUser -Properties Description, mail | Group Description Count Name Group ----- ---- ----- 2 {CN=Бытымбаева Динара,OU=Local,OU=Users,OU=NPFCapital,DC=npfcapital,DC=kz, CN=Сим Юл... 3 Ведущий Специалист По ... {CN=Акилбекова Дана,OU=Local,OU=Users,OU=NPFCapital,DC=npfcapital,DC=kz, CN=Садинова... 1 Главный Специалист По ... {CN=Тулебаева Аида,OU=Local,OU=Users,OU=NPFCapital,DC=npfcapital,DC=kz} 2 Ведущий Специалист По ... {CN=Берликожанова Алмагуль,OU=Local,OU=Users,OU=NPFCapital,DC=npfcapital,DC=kz, CN=А... 1 Начальник Отдела {CN=Жанпейсова Лиза,OU=Local,OU=Users,OU=NPFCapital,DC=npfcapital,DC=kz} 1 Главный Специалист По ... {CN=Мурзатаева Эльмира,OU=Local,OU=Users,OU=NPFCapital,DC=npfcapital,DC=kz} |
|
Отправлено: 11:19, 03-10-2012 | #8 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Как видите условие отработало.
|
Отправлено: 11:24, 03-10-2012 | #9 |
Старожил Сообщения: 473
|
Профиль | Отправить PM | Цитировать |
Отправлено: 12:23, 03-10-2012 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Запуск другого скрипта через скрипт. | Centrinar | AutoIt | 2 | 28-01-2011 20:02 | |
VBS/WSH/JS - [решено] передать параметры запуска в тело скрипта | xvoct | Скриптовые языки администрирования Windows | 1 | 24-06-2010 16:48 | |
[решено] Сохранение параметров скрипта во внешнем файле | Freez | AutoIt | 2 | 14-12-2009 19:00 | |
Проверка параметров запуска скрипта | morgan1991 | AutoIt | 2 | 03-03-2009 00:43 | |
Сохранить параметры RAS, при переносе параметров системы. | Drug0y | Автоматическая установка Windows 2000/XP/2003 | 0 | 15-01-2009 20:20 |
|