PowerShell всегда запускается в пользовательском контексте пользователя, запустившего сеанс. Это сделано специально.
Вы не можете запустить приложение на основе GUI удаленно с помощью PowerShell. Это граница безопасности Windows.
Для запуска GUI приложений необходимо войти в систему, и вы не можете использовать PowerShell для запуска кода от имени вошедшего в систему пользователя.
Вы также запрашивают информацию, поэтому кто-то должен войти в систему.
Если вы ожидаете, что пользователь сохранит информацию, вам необходимо:
- Создать скрипт
- Развертывание сценария на компьютере пользователя или в общей папке, с которой он может быть запущен
- Скажите пользователю, как это сделать, или создайте пакетный файл, по которому он дважды щелкнет для запуска сценария PowerShell
Или
Установите сценарий для запуска в качестве запланированной задачи при входе в систему или в определенный момент в течение дня в качестве учетных данных пользователя.
Переменные имеют область действия, и вы нельзя использовать локальные переменные в удаленном контексте, если они не предназначены для этого.
Об удаленных переменных
Использование локальных переменных
Вы можете использовать локальные переменные в удаленных командах, но переменная должна быть определена ed в локальном сеансе.
Начиная с PowerShell 3.0, вы можете использовать модификатор области «Использование» для определения локальной переменной в удаленной команде.
Синтаксис использования следующий:
$Using:<VariableName>
Тем не менее, удаленная переменная - это не то, что вы будете делать в вашем случае использования, поскольку вы не можете делать то, что вы делаете изначально с PowerShell. Вам понадобится инструмент 3P, такой как MS SysInternals PSExe c, чтобы запускать код удаленно как зарегистрированный пользователь.
Использование PsExe c
Использование: psexe c [\ computer [, computer2 [, ...] | @file]] [- u user [-p psswd] [- ns] [- r имя_службы] [- h] [- l] [- s | -e] [- x] [- i [сессия]] [- c исполняемый файл [-f | -v]] [- каталог w] [- d] [-] [- an, n, ...] cmd [аргументы]
-i Запустить программу так что он взаимодействует с рабочим столом указанного сеанса в удаленной системе. Если сеанс не указан, процесс запускается в сеансе консоли.
-u Указывает необязательное имя пользователя для входа на удаленный компьютер.