Powershell запускает exe как другой пользователь - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть следующие команды в скрипте powershell (в Jenkins):

$Command = "C:\Program Files\Microsoft SQL Server\150\DAC\bin\SqlPackage.exe"
$Parms = "/Action:Script /sf:DB.dacpac /Profile:publish.xml"

$Prms = $Parms.Split(" ")
& "$Command" $Prms

Как я могу запустить SqlPackage.exe от имени другого пользователя?

PS: он находится внутри Jenkins, поэтому я не могу запустить файл ps1 или SqlPackage.exe с помощью диалогового окна runas windows.

РЕДАКТИРОВАТЬ:

Я думаю, я очень близко, пока у меня есть следующий сценарий.

   $sb = [scriptblock]::create("& ""SqlPackage.exe"" ""/Action:Script /sf:DB.dacpac /Profile:publish.xml /TargetServerName:localdb /op:Publish.sql""")
   $Secure_Password = ConvertTo-SecureString -String $parPassword -AsPlainText -Force
   $Credential = New-Object -Type PSCredential($parUserId,$Secure_Password)
   $Session    = New-PSSession -ComputerName ServerName -Credential $Credential
   Invoke-Command -Session $Session -ScriptBlock $sb 

Я получаю следующую ошибку:

*** Аргумент 'Action' имеет недопустимое значение: 'Script /sf:DB.dacpac / Profile : publi sh. xml / TargetServerName: localdb /op:Publish.sql'

1 Ответ

0 голосов
/ 28 февраля 2020

вместо создания сеанса используйте start-process. Я бы порекомендовал предоставить полный путь к файлу dacpa c с переключателем SourceFile вместе с переключателем профиля

$Command = "C:\Program Files\Microsoft SQL Server\150\DAC\bin\SqlPackage.exe"
$Parms = "/Action:Script /sf:DB.dacpac /Profile:publish.xml"

$Secure_Password = ConvertTo-SecureString -String $parPassword -AsPlainText -Force
$Credential = New-Object -Type PSCredential($parUserId,$Secure_Password)

Start-Process -Credentials $credential -FilePath $command -ArgumentList $Parms
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...