2017-04-05 26 views
0
msiexec /i "example.msi" /q UserName="my username" password="my password" 

上述命令在命令行中完美執行,但我需要在powershell中單行執行。 所以任何人都請建議。 我是新來的PowerShell。如何在從服務器到遠程客戶端的單行中的powershell中執行以下命令

我曾嘗試以下之一:

Start-Process -FilePath msiexec -ArgumentList//i, example.msi, "UserName='my username'","password='my password" -Wait 

,但它顯示了一些問題:

Start-Process : A positional parameter cannot be found that accepts argument 'System.Object[]'. 
At line:1 char:1 
+ Start-Process -FilePath msiexec -ArgumentList//i, "'example.msi ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (:) [Start-Process], ParameterBindingException 
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand 
+0

嗨,你得到了什麼錯誤? – sodawillow

+0

@karthik請使用[編輯](http://stackoverflow.com/posts/43232159/edit)鏈接 –

+0

向您的問題添加任何澄清信息嗨,我編輯了我的消息正文。 – karthik

回答

1

你幾乎得到了它,試試這個:

start msiexec -ArgumentList 
    "/i example.msi /q UserName=""my username"" password=""my password""" 

如果有任何的你的論點需要引號,你需要把它們加倍。

+0

嗨@Balic C:它工作正常,也請建議如何運行此msi到客戶端系統。 – karthik

+0

很酷,你可以使用Joseph的方法,即'Invoke-Command',或者你可以使用'psexec',我已經取得了很多成功。 –

+0

我已經使用invoke-command但輸出顯示沒有任何Invoke-Command -ComputerName $ computer -ScriptBlock {msiexec/i「\\ servername \ pathToFile \ example.msi」/ q UserName =「我的用戶名」password =「我的密碼「} – karthik

0

嘗試使用「Invoke-Command」cmdlet。應該看起來像這樣:

$computerlist = get-content c:\temp\ComputerNames.txt 
foreach ($computer in $computerlist) { 
    Invoke-Command -ComputerName $computer -ScriptBlock {msiexec /i "\\servername\pathToFile\example.msi" /q UserName="my username" password="my password"} 
} 

嘗試查看此命令的幫助。

+0

謝謝你正在工作我還有一個疑問我想從服務器運行msi在客戶端系統中執行。 – karthik

+0

@karthik只需提供確切的UNC路徑* .msi。 – Vesper

+0

但服務器如何找到哪個客戶端必須運行*。msi – karthik

0

一般來說,當你看到的參數,例如參數argumentslist始終牢記一個數組的預期。 「&路徑參數」格式相同。

有關數組的很酷的事情是,每個項目都會提供給可執行文件,就好像它是隱式引用的,類似於在引號中包含帶引號的命令提示符中包含空格的參數。

出於這個原因,我總是用結構像

[email protected]($var1,$var2) 

喜歡我從來不擔心什麼是變量。在多行創建數組時,根據每種情況,還可以使更改管理變得更加容易,因爲添加參數是行更改。它還與評論一出故障排除

當例如

幫助
[email protected](
    $var1 
    $injectedVar 
    #$disabled 
    $var2 
) 
相關問題