2015-09-09 4 views
0

Мне нужно иметь возможность запускать сценарий PowerShell удаленно (через Jenkins) в качестве другого пользователя. Поскольку он будет выполнен как работа Дженкинса, Get-Credential не является для меня вариантом. Ниже приведен сценарий, который я создал, но он просто не работает.Как выполнить PS1-файл как другого пользователя?

$uname='domain\username' 
$pwd='password' 
$passw=Convertto-SecureString -String $pwd -AsPlainText -force 
$mycred=New-object -TypeName System.Management.Automation.PSCredential -ArgumentList $uname, $passw 

Invoke-Command -FilePath "C:\test_scripts\fetchquery.ps1" -Authentication default -Credential $mycred -computername localhost 
+0

Действительно ли это копирование и вставка, которая ставит две линии вместе? '$ mycred = New-object .....' должен быть в отдельной строке. – Matt

+1

Определить, что «не работает». –

ответ

0

Создание удостоверени объекта:

$username = 'domain\username' 
$Password = 'password' | ConvertTo-SecureString -Force -AsPlainText 
$credential = New-Object System.Management.Automation.PsCredential($username, $Password) 

В своем коде вы выполнить его на локальном хосте, поэтому начните Powershell сеанс Использование сохраненного верительных:

Start-Process powershell -argumentlist '-executionpolicy','bypass','-file',"C:\test_scripts\fetchquery.ps1"' -Credential $credential 

и запустить скрипт Дистанционно (Не использовать Localhost)

Invoke-Command -Computername 'Computer' ` 
-FilePath C:\test_scripts\fetchquery.ps1 -ArgumentList PowerShell ` 
-Cred $Credential 
+0

Привет @Avshalom, спасибо за исправление скрипта. Он отлично работает при запуске локально. Однако, поскольку Jenkins не разрешает всплывающие окна, это предотвращает выполнение сценария. Я попробовал «-WindowStyle Hidden» в -ArgumentList, но он ошибся со следующим: ** Набор параметров не может быть разрешен с использованием указанных именованных параметров ** – Karthik

+0

Дженкинс называет сборку как успех, но eventviewer имеет эту ошибку в системном журнале: * * Приложение popup: powershell.exe - Ошибка приложения: приложение не смогло начать правильно (0xc0000142). Нажмите «ОК», чтобы закрыть приложение **. Любая идея, как я могу подавить это маленькое черное командное окно от получения ложки? - Благодаря. – Karthik

0

Попробуйте следующее:

Start-Process powershell -WindowStyle 'Hidden' -ArgumentList '-executionpolicy', 'bypass', '-file', $scriptFullName -Credential $C