以其他用户身份运行ADUC-错误的目录

时间:2019-06-06 10:57:21

标签: powershell

我对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

Needs elevation

1 个答案:

答案 0 :(得分:0)

我看到您仍在使用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”异常。