TNT*_*TNT 5 powershell windows-10
当我执行以下代码时:
$creds = Get-Credential -UserName other -Message none
# answering the creds dialogue with correct password here
Start-Process C:\Windows\system32\cmd.exe -Credential $creds
Run Code Online (Sandbox Code Playgroud)
一个cmd窗口打开(看起来完全正常,我可以更改设置...)但我无法在窗口中输入任何内容。无论是普通用户还是管理员帐户,powershell 本身都以普通用户或管理员身份运行。除非 Powershell 作为系统运行(通过 Sysinternal 的psexec):然后我收到以下错误:
Start-Process : This command cannot be run due to the error: Access denied
At line:1 char:1
+ Start-Process C:\Windows\system32\cmd.exe -Credential $creds
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Start-Process], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand
Run Code Online (Sandbox Code Playgroud)
我将它与cmd.exeandpowershell而不是整个 cmd-path结合起来,并添加了-NoNewWindow参数,但没有任何区别(尽管打开了一个新窗口-NoNewWindow)。当运行“正常”程序时,notepad一切都按预期工作 - 当我运行时,例如runas /user:other cmd. 我目前只有 Windows [Version 10.0.17134.165] 来测试,我不确定这在其他版本上是否相同,但我认为它是 Windows 10 特定的 (?)。
Powershell 中的另一个 killjoy 缺陷还是我遗漏了什么?
这里肯定发生了一些奇怪的事情:在新进程启动后,启动的 PowerShell 窗口和新的命令提示符似乎都停止接受输入。在两个窗口之间切换一下后,命令提示符暂时开始接受键盘输入,但在执行命令后再次卡住。
您可以直接使用 .NET Framework 的Process.Start方法来解决此问题:
$creds = Get-Credential -UserName 'theUser' -Message ' '
[System.Diagnostics.Process]::Start('cmd', $creds.UserName, $creds.Password, '')
Run Code Online (Sandbox Code Playgroud)
生成的命令提示符将正常运行,现有的 PowerShell 窗口也是如此。如果您不希望 PowerShell 输出有关新进程的一些信息,请添加| Out-Null到第二行的末尾。
| 归档时间: |
|
| 查看次数: |
6656 次 |
| 最近记录: |