Запуск ADUC от имени другого пользователя - неправильный каталог - PullRequest
1 голос
/ 06 июня 2019

Я довольно новичок в powershell.В этом коде мои коллеги получают ошибку, которую я не получаю.Я пробовал разные вещи (например, добавление полного пути к powershell), но я не могу это исправить.Может кто-нибудь сказать мне, что происходит не так?

Error my coworkers are getting.

Function Button4_Click()
{
    $Filepathmmc = join-path -path  $env:SystemRoot -ChildPath System32\Mmc.exe
    $argumentlistdsa =  join-path -path  $env:SystemRoot -ChildPath System32\dsa.msc
    $Credential = New-Object -TypeName System.Management.Automation.PsCredential -ArgumentList (Get-Content "$($env:userprofile)\username.txt"),(Get-Content "$($env:userprofile)\encrypt.txt" | ConvertTo-SecureString)
    Start-Process powershell -Credential $Credential -ArgumentList "Start-Process -FilePath '$filepathmmc' -ArgumentList '$argumentlistdsa' -Verb RunAs"
}

Я также пытался использовать это как путь запуска процесса:

$aducpath = (Join-Path $Env:SystemRoot -ChildPath "\syswow64\WindowsPowerShell\v1.0\powershell.exe")

error

error2

error3

Требуется повышение прав

1 Ответ

0 голосов
/ 06 июня 2019

Я вижу, что вы все еще используете join-path, вы пытались использовать абсолютный путь для устранения неполадок?

Я также вижу, что вы читаете пароль из текстового файла.Я бы посоветовал вам не делать этого, и вместо этого, возможно, пользователи будут входить в систему сами, а не для повышения прав.Если вы замените $Credential в процессе вызова на (Get-Credential), он запросит у пользователя повышение прав.Вы также можете использовать $Credential = Get-Credential, чтобы сохранить его на будущее.

Я не могу воспроизвести ошибку, которую вы получаете, только с этим фрагментом кода.Все ваши пути соединения нормальны и, кажется, указывают на ожидаемое место.При запуске от имени непривилегированного пользователя я получаю приглашение UAC, а не неверный код.Если на самом деле есть проблема с тем, где что находится, могу ли я предложить вам использовать что-то подобное для поиска того, что вам нужно?

Function Button4_Click()
{
    $Filepathmmc = (Get-ChildItem -Recurse -Path $env:SystemRoot -Filter "Mmc.exe").FullName | Select-Object -First 1
    $argumentlistdsa =  (Get-ChildItem -Recurse -Path $env:SystemRoot -Filter "dsa.mmc").FullName | Select-Object -First 1
    Start-Process powershell -Credential (Get-Credential) -ArgumentList "Start-Process -FilePath '$filepathmmc' -ArgumentList '$argumentlistdsa' -Verb RunAs"
}

Это не идеально, но оно всегда будет возвращать экземпляр mmc.Вы можете добавить -ErrorAction SilentlyContinue к команде Get-ChildItem, чтобы подавить неизбежные исключения «Доступ к пути X запрещен».

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