2016-10-14 13 views
0

PowerShell DSCを使用してHPC Pack 2012 R2 U3セットアップをインストールしようとしています。を動作し、ソフトウェアをインストール次のコード:PowerShell DSCでexeをインストールすると、LCM実行時にのみ終了コードが返されます

$HpcPackName = "Microsoft HPC Pack 2012 R2 Server Components" 
    $HpcPackSourcePath = "C:\Temp\HPC2012R2_Update3_Full\setup.exe" 
    $sqlServer = "EMEAWINQA15" 
    $Arguments = "-unattend -headNode" 

    function InstallUsingProcess 
    { 
     [CmdletBinding()] 
     param() 

     Write-Verbose "HpcPackSourcePath: $HpcPackSourcePath" 
     Write-Verbose "Arguments: $Arguments" 

     $startInfo = New-Object System.Diagnostics.ProcessStartInfo 
     $startInfo.FileName = $HpcPackSourcePath 
     $startInfo.Arguments = $Arguments 

     $process = New-Object System.Diagnostics.Process 
     $process.StartInfo = $startInfo 

     $exitcode = 0 
     $process.Start() | Out-Null 

     $process.WaitForExit() 

     if($process) 
     { 
      $exitCode = $process.ExitCode 
      Write-Verbose "Exit code: $exitCode" 
     } 
    } 

    InstallUsingProcess -Verbose 

しかし、私はスクリプトDSCの設定を使用して同じことを実行すると、それが成功して終了コード10で非常に迅速に返します。

Configuration TestHpcInstall 
{ 
    Import-DscResource –ModuleName PSDesiredStateConfiguration 

    Node $AllNodes.Where({$_.Roles -contains 'HpcHeadNode'}).NodeName 
    { 
     $HpcPackName = "Microsoft HPC Pack 2012 R2 Server Components" 
     $HpcPackSourcePath = "C:\Temp\HPC2012R2_Update3_Full\setup.exe" 
     $sqlServer = "EMEAWINQA15" 
     $Arguments = "-unattend -headNode" 

     Script TestInstall 
     { 
      GetScript = { 
       return @{ "Result" = "$true"} 
      } 
      TestScript = { 
       return $false 
      } 
      SetScript = { 
       Write-Verbose "HpcPackSourcePath: $using:HpcPackSourcePath" 
       Write-Verbose "Arguments: $using:Arguments" 

       $startInfo = New-Object System.Diagnostics.ProcessStartInfo 
       $startInfo.FileName = $using:HpcPackSourcePath 
       $startInfo.Arguments = $using:Arguments 

       $process = New-Object System.Diagnostics.Process 
       $process.StartInfo = $startInfo 

       $exitcode = 0 
       $process.Start() | Out-Null 

       $process.WaitForExit() 

       if($process) 
       { 
        $exitCode = $process.ExitCode 
        Write-Verbose "Exit code: $exitCode" 
       } 
      } 
     } 
    } 
} 

TestHpcInstall -ConfigurationData $configData -OutputPath "C:\Temp" 
Start-DscConfiguration -ComputerName "EMEAWINQA15" -Path "C:\Temp\" -Verbose -Wait -Force 

これはPackageリソースで使用されているのと同じコードです.0の代わりにエラーコード10が返されるため(パッケージが正常にインストールされた場合)、先頭のコードサンプルのように失敗します。このセットアップでは、出力ファイルまたはログファイルは生成されません。

アイデア?私は困惑している。

答えて

1

問題が見つかりました。私はこれが許可と関係していると思った。なぜなら、セットアップが正常に実行されたときにUACの仰角プロンプトを出すからだ。私はまだようPackageリソースにローカル管理者の資格情報を提供するのでLCMは、NT AUTHORITY \ SYSTEMアカウントの下で実行されますので、管理者である、と

    1. :しかし、私は、2つの理由の前にそれを交差させていました(動作しませんでした)

    Package InstallHpcHeadNode 
    { 
        Ensure = "Present" 
        Name = $HpcPackName 
        ProductId = "" 
        Path = $HpcPackSourcePath 
        Arguments = $Arguments 
        Credential = (Get-Credential) 
    } 
    

    しかし、これは間違いでした。 docsから、資格情報のプロパティは次のように表示されます。

    リモートソース上のパッケージへのアクセスを提供します。このプロパティは、パッケージをインストールするために使用されない です。

    私は間違いを認めます。代わりにPsDscRunAsCredentialプロパティを使用して、指定された資格情報を使用してインストールを強制する必要がありました。まだインストーラがNT AUTHORITY \ SYSTEMの下で動作しない理由は分かりません。

  • 関連する問題