Назад | Перейти на главную страницу

Как выполнить сценарий PowerShell из удаленного приложения от имени конкретного пользователя

У меня есть приложение, которое может выполнять сценарий PowerShell на удаленном компьютере с Windows. Я пытаюсь подключить сетевой диск с помощью сценария PowerShell. Когда тот же сценарий выполняется в конечной точке, сценарий работает нормально и может подключать сетевой диск. Но когда тот же скрипт выполняется из моего приложения, отображение сетевого диска выполняется, но как отключенный сетевой диск.

Теперь мои наблюдения: я обнаружил, что мое приложение выполняет сценарий с NT Authority\System учетная запись. Возможно, из-за этого подключенный сетевой диск виден конкретному пользователю как отключенный. я прав!!?

Теперь проблема: что я могу сделать, чтобы подключить сетевой диск, доступный для всех пользователей? или Могу ли я запустить свой сценарий PowerShell от имени конкретного пользователя, чтобы диск был назначен только этому пользователю?

Во всяком случае, я уже пробовал запустить свой сценарий PowerShell от имени другого пользователя из моего приложения, используя Start-Process и Invoke-Command, выдает ошибку, говорит запустить winrm quickconfig что тоже не сработало.

Любая помощь? Оценил !!

При отображении из NT Authority\System диск будет отображаться как отключенный, но он должен работать: Подключите сетевой диск, который будет использоваться службой

ПРИМЕЧАНИЕ. Вновь созданный подключенный диск теперь будет отображаться для ВСЕХ пользователей этой системы, но они будут видеть, что он отображается как «Отключенный сетевой диск (Z :)». Не позволяйте названию ввести вас в заблуждение. Он может заявить, что отключен, но он будет работать для всех.

Более того, отображение диска с помощью NT Authority\System это единственный (хотя официально не поддерживаемый) способ сделать сетевой диск доступным для всех пользователей.

Если вы хотите сопоставить диск для конкретного пользователя, вам нужно будет запустить PowerShell от имени другого пользователя. Но это также означает, что вам нужно будет получить учетные данные для этого пользователя.

Это можно уменьшить, используя манипуляции с токенами, но это сложно. Видеть Invoke-TokenМанипуляция функция и это ImpersonateUser параметр.