【问题标题】:Installing JRE using Powershell DSC hangs使用 Powershell DSC 安装 JRE 挂起
【发布时间】:2015-07-22 11:58:09
【问题描述】:

我正在尝试在 Windows 2012 R2 机器上使用 Powershell DSC 远程安装 Java Runtime(碰巧是 8 个),但它似乎挂起。

我最初尝试使用 Chocolatey DSC 提供程序安装它,但这给了我一个错误的成功(choco 声称它已安装,但没有解压实际文件)。我把这个事实归结为:http://powershell.org/wp/forums/topic/issue-installing-java-32-bit-using-package-resource/#post-23187

所以我解压了 exe 并提取了两个 java MSI,我的 DSC 配置如下所示:

    Package java8x86
    {
        Ensure = 'Present'
        Name = 'Java 8 Update 45'
        Path = (Join-Path $localDscFileDir "Java\jre1.8.0_45\jre1.8.0_45.msi")
        Arguments = '/s'
        ProductId = '26A24AE4-039D-4CA4-87B4-2F83218045F0'
        DependsOn = @("[File]javaMsi")
    }

([File]javaMsi 将 .msi 文件复制到远程机器上)。

当我生成我的 MOF 和 Start-DscConfiguration 时,输出挂在这些行上:

VERBOSE: [DEVTEST-3U2LN5Q]:                            [[Package]java8x86]  Parsing 26A24AE4-039D-4CA4-87B4-2F83218045F0 as an identifyingNumber
VERBOSE: [DEVTEST-3U2LN5Q]:                            [[Package]java8x86] Parsed 26A24AE4-039D-4CA4-87B4-2F83218045F0 as {26A24AE4-039D-4CA4-87B4-2F83218045F0}
VERBOSE: [DEVTEST-3U2LN5Q]:                            [[Package]java8x86] Package configuration starting
VERBOSE: [DEVTEST-3U2LN5Q]:                            [[Package]java8x86] Starting C:\Windows\system32\msiexec.exe with /i "C:\DscFiles\Java\jre1.8.0_45\jre1.8.0_45.msi" /quiet /s
VERBOSE: [DEVTEST-3U2LN5Q]:                            [[Package]java8x86] Starting process C:\Windows\system32\msiexec.exe with arguments /i "C:\DscFiles\Java\jre1.8.0_45\jre1.8.0_45.msi" /quiet /s

我什至无法使用 CTRL-C 并且必须转到远程计算机并终止 Windows Installer 进程以导致 Start-DscConfiguration 失败

我快要崩溃了……现在是 2015 年,我无法远程设置 Windows 机器!这些技术承诺了这么多....

【问题讨论】:

  • 如果您输入 Arguments = "/s /L*v c:\somepath.log",您可能可以从 msiexec 获得更多日志记录。它不会解决问题,但它可能有助于查明实际挂起的内容。
  • 不高兴...日志文件已创建,但它是空的...
  • 问题必须与 MSI 本身有关...我在完全无头远程安装 Sql Server 时没有遇到任何问题。
  • 没有具体的想法,但你可以listen to the soothing voiceover on this video 用进程监视器解决它:)
  • 谢谢鲁本...... JRE 要求是我讨厌 Jenkins 的原因之一......

标签: powershell dsc


【解决方案1】:

删除线

参数 = '/s'

否则添加

参数 = '/q'

【讨论】:

  • (如 OP 输出中所述 - 这些参数已被使用)
  • Package java8x86 { Ensure = 'Present' Name = 'Java 8 Update 45' Path = (Join-Path $localDscFileDir "Java\jre1.8.0_45\jre1.8.0_45.msi") 参数 = '/q' ProductId = '26A24AE4-039D-4CA4-87B4-2F83218045F0' DependsOn = @("[File]javaMsi") }
  • "/q" 使安装程序退出并显示错误代码 1639,这似乎意味着 ERROR_INVALID_COMMAND_LINE
【解决方案2】:

一年后,我似乎有了解决办法。不确定最初的问题是否与我正在安装的安装程序版本有关..但这似乎对我有用 - 目前:

    xRemoteFile javaInstaller {
        DestinationPath = (Join-Path $localDscFileDir "Java\jreInstaller.exe")
        Uri = "http://javadl.oracle.com/webapps/download/AutoDL?BundleId=211999"
    }
    Package java8
    {
        Ensure = 'Present'
        Name = 'Java 8'
        Path = (Join-Path $localDscFileDir "Java\jreInstaller.exe")
        Arguments = '/s REBOOT=0 SPONSORS=0 REMOVEOUTOFDATEJRES=1 INSTALL_SILENT=1 AUTO_UPDATE=0 EULA=0 /l*v "C:\DscFiles\Java\jreInstaller.exe.log"' #From https://powershell.org/forums/topic/issue-installing-java-32-bit-using-package-resource/#post-39206
        ProductId = '26A24AE4-039D-4CA4-87B4-2F64180101F0'
        DependsOn = @("[xRemoteFile]javaInstaller")         
    }

顺便说一句,那个下载地址对应jre-8u101-windows-x64.exe

【讨论】:

  • 这里请注意,xRemoteFile 资源中使用的 Uri 需要指向离线安装程序 - 否则会失败
【解决方案3】:

不管怎样,我已经成功安装了 JDK 7:

Package Java
{
    Ensure = 'Present'
    Name = "Java 7 Update 72 (64-bit)"
    Path = "${InstallerPath}\jdk-7u72-windows-x64.exe"
    ProductId = '64A3A4F4-B792-11D6-A78A-00B0D0170720'
    Arguments = "/s STATIC=1 WEB_JAVA=0"
}

干杯, 安德鲁

【讨论】:

    【解决方案4】:

    除上述之外。

    过去曾经历过这种情况。通过 DSC 安装 MSI/EXE,如果您没有传递正确的 [参数],它会挂起,直到远程机器上的所有线程都被杀死。

    杀死所有线程,下次运行conf时,强制配置!
    start-dscConf -force

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多