Powershell -NoNewWindow не работает должным образом - PullRequest
0 голосов
/ 08 апреля 2019

В основном я хочу переключить пользователя в powershell в том же окне (не хочу открывать новое).

$username = "xxxxx"
$password = ConvertTo-SecureString "xxxxx" -AsPlainText -Force
$creds = New-Objet System.Management.Automation.PSCredential $username,$password
Start-Process powershell.exe -NoNewWindow -Credential $creds

Но вместо запуска powershell в том же окне он запускает его в новом окне, которое даже не работает, и я ничего не могу напечатать в его мигающем курсоре.

1 Ответ

1 голос
/ 08 апреля 2019

Перво-наперво, попробуйте подробно описать, что вам нужно сделать, поскольку используемый вами подход может быть ошибочным.Вы просто пытаетесь запускать команды от имени другого пользователя в скрипте?Если это так, используйте методы, описанные здесь: https://www.itdroplets.com/run-a-command-as-a-different-user-in-powershell/

Мне особенно нравится метод start-job, который я иногда использую, например:

#Shows who is the current user
whoami
""

$username = "DOMAIN\USER"
$password = ConvertTo-SecureString "PASSWORD" -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential $username,$password


$GetProcessJob = Start-Job -ScriptBlock {
#Shows who is the current user, in this case it's the user you provided credentials for. Everything in this scriptblock will run in his context.

whoami


} -Credential $Credential

#Wait until the job is completed
Wait-Job $GetProcessJob | Out-Null

#Get the Job results
$GetProcessResult = Receive-Job -Job $GetProcessJob

#Print the Job results
$GetProcessResult

Если вы действительно хотите просто запуститьдругой процесс powershell.exe от имени другого пользователя, единственный известный мне способ состоит в том, чтобы просто запустить новый процесс и выйти из первого после этой команды. Таким образом, у вас будет работать только новое окно, предоставленное пользователем.

$username = "DOMAIN\USER"
$password = ConvertTo-SecureString "PASSWORD" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential $username,$password
Start-Process powershell.exe -Credential $creds ;Exit
...