Как выполнить скрипт 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
параметр.