2017-02-20 4 views
0

У меня есть сценарий powershell, который проверяет несколько тестов в каждом изображении Windows. Но нижеприведенный тест требует, чтобы учетные данные домена использовались для успешного запуска, когда я использую этот скрипт!Как аутентифицировать учетные данные домена в скрипте powershell

Может ли кто-нибудь помочь мне исправить?

if (($ImageName -like "*dev*") -or ($ImageName -like "*bare*")) 
    { 
     #$ADE1 = Invoke-Expression ('C:\ade\bin\ade.exe | select-string -pattern "begintrans"') | out-string ; $ADE = $ADE1.trim().split("")[1] 
     Invoke-Expression ('C:\ade\bin\ade.exe | select-string -pattern "begintrans"') > C:\Temp\ade_check.txt 
     $ADE1 = Get-Content C:\Temp\ade_check.txt | Select-String "begintrans" | out-string ; $ADE = $ADE1.trim().split(" ")[1] 

     if ($ADE -eq "begintrans") 
     { 
     $ADE = "ADE Success" 
echo "ADE = ADE Success" 
     } 

     if ($ADE -eq $null){ 
     $ADE = "ADE Failed" 
echo "ADE = ADE Failed" 
     } 

    } 
    else 
     { 
     if (($ImageName -like "*simple*") -or ($ImageName -like "*BareOS*")){ 

     $ADE = "BareOS, ADE Not Installed" 
echo "ADE = BareOS, ADE Not Installed" 
     } 
     } 
+0

Вы уже пробовали ['Get-Credential'] (https://msdn.microsoft.com/en-us/powershell/reference/4.0/microsoft.powershell.security/get-credential)? – vonPryz

+0

спросите имя пользователя и пароль. Я хочу, чтобы сценарий запускался удаленно с помощью инструмента Jenkins. Поэтому он не должен запрашивать имя пользователя и пароль. Так или иначе, чтобы мы могли добавлять имя пользователя и пароль в сценарий, чтобы сделать то же самое – SNair

+1

Да, есть способ сохранить учетные данные и передать их вперед. Вопрос опускает эту важную часть информации. Сначала вы спрашиваете о полномочиях. Вы намекаете на командлет. Затем вы обнаружите, что он запускается на удаленной системе. Что дальше? – vonPryz

ответ

0

Как было предложено @vonPryz, выполняющим скрипт на аутентифицированной удаленной сессии, вероятно, лучше всего. Что касается вашего опасения, что Get-Credential необходимо для инстанцирования сеанса удаленного доступа и запрашивает имя пользователя и пароль, есть по крайней мере два варианта:

  1. Создание PSCredential на лета
  2. Чтения шифрованных учетных данных с диска

Создание PSCredential на лета

создания учетных данных из паролей открытого текста описан здесь: Creating a PS Credential from a Clear Text Password in Powershell

Вы в основном работать:

PS C:\> $password = "[email protected]" | ConvertTo-SecureString -asPlainText -Force 
PS C:\> $username = "EdgarSchnittenfittich" 
PS C:\> $credential = New-Object System.Management.Automation.PSCredential($username,$password) 

Чтение зашифрованы учетные данные с диска

После того, как у вас есть PSCredential объект, который вы можете экспортировать его в зашифрованном виде через Export-CliXml. Чтобы импортировать учетные данные, просто введите Import-CliXml. Учетные данные хранятся в зашифрованном виде с непрозрачным ключом шифрования для текущего пользователя, экспортирующего учетные данные. Это означает, что только один и тот же пользователь может позже импортировать учетные данные снова.

Пример:

$cred = Get-PSCredential; 
$cred | Export-CliXml C:\TEMP\Credentials.xml; 

$importedCredentials = Import-CliXml C:\TEMP\Credentials.xml; 

Запуск ваши скрипты

  • С этими учетными данными вы можете легко запустить любой сценарий с помощью Enter-PSSession или Invoke-Command.
  • Что касается среды Jenkins: убедитесь, что вы экспортировали зашифрованные учетные данные под той же учетной записью службы, которая используется для импорта ваших учетных данных.