2016-11-15 153 views
0

請有人可以幫我用下面寫的PowerShell腳本?我似乎無法得到安裝程序啓動: -Powershell MSI安裝程序腳本

$msiName = "D:\Folder\Build 1.9.0.39621 Setup.msi」 
Write-Host "Installing msi" 

$argumentlist = "/i [application] /qn /l*v log.txt LOGDIR=`"D:\Log`" SQLSERVER=`"xxx-xxx-xxxx-2`" DBAUTOBACKUP=`"0`" APPPOOLDOMAIN=`"Test-as`" APPPOOLUSER=`"Testservice`" APPPOOLPASSWD=`"xxxxxxx`" ADQUERY=`"Test-as.net`" ADNAME=`"ultra`"" 

$application = $msiName 
$argumentlist = $argumentlist.Replace("[application]",$application) 

Start-Process -FilePath "C:\Windows\System32\msiexec.exe" -ArgumentList $argumentlist -Wait 

我試圖簡單它,但它仍然無法正常工作。下面是一些不同的方法我都試過: -

(第一嘗試)

$argumentList = "/i `"xxxxxx 1.9.0.39641 Setup.msi`"" 

Start-Process -FilePath "C:\Windows\system32\msiexec.exe" -ArgumentList $argumentList 

(第2次嘗試)

$argumentList = "/i {0}" -f "xxxxxx 1.9.0.39641 Setup.msi" 

Start-Process -FilePath "C:\Windows\system32\msiexec.exe" -ArgumentList $argumentList 

(3未遂)

$argumentList = ("/i {0}" -f "xxxxxx 1.9.0.39641 Setup.msi") 

Start-Process -FilePath "C:\Windows\system32\msiexec.exe" -ArgumentList $argumentList 

(第4次嘗試)

$argumentList = ("/i {0}" -f "xxxxxx 1.9.0.39641 Setup.msi") 

Start-Process -FilePath "C:\Windows\system32\msiexec.exe" -ArgumentList "$argumentList" 
+0

您可以請發佈錯誤日誌。我想你在構建'argumentlist'時遇到了一個問題,有很多轉義。我建議通過格式運算符(http://ss64.com/ps/syntax-f-operator.html,例如'$ argumentlist =(「/ i {0}」-f $ msiName))來構建此字符串。 – Moerwald

+0

感謝您的回覆。我嘗試過簡化它,並按照你的建議(請參閱我的編輯信息),但它仍然無法工作。它甚至不會啓動安裝程序。我只是彈出一個對話框,說明命令行的格式應該用於啓動msi,即「msiexec/Option <必需的參數> [可選參數] .......等等等 – ED209

+0

你會讓你的如果你停止在你的文件名中添加空格,生活會更簡單 –

回答

-1

我刪除了舊的答案。

新的可能的解決方案

ArgumenList是一個字符串數組,因此它可以採取多個參數。

Start-Process -FilePath "C:\Windows\system32\msiexec.exe" -ArgumentList "/i", "`"xxx yyyyy.msi`"" 

我試着用安裝程序,包括名稱中的空白,在我的機器上工作。

希望有幫助

+0

我同意你的看法:似乎這裏有一些轉義問題,用反斜槓轉義似乎也可以,可能試試'「$ argumentlist」'?我不太確定。 – Djee

+0

嗨,感謝您的回覆,但我仍然無法正常工作,我甚至嘗試過簡化它,我嘗試了以下方法: - – ED209

+0

查看上面我嘗試過的不同方式 – ED209

0

以下是我過去使用過的應該爲你工作的東西。

$argumentList = @(
     "-o", 
     "$sourcefile", 
     "-d", 
     "$targetFolder" 
    ) 
start-process -filepath $file -argumentlist $argumentList -wait -nonewwindow -passthru