Родительская консоль PowerShell, кажется, управляет вводом-выводом дочерней консоли PowerShell - PullRequest
2 голосов
/ 13 марта 2020

$ PSVersionTable выводится

Name                           Value
----                           -----
PSVersion                      5.1.18362.628
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.18362.628
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

[System.Environment] :: OSVersion.Version вывод

Major  Minor  Build  Revision
-----  -----  -----  --------
10     0      18363  0

C: \ Windows \ System32 \ WindowsPowerShell \ v1. 0 \ powershell.exe запущен как пользователь, который является членом группы локальных администраторов, но не в режиме повышенных прав. Назовите это «родительской» консолью.

В родительской консоли выполните (где «Имя пользователя» должно быть заменено тем же или другим пользователем, вошедшим в систему на компьютере в интерактивном режиме)

Start-Process -FilePath powershell.exe -Credential UserName

После ввода правильного пароля для «UserName» открывается новое окно PowerShell (назовем это «дочерней» консолью). В этом случае введите «выход», а затем нажмите клавишу Enter / Return. На дочерней консоли ничего не происходит: буквы не отображаются, ввод / возврат не обрабатывается.

Переключитесь на родительскую консоль, нажмите пробел четыре раза. При нажатии клавиши пробела в дочерней консоли появится «выход». Нажатие клавиши пробела еще раз приведет к обработке клавиши «Enter / Return» в дочернем процессоре и затем к ее завершению.

Я пробовал это на другом компьютере с версией 2016 (10.0 build 14393). ) выигрыша 10 с такими же результатами.

Это не кажется правильным. Это правильно? Если это так, как мне избежать этого?

Спасибо.

1 Ответ

1 голос
/ 14 марта 2020

Это не так. Это правильно?

Нет, это давняя ошибка, все еще присутствующая в PowerShell 7.0 , к сожалению; в сообщается, что в этом выпуске GitHub .

JosefZ в комментариях все сузилось:

Кажется, что оба процесса ( создаются с помощью описанной процедуры) блокировка ввод с клавиатуры взаимно . Если я использую переключатель -Wait, то, по крайней мере, процесс child принимает ввод с клавиатуры ...


как мне избежать этого?

Обходной путь должен использовать стандартную runas.exe утилиту :

runas /user:UserName powershell.exe

Предостережение : Как вы указали, переменная окружения HOMEPATH (и, вероятно, также HOMEDRIVE) неправильно установлена ​​в новом сеансе (по состоянию на Windows 10, версия 1909): HOMEPATH неожиданно указывает на \WINDOWS\system32 а не домашний путь пользователя; напротив, USERPROFILE содержит ожидаемое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...