我正在尝试创建一个Powershell脚本,该脚本以系统用户帐户启动进程。我想在AAD中使用注册的应用程序作为该系统用户帐户。
这是我创建的代码。
$ApplicationId = "My ApplicationID"
$ServicePrincipalSecret = "My Application's secret Key"
$SecurePassword = ConvertTo-SecureString –String $ServicePrincipalSecret –AsPlainText -Force
$Credential = New-Object System.Management.Automation.PsCredential ($ApplicationId, $SecurePassword)
Start-Process -FilePath notepad -Credential $Credential
此代码无效。并返回以下错误消息。
Start-Process:由于以下错误,无法运行此命令:用户 名称或密码不正确。在第1行:char:1 + Start-Process -FilePath记事本-Credential $ Credential + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ + CategoryInfo:InvalidOperation :( :) [开始进程],InvalidOperationException + FullyQualifiedErrorId:InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand
我尝试使用以下命令来检查$ Credential是否正确,并成功连接了Azure。因此,我的凭据对象已正确创建。
Connect-AzureRmAccount-凭据$ Credential-租户“我的Azure租户ID” -ServicePrincipal
我还尝试了以下代码。
$psinfo = New-Object System.Diagnostics.ProcessStartInfo
$psinfo.FileName = "notepad"
$psinfo.UserName = $ApplicationId
$psinfo.Password = $SecurePassword
$psinfo.Verb = "runasuser"
$psinfo.UseShellExecute = 0
$psinfo.LoadUserProfile = 0
$ps = New-Object System.Diagnostics.Process
$ps.StartInfo = $psinfo
$ps.Start()
此代码也不起作用。并返回以下错误消息。
使用“ 0”参数调用“开始”的异常:“存根接收错误 data“ at line:1 char:1 + $ ps.Start() + ~~~~~~~~~~~~ + CategoryInfo:未指定:(:) [],MethodInvocationException + FullyQualifiedErrorId:Win32Exception
是否有一种好的方法来使用有资格管理Azure Active Directory的用户帐户(与实际运行脚本的用户不同)来启动进程?如果有人给我任何建议,将不胜感激。
谢谢。
答案 0 :(得分:0)
尝试以下类似方法。它对我有用。
pagination
这是当您想提示输入凭据时使用的,否则您可以在命令下面简单使用
$uid = "Domain\username"
$pwd = "#pwd"
$Args = "-Verb RunAs -Wait -passthru"
$MyCredential=New-Object -TypeName System.Management.Automation.PSCredential `
-ArgumentList $Uid, ($pwd | ConvertTo-SecureString -AsPlainText -Force)
Start-Process -FilePath C:\windows\system32\system32\notepad.exe -Credential ($cred) -Argumentlist $Args
请检查此内容,看看它是否适合您,否则请与您联系。
答案 1 :(得分:0)
我发现我的问题是由于与不存在的用户进行身份验证。 Azure Active Directory中的已注册应用程序不会同步到Azure Active Directory域服务。因此,即使我尝试使用AAD应用程序服务主体凭据对AADDS进行更改/更新,身份验证也会失败。 使用AAD用户对象代替服务主体对我有用。 谢谢。