【发布时间】:2017-06-13 10:50:19
【问题描述】:
我正在尝试从另一个 powershell 脚本运行一个 powershell 脚本,传入不同用户的凭据,然后使用凭据:
Start-Process powershell.exe -Credential "LON\my-user" -NoNewWindow -ArgumentList "-file C:\DevopsScripts\stuckApps.ps1"
我有很多不同的方式都得到相同的错误。我试过在命令前设置用户名和密码:
$username = "LON\my-user"
$password = "pass"
$PSS = ConvertTo-SecureString $password -AsPlainText -Force
$cred = new-object system.management.automation.PSCredential $username,$PSS
$env:USERNAME
Start-Process powershell.exe -Credential $cred -NoNewWindow -ArgumentList "-file C:\DevopsScripts\stuckApps.ps1"
但我尝试的一切都会出错:
Start-Process : 此命令无法运行,因为错误:用户名或密码不正确。
我知道用户名和密码是正确的,因为它们已经在 cmd 上进行了测试,可以正常工作:
C:\Users\ADM-me>runas /noprofile /user:LON\my-user"powershell.exe C:\DevopsScripts\stuckApps.ps1"
我在这里做错了什么,我该如何解决这个问题,最好事先设置密码,这样可以自动化。这也不需要使用 Start-Process 来完成,这是我能找到的最接近工作的方法。
我认为我遇到的问题是,在卡住的应用程序中它有这个:
$conn = New-Object System.Data.SqlClient.SqlConnection
$conn.ConnectionString = "Server = mssql.co.uk; Database = mydata; Integrated Security = true;"
$conn.Open()
我需要它来运行我试图通过它的凭据,否则我会收到此错误。 `使用“0”参数调用“Open”的异常:“登录失败。登录来自不受信任的域,不能用于 Windows 身份验证。”
但是我不能通过凭据,因为唯一有效的是管理员凭据,(我有,但那会抛出上面的错误)。我是否可以使用管理员登录名来访问卡住的应用程序,然后使用连接卡住的应用程序所需的登录名作为 AD 登录名。
【问题讨论】:
-
你试过 $cred = Get-Credential 吗?这并不能真正解决您的问题,因为您必须在运行时输入凭据,但它可能会让您了解自己做错了什么。
-
请注意(即使这样有效)它不会让您绕过 UAC 提示符。
-
不,仍然是同样的错误,正如@Bill_Stewart 所说,它不会绕过 UAC 提示
-
可能是您一开始就以错误的方式解决问题,您的
stuckApps.ps1脚本是做什么的? -
我的意思是,如果您的目标是绕过 UAC 提示符,那么您的努力是徒劳的。你不能。 UAC 提示的全部目的是从管理用户那里获得确认。
标签: powershell