2017-09-13 4 views
0

質問) 移動する前にコードが完了するまで待つDSCスクリプトリソースを取得するにはどうすればよいですか? はDSCスクリプトリソース - .exeを実行しますが、完了するまで待たないでください

詳細) 私はPowerShellのバージョン5 を使用していますし、私たちのSQL Serverのインストールを処理するために、DSCの設定を取得しようとしています(コードが起動し、表現を「パスの\ FILE.EXE」です)。 私のマネージャーは、すぐに使えるDSCコンポーネントを使用するように私に依頼しました。 、つまりカスタムモジュールのダウンロードが必要な場合があります。 基本サーバーのビルドを処理する設定ファイルをビルドしました。すべてが有効です。 SQL Serverをインストールするスクリプトリソースが良好です。 実行する前に実行し、完全にインストールされるまで待ちます。 SQL Serverの累積的な更新プログラムをインストールするスクリプトリソースを取得するとき、私は問題があります。 実行ファイルが呼び出され、インストールが開始されます(10〜15分かかります)が、dsc設定はインストールされるまで待機せず、1秒後に移動します。 これは、インストールが完了する前に、今後の手順のためのDependsOnが呼び出されることを意味します。 スクリプトリソースは、終了するまで待機させることができますか?

答えて

1

キーワード「DependsOn」を試したことがありますか?

Script MyNewSvc 
{ 
    GetScript = { 
     $SvcName = 'MyNewSvc' 

     $Results = @{} 
     $Results['svc'] = Get-Service $SvcName 

     $Results 
    } 
    SetScript = { 
     $SvcName = 'MyNewSvc' 

     setup.exe /param 
     while((Get-Service $SvcName).Status -ne "Running"){ Start-Sleep 10 } 
    } 
    TestScript = { 
     $SvcName = 'MyNewSvc' 
     $SvcLog = 'c:\svc.log' 

     If (condition) { #like a a running svc or a log file 
      $True 
     } 
     Else { 
      $False 
     } 

    } 
} 


WindowsFeature Feature 
{ 
    Name = "Web-Server" 
    Ensure = "Present" 
    DependsOn = "[Script]MyNewSvc" 
} 
+0

おかげで、私が試していたそうで決まります。この投稿から、私は問題の原因を突き止めました。 SQLパッチングを実行する累積的な更新ファイルは、(解凍と同様の)解凍ウィンドウを生成し、必要なファイルの展開を開始し、フォーカスがpowershellに返され、powershellはタスクが完了して移動を続けると考えます。回避策として、すべてのSQLパッチファイルを手動で解凍して、セットアッププログラムを直接呼び出しました。それはより多くのスペースを占めるが、それは私の問題を過ぎてしまった。 –

0

起動-発現はプロセスが完了するまで待機していないようだ - ジェネリックPowerShellコンソールでこれを試してみて、あなたはあなたの前にメモ帳を閉じ、コマンドリターンが表示されます:

Invoke-Expression -Command "notepad.exe"; 

あなたを

Start-Process -FilePath "notepad.exe" -Wait -NoNewWindow; 

そして、あなたは終了コードを確認したい場合は、これを行うことができます:代わりに、[スタート] - プロセスを使用することができます

を210
$process = Start-Process -FilePath "notepad.exe" -Wait -NoNewWindow -PassThru; 
$exitcode = $process.ExitCode; 
if($exitcode -ne 0) 
{ 
    # handle errors here 
} 

最後に、コマンドライン引数を使用する:このため

$process = Start-Process -FilePath "setup.exe" -ArgumentList @("/param1", "/param2") -Wait -PassThru; 
$exitcode = $process.ExitCode; 
+0

このmclaytonをありがとう、私はそれを試し、私の問題を回避するかどうかを確認します。私はその問題が何かを知りました。 SQLパッチングを実行する累積的な更新ファイルは、(解凍と同様の)解凍ウィンドウを生成し、必要なファイルの展開を開始し、フォーカスがpowershellに返され、powershellはタスクが完了し続けていると考えます。回避策として、ファイルを手動で解凍したので、今すぐ動作します。しかし、私はこれを動作させることができれば、はるかにきれいになるでしょう。 –

関連する問題