Как запустить процесс, используя зарегистрированное приложение в Azure Active Directory со скриптом powershell - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь создать скрипт 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 символ: 1 + Start-Process -FilePath notepad -Credential $ Credential + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:) [Start-Process], InvalidOperationException + FullyQualifiedErrorId: InvalidOperationException, Microsoft.PowerShell.Commands.StartProcessCommand

Я попробовал следующую команду, чтобы проверить правильность моего $ Credential и успешно подключил Azure.Таким образом, мой объект Credential создан правильно.

Connect-AzureRmAccount -Credential $ Credential -Tenant "Мой идентификатор клиента Azure" -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()

эта кодовая доза тоже не работает.и вернуть следующее сообщение об ошибке.

Исключение, вызывающее «Start» с аргументом (ами) «0»: «Заглушка получила неверные данные» В строке: 1 char: 1 + $ ps.Start ()+ ~~~~~~~~~~~ + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: Win32Exception

Есть ли хороший способ запустить процесс с учетной записью пользователя, котораяимеет право управлять Azure Active Directory, отличным от пользователя, который фактически запускает сценарий?если кто-нибудь даст мне какой-либо совет будет оценен.

спасибо.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Я обнаружил, что моя проблема была из-за аутентификации с несуществующим пользователем. Зарегистрированное приложение в Azure Active Directory не будет синхронизировано с доменной службой Azure Active Directory. Поэтому, даже если я попытался выполнить изменение / обновление AADDS с учетными данными основного пользователя службы приложений AAD, аутентификация не удалась. Использование объекта пользователя AAD вместо субъекта службы работало для меня. спасибо.

0 голосов
/ 24 апреля 2019

Попробуйте что-то вроде ниже. Это сработало для меня.

$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

это для случаев, когда вы хотите запросить учетные данные, в противном случае вы можете просто использовать ниже команду

$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 -Credential Get-Credential -Argumentlist $Args

Пожалуйста,проверьте это и посмотрите, работает ли он для вас, иначе еще посмотрим с вами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...