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

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

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

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

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

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

Есть помощь? Буду признателен!!

решение1

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

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

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

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

Это можно смягчить с помощью манипуляции токенами, но это сложно. См.Invoke-TokenManipulationфункция и ее ImpersonateUserпараметр.

Связанный контент