Перво-наперво, попробуйте подробно описать, что вам нужно сделать, поскольку используемый вами подход может быть ошибочным.Вы просто пытаетесь запускать команды от имени другого пользователя в скрипте?Если это так, используйте методы, описанные здесь: 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