Windows
使用 Desired State Configuration (DSC) 靜默安裝 Web Deploy 失敗
對 DSC 來說絕對是全新的,所以我現在真的很困惑。我有一個基本配置,可確保安裝 IIS、.NET 4.5 和 MSMQ。我正在努力配置一個新的 Windows 2012 R2 實例來支持我們的應用程序。目前,我們的應用程序是使用 powershell over Web Deploy 部署的(工件是在 TeamCity 中使用 PSake/MSBuild 建構的)。
因此,我嘗試對 DSC 採取的下一步是在目標伺服器上安裝 Web Deploy。這是一個 MSI 下載,而不是我可以簡單地確保已安裝的“Windows 功能”。
所以我
Script
在我的 DSC 中有一個自定義項,它嘗試對 Web Deploy MSI 文件進行無人值守安裝。劇本Script InstallWebDeploy { GetScript = { $false } SetScript = { $cmd = "MSIEXEC /a 'C:\Temp\WebDeploy_amd64_en-US.msi' /passive" # have also tried /qn (Start-Process -FilePath "msiexec.exe" -ArgumentList "/a 'C:\Temp\WebDeploy_amd64_en-US.msi' /passive" -Wait -Passthru).ExitCode } TestScript = { $false } }
結果,在生成 .mof 並使用它之後,給了我:
VERBOSE: [CORAPP4]: LCM: [ Start Resource ] [[Script]InstallWebDeploy] VERBOSE: [CORAPP4]: LCM: [ Start Test ] [[Script]InstallWebDeploy] VERBOSE: [CORAPP4]: LCM: [ End Test ] [[Script]InstallWebDeploy] in 0.0000 seconds. VERBOSE: [CORAPP4]: LCM: [ Start Set ] [[Script]InstallWebDeploy] VERBOSE: [CORAPP4]: [[Script]InstallWebDeploy] Performing the operation "Set-TargetResource" on target "Executing the SetScript with the user supplied credential". VERBOSE: [CORAPP4]: LCM: [ End Set ] [[Script]InstallWebDeploy] in 1.0430 seconds. VERBOSE: [CORAPP4]: LCM: [ End Resource ] [[Script]InstallWebDeploy] VERBOSE: [CORAPP4]: LCM: [ End Set ] in 4.4783 seconds. VERBOSE: Operation 'Invoke CimMethod' complete. VERBOSE: Time taken for configuration job to complete is 4.214 seconds
但是,Web Deploy 在伺服器上是看不到的。(我意識到 Get-Script 和 Test-Script 需要充實,但想減少這裡涉及的變數數量)
知道為什麼這會失敗嗎?(但沒有明顯的錯誤?)
由於您將 DSC 與 msi 文件一起使用,因此我建議您使用 Package Resource。然後,您可以確保它正在安裝而不是使用自定義腳本資源。請注意,名稱和產品 ID 屬性必須與包匹配。我在下面根據您要安裝的軟體包放置了一個範例。
連結到包資源文件:包資源 MSDN
WindowsFeature WebManagementService { Ensure = "Present" Name = "Web-Mgmt-Service" } Package WebDeploy { Ensure = "Present" Path = "$Env:SystemDrive\TestFolder\WebDeploy_amd64_en-US.msi" Name = "Microsoft Web Deploy 3.5" LogPath = "$Env:SystemDrive\TestFolder\logoutput.txt" ProductId = "1A81DA24-AF0B-4406-970E-54400D6EC118" Arguments = "LicenseAccepted='0' ADDLOCAL=ALL" }