#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′»