Сценарий входа в Powershell, возможно ли показать пользователю диалоговое окно или прочитать некоторые введенные пользователем данные?

#user-interface #powershell #login-script

#пользовательский интерфейс #powershell #login-script

Вопрос:

Так возможно ли это?

Мне нужно получить некоторые учетные данные пользователя, чтобы сопоставить определенный сетевой ресурс. Этот общий ресурс не является частью нашего домена, и у каждого пользователя разные учетные данные.

Редактировать

Скрипт работает нормально, если я запускаю его из консоли powershell. Проблема в том, что он не показывает никаких prompt или dialgo, когда я использую его в качестве сценария входа в систему. Когда я вхожу в desktop, запускается скрипт, потому что он записывает журнал отладки, но он не показывает никакого диалога или пользователя promt для ввода.

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

1. Вы не указываете, как вы запускаете сценарий входа в систему. Мне кажется, вы используете VBS для скрытого запуска консоли PowerShell (вы не можете скрыть консоль powershell с помощью powershell). Если это так, вам нужно изменить код VBS, чтобы отобразить его.

2. Я не использую VBS для запуска Powershell. Я просто использую настройки групповой политики, в win 2008r2 у вас есть возможность использовать powershell script вместо cmd или vbs.

Ответ №1:

В вашем объекте групповой политики включите следующий параметр: «Запускать видимые сценарии входа», чтобы убедиться, что сценарий входа в систему виден. Вы можете найти его в разделе Конфигурация пользователя Административные шаблоны Система Скрипты

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

1. У меня есть еще один вопрос, если вы знаете. Я использовал ISE для разработки скрипта, и там я получаю приятные всплывающие окна для пользовательского ввода, но во время входа в систему отображается только окно консоли. Возможно ли получить такой же графический интерфейс для сценария входа в систему?

2. В 2012 R2 название параметра отображается как «Отображать инструкции в сценариях входа по мере их выполнения».

Ответ №2:

В PowerShell есть командлет Get-Credential, который можно использовать для запроса имени пользователя / пароля. Подробности и примеры см. Get-Help Get-Credential -Full в PowerShell.

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

1. Я не был достаточно явным. Я знаю, что этот командлет и скрипт отлично работают, если я запускаю их из консоли powershell. Проблема в том, что он не показывает никаких prompt или dialgo, когда я использую его в качестве скрипта входа в систему. Когда я вхожу в desktop, запускается скрипт, потому что он записывает журнал отладки, но он не показывает никакого диалогового окна или пользователя promt для ввода.

2. Боюсь, я никогда не запускал сценарий PowerShell в качестве сценария входа, поэтому я не знаю различий. Вы могли бы попробовать методы $host.UI.Prompt или $host.UI.PromptForCredential, посмотреть, ведут ли они себя по-другому, хотя я подозреваю, что нет. Можете ли вы получить приглашение с помощью обычного скрипта DOS?

3. Как вы можете получить prompt с помощью скрипта DOS?

4. Честно говоря, без понятия, я просто подумал, что если бы вы знали, мы могли бы преобразовать его в PowerShell или определить проблему… Предположительно, это как-то связано с запуском скрипта. Доступен ли рабочий стол пользователя при запуске сценария?

Ответ №3:

У меня это сработало. Он действительно показывал запрос на ввод учетных данных. Ниже приведен мой сценарий:

 "test" | out-file -append C:test.log
$cred = get-credential
$cred.username | out-file -append C:test.log
  

Настройка сценария входа в систему:

gpedit.msc -> Конфигурация пользователя -> Настройки Windows -> Сценарии -> Вход в систему -> Выберите вкладку сценарии Powershell -> Добавить и введите путь к сценарию

Скриншот:

введите описание изображения здесь

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

1. Это именно то, что я делаю, и у меня это не работает: (Если я добавляю столбец «командная строка» в диспетчере задач, я вижу, что процесс powershell запускается с параметрами -Обход политики выполнения и -Файл MapNetDrives.ps1

2. @Primoz — Какой у вас точный сценарий?

3. Я попробовал ваш короткий пример, и у меня он тоже не работает. Кажется, что в моей среде что-то изменилось.

4. Даже если я намеренно допускаю ошибку в коде, например, запись в C: (что не разрешено для пользователей) Я не увижу никакой ошибки. Я также проверил, что процесс PS при входе в систему выполняется под правильной учетной записью.

Ответ №4:

Я никогда не настраивал GP подобным образом для запуска сценариев входа в систему, поэтому я не уверен в этом… Если вы запустите произвольный CMD, такой как ipconfig, появится ли окно консоли, как вы надеетесь, в PowerShell?

Если да, то вместо использования встроенного механизма сценариев PowerShell вы могли бы вызвать строку CMD или .bat, которая затем вызывает сценарий PowerShell: powershell.exe -noexit -command «amp; ‘path tologonscript.ps1′»