以另一个用户身份运行PowerShell,并启动脚本

Lit*_*ing 38 powershell runas

我不会详细了解为什么需要这些,但用户必须能够将PowerShell作为服务帐户启动,并且当PowerShell加载时,它需要运行脚本.我已经可以使用存储的凭据(存储为安全字符串)启动PowerShell,但在我的生活中,我无法运行脚本(位于$ args中).我尝试过各种各样的东西,下面是我目前所处的位置.任何帮助将不胜感激.

$user = "domain\service.account" 
$pwd1 = "big long huge string of characters"
$pwd = ($pwd1 | ConvertTo-SecureString)
$Credential = New-Object System.Management.Automation.PSCredential $user, $pwd
$args = "\\domain.local\location\location\location\Script\script.ps1"
Start-Process powershell.exe -Credential $Credential -ArgumentList ("-file $args")
Run Code Online (Sandbox Code Playgroud)

Geo*_*ton 50

您可以在指定的用户凭据下打开一个新的PowerShell窗口,如下所示:

start powershell -credential ""
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 不知何故,当我使用这个方法时,我无法在新打开的PowerShell窗口中输入任何内容.但是,使用来自/sf/answers/3135846101/的技巧可以正常工作.叹. (9认同)
  • 哦,很奇怪,如果你关闭父PowerShell窗口,新的孩子可以接收键盘输入 (9认同)
  • 绿巨人砸键盘,阅读评论,谢谢肯尼思·伊托 (2认同)

Duk*_*ets 34

我发现这对我有用.

$username = 'user'
$password = 'password'

$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential $username, $securePassword
Start-Process Notepad.exe -Credential $credential
Run Code Online (Sandbox Code Playgroud)

更新:更改为使用单引号以避免Paddy注意到的特殊字符问题.

  • **安全备注** 这将密码以纯文本形式存储在脚本中,这通常是一个坏主意。 (4认同)
  • 由于密码中包含“特殊”字符,因此必须将其用单引号引起来。您可以通过在提示符下写入$ password来检查密码是否已正确存储,它将打印存储在变量中的内容 (2认同)
  • 可能最好在实践中默认使用单引号。有助于避免意外问题的出现——在您打算将它们用于特定目的时保存双引号。 (2认同)

Sem*_*bov 31

这也是通过UI实现这一目标的好方法.

0)在任务栏上右键单击PowerShell图标

1)Shift +右键单击Windows PowerShell

2)"以不同的用户身份运行"

PIC


mjo*_*nor 8

尝试将RunAs选项添加到您的Start-Process

Start-Process powershell.exe -Credential $Credential -Verb RunAs -ArgumentList ("-file $args")
Run Code Online (Sandbox Code Playgroud)

  • 添加`-Verb RunAs` 会产生一个`参数集无法使用指定的命名参数解析。` 我的其他参数是-Wait、-Credential $creds、-WorkingDirectory C:\ -ArgumentList "..." 这是使用powershell 5. (15认同)