这些是在 powershell 控制台 (Windows 10) 中运行的命令:
$username = 'Username'
$password = 'Password'
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential $username, $securePassword
Start-Process powershell.exe -Credential $credential -WindowStyle Hidden -ArgumentList "Start-Process cmd.exe -Verb RunAs -ArgumentList 'value'"
这些命令工作正常,除非您通过另一个用户以管理员身份打开 cmd.exe,通过运行以下命令:
echo %1
它给了我回馈:
%1
字面上地。相反,我期望:
value
我究竟做错了什么?
I just 回答了一个问题 https://stackoverflow.com/a/69703042/584676可以使用我在那里提供的脚本找到解决方案,进行一些修改,并以特定方式调用命令链:
运行代理.ps1
# First arg should be the script path
$script = $args[0]
# Rest of args should be any script parameters
$scriptArgs = $args[1..$args.Count] -join ' '
$startProcessArgs = @{
Wait = $true
Verb = 'RunAs'
FilePath = 'cmd.exe'
ArgumentList = "/c ""$script"" $scriptArgs"
}
Start-Process @startProcessArgs
exit $LASTEXITCODE
然后打电话运行代理.ps1如下所示作为您要运行的用户,然后提升:
$command = "Command_you_want_to_run_from_cmd.exe"
$arguments = "any arguments to the program"
Start-Process -Cred $credential powershell.exe "-File ./RunAsProxy.ps1 $command $arguments"
其工作方式与您尝试的方式几乎相同,但使用预定义的脚本来处理海拔。但正如你发现的,你不能打电话-Credential
and -Verb
在同一个调用中Start-Process
。因此,这比内嵌定义代码更容易:
- Run
RunAsProxy.ps1
作为目标用户
- RunAsProxy.ps1 将运行
cmd.exe
根据提供的论据并提升流程。
请注意,如果RunAsProxy.ps1
不在当前目录中,您需要提供它的相对路径或完整路径。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)