2013-05-22 2 views
2

Привет, я пытался выполнить MSI с машины сборки A (cttfs) и установить MSI на машине B (c2devint); выход сайта на машины B.Script Block powershell remote MSI Установка

Пожалуйста, помогите мне, фиксируя сценарий Powershell, который находится на компьютере A с MSI installer.This скрипт запускается из машины

$cred = Get-Credential username 
$session = new-PSSession -name c2devint -credential $cred 
Invoke-Command -ScriptBlock {Invoke-Command -Session $session -ScriptBlock {Start-Process "msiexec.exe" -ArgumentList "/i C:\DailyBuild\DirectMSI.msi INSTALLLOCATION=D:\Websites\DirectDevInt ENVPROPERTY=DEV /qb" -Wait} -ComputerName c2devint} 
Remove-PSSession $session 

Здесь ошибка

Invoke-Command : Parameter set cannot be resolved using the specified named parameters. 
    At line:3 char:44 
    + Invoke-Command -ScriptBlock {Invoke-Command <<<< -Session $session -ScriptBlock {Start-Process "msiexec.exe" -ArgumentList "/i C:\DailyBuild\DirectMSI.msi INSTALLLOCATION=D:\Websites\DirectDevInt ENVPROPERTY=DEV /qb" -Wait} -ComputerName c2devint} 
     + CategoryInfo   : InvalidArgument: (:) [Invoke-Command], ParameterBindingException 
     + FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.PowerShell.Commands.InvokeCommandCommand 

А также, пожалуйста, помогите мне, как передать имя пользователя & PWD для этого сценария

ответ

1

Поскольку вы создали PSSession, используйте -ComputerName параметр на New-PSSession.

Parameter Set: ComputerName 
New-PSSession [[-ComputerName] <String[]> ] [-ApplicationName <String> ] [-Authentication <AuthenticationMechanism> ] [-CertificateThumbprint <String> ] [-ConfigurationName <String> ] [-Credential <PSCredential> ] [-EnableNetworkAccess] [-Name <String[]> ] [-Port <Int32> ] [-SessionOption <PSSessionOption> ] [-ThrottleLimit <Int32> ] [-UseSSL] [ <CommonParameters>] 

Переместить параметр -Session на Invoke-Command вне ScriptBlock:

Invoke-Command -Session $session -ScriptBlock ` 
    {Start-Process "msiexec.exe" -ArgumentList "/i C:\DailyBuild\DirectMSI.msi INSTALLLOCATION=D:\Websites\DirectDevInt ENVPROPERTY=DEV /qb" -Wait} 

Затем удалите -ComputerName paremeter на Invoke-Command, так как вы используете набор Session paremeter.

Parameter Set: Session 
Invoke-Command [[-Session] <PSSession[]> ] [-ScriptBlock] <ScriptBlock> [-ArgumentList <Object[]> ] [-AsJob] [-HideComputerName] [-InputObject <PSObject> ] [-JobName <String> ] [-ThrottleLimit <Int32> ] [ <CommonParameters>] 
+0

Hi Andy Я думаю, что вы дали ниже один в качестве своего ответа; но это устанавливает MSI, который находится на машине A на машине A, а не на машине B. Я хочу установить MSI на удаленном компьютере B. «Invoke-Command -Session $ session -ScriptBlock» {Start-process "msiexec.exe" -ArgumentList "/i C: \ DailyBuild \ DirectMSI.msi УСТАНОВКА = D: \ Веб-сайты \ DirectDevInt ENVPROPERTY = DEV/qb "-Wait}" – Chat

+0

@Chatrapathi нет, он должен запускать msiexec удаленно на машине B. –

+0

Но в этом заявлении мы не ' t указали какое-либо имя_компьютера и его учетные данные. Не могли бы вы дать мне заявление с этим сообщением? Invoke-Command -Session $ session -ScriptBlock '{Start-process" msiexec.exe "-ArgumentList"/i C: \ DailyBuild \ DirectMSI.msi УСТАНОВКА = D: \ Веб-сайты \ DirectDevInt ENVPROPERTY = DEV/qb "-Wait}" – Chat