Я пытаюсь увидеть результат этого скрипта, когда он запускается, он сразу закрывается и не показывает группы, в которые был добавлен пользователь

#windows #powershell #script

Вопрос:

Это мой сценарий,

Я пытаюсь добавить пользователя в эти группы и показать результат в конце, в какой группе находится пользователь.

 $user = Read-host "Please enter user" $groups = 'M365-E3-Laptop-Office-Desktop','M365-E3-Laptop-EXO' $groupsremove = 'M365-F3-WebOnly-Apps'  foreach($group in $groups){  Add-ADGroupMember -Identity $group -Members $user}  foreach($groupsremove in $groupsremove){  Remove-ADGroupMember -Identity $groupsremove -Members $user}  foreach($user in $groups){  Get-ADPrincipalGroupMembership $user | select name}   Start-Sleep -seconds 30  

Комментарии:

1. Вы не упоминаете о фактической проблеме/ошибке, с которой столкнулись, не могли бы вы уточнить, пожалуйста?

2. Действительно ли скрипт успешно запущен? Другими словами, что происходит, когда вы открываете консоль PowerShell (или ise/терминал) и вставляете туда команды?

Ответ №1:

попробуйте это, может быть, это чувствительно к регистру

 $user = Read-host "Please enter user" $groups = 'M365-E3-Laptop-Office-Desktop','M365-E3-Laptop-EXO' $groupsremove = 'M365-F3-WebOnly-Apps'  foreach($group in $groups){ Add-ADGroupMember -Identity $group -Members $user}  foreach($groupsremove in $groupsremove){ Remove-ADGroupMember -Identity $groupsremove -Members $user}  foreach($user in $groups){Get-ADPrincipalGroupMembership $user | select name}   Start-Sleep -Seconds 30`  

Ответ №2:

Во-первых, нет необходимости использовать инструкцию ForEach, если ваша переменная $groupsremove содержит только одну группу. Во-вторых, также нет необходимости использовать инструкцию ForEach, так как у вас есть только один пользователь.

 $user = Read-host "Please enter user" $groups = 'M365-E3-Laptop-Office-Desktop','M365-E3-Laptop-EXO' $groupsremove = 'M365-F3-WebOnly-Apps'  ForEach($group in $groups) {  Add-ADGroupMember -Identity $group -Members $user }  Remove-ADGroupMember -Identity $groupsremove -Members $user  Get-ADPrincipalGroupMembership $user | Select-Object Name  

Это должно вернуть вам что-то вроде этого:

 Name ---- M365-E3-Laptop-Office-Desktop M365-E3-Laptop-EXO  

Затем, что касается закрытия приглашения powershell после завершения сценария, вы можете просто сначала вызвать сценарий через приглашение PowerShell, вместо того чтобы выполнять сценарий непосредственно из файла, чтобы окно не закрывалось в конце.

Комментарии:

1. Спасибо, что это намного чище, но предпочитаю запускать его как скрипт вместо того, чтобы каждый раз открывать PS.