我有一个运行脚本的Windows服务(Jenkins),该脚本需要以特定用户的身份运行命令。
我试着这样做,但它不起作用:
$secpasswd = ConvertTo-SecureString "myPassword" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential("DOMAIN\myUsername", $secpasswd)
$Arguments = @()
$Arguments += "-Command"
$Arguments += "pwd"
$Arguments += ">"
$Arguments += "output.txt"
Start-Process powershell.exe -ArgumentList $Arguments -Credential $mycreds -NoNewWindow -WorkingDirectory $workingDir
Start-Sleep 2
Get-Content "$workingDir\output.txt"我得到以下输出:
Start-Process : This command cannot be executed due to the error: Access is denied.
At C:\Windows\TEMP\hudson2382859596554223918.ps1:32 char:14
+ Start-Process <<<< powershell.exe -ArgumentList $Arguments -Credential $mycreds -NoNewWindow -WorkingDirectory $workingDir
+ CategoryInfo : InvalidOperation: (:) [Start-Process], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand现在,如果我删除-Credential $mycreds,它可以正常工作。之所以在最后有Start-Sleep,是因为我在读取this question on SO之后删除了-Wait。
我是不是漏掉了什么?
发布于 2014-02-14 02:50:10
最后找到了解决方案:默认情况下,Jenkins作为服务运行,以“本地系统帐户”登录。要更改这一点,启动服务应用程序(在开始菜单中键入" services“),找到Jenkins,双击它,然后转到"Log On”选项卡。
现在,您应该可以看到该服务正在使用哪个帐户。更改为“此帐户”,并填写您的帐户详细信息,瞧!
根据记录,我最初试图运行的命令现在运行得很好,而不必在顶部添加任何“更改用户”的东西。
特别感谢@Poorkenny,他的评论让我走上了正确的道路,谢谢! Stackoverflow太棒了!(多亏了某人,你才解决了一个你花了一整天才弄明白的问题……)
发布于 2014-02-14 00:41:16
$username = "username"
$password = "password"
$credentials = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,(ConvertTo-SecureString -String $password -AsPlainText -Force))
Start-Process dnscrypt-proxy.exe -WorkingDirectory path_here -Credential ($credentials)--来自powershell论坛;就在几天前,我还在搜索同样的解决方案,结果成功了。希望能对你有所帮助。
来源:http://powershell.com/cs/forums/t/9502.aspx
https://stackoverflow.com/questions/21758651
复制相似问题