0

我想使用不同的用户凭据从我的脚本中创建一个新的 PowerShell 实例。我的想法是在这个脚本部分中使用不同的凭据做一些管理工作。我想以普通用户权限执行主要部分。

想法,但不起作用:

$script= {$InScript = Get-Process}

$pp= get-credential

[System.Diagnostics.Process]::Start( "c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe", "-command $script", $pp.UserName.Split('\')[1] , $pp.Password , $pp.UserName.Split('\')[0] )

[System.Diagnostics.Process]::Start( "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe", "-command $script", $pp.UserName.Split('\')[1] , $pp.Password , $pp.UserName.Split('\')[0] )


$InScript

带有启动命令的两行都有异常:

使用“5”参数调用“开始”的异常:“目录名称无效”

当我以管理员权限执行脚本时,它运行完美。

4

1 回答 1

1

您可以使用.net:

$pp= get-credential # as domain\username and password

[System.Diagnostics.Process]::Start( "powershell.exe", "-command $script", $pp.UserName.Split('\')[1] , $pp.Password , $pp.UserName.Split('\')[0] )

这是::Start方法的构造函数:

::Start(string fileName, string arguments, string userName, System.Security.SecureString password, string domain)

编辑后评论:

尝试将完整路径放入exe:

[System.Diagnostics.Process]::Start( "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe", "-command $script", $pp.UserName.Split('\')[1] , $pp.Password , $pp.UserName.Split('\')[0] )

或使用启动过程:

start-process -FilePath "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -Credential $pp -ArgumentList $script
于 2012-04-11T09:03:08.373 回答