2

powershell で cleartool コマンドを使用しようとしています。

コマンドが失敗した場合、例外をキャッチしてアクションを実行する必要があります。しかし、catch {} でキャッチされませんでした

try { 
       #If $viewname not exist it will throw error
       cleartool lsview $ViewName
    }
catch {

    # If list view fails , it means View doesn't exist. So create view
    Write-host "Create view"
    cleartool mkview -tag $ViewName -nsh $ccViews$ViewName".vws"

}

try のコマンドが失敗すると、catch の式は呼び出されません。

catch コマンドは .net 関連以外のものでは機能しないのでしょうか?

4

2 に答える 2

2

cleartool は外部の exe ファイルであるため、PowerShell 環境では例外がスローされません。

IBM のドキュメントによると、インタラクティブ モードで quit コマンドを入力して cleartool を終了すると、終了ステータスは 0 になります。終了ステータス)。

$LASTEXITCODEPowerShell では、 varを使用してこのゼロ以外の終了ステータスを取得できます。@VonCが説明している$?ように、単一コマンドが機能するかどうかを確認して$LASTEXITCODEから、特定のエラーを取得するために使用できます。

于 2012-02-16T10:09:52.727 に答える
2

cleartool の powershell スクリプトで使用される例外メカニズムを見たことがありません。
(私が見たカップルは、「cleartool を使用して各コンポーネントのルート [フォルダー] を見つける方法」と「パイプラインを使用して推奨ベースラインを記述する方法」にありました)。

この古いスレッド (2006 年、つまり Powershell の最初のバージョン)は、以下を使用したエラー管理メカニズムを示しています$?

cleartool lsco -cview -s . |
foreach {
  cleartool diff -pred -opt -sta "$_"
  if ($?) {
    cleartool unco -rm "$_"
  } else {
    cleartool ci -nc "$_"
  }
}

このメカニズムを使用するには、cleartool 呼び出しを Invoke-Command にカプセル化し、「<code>invoke-command を使用してコマンドの戻りコードをキャッチする」で説明されているように、ラッパー関数からステータス コードを返すことが必要な場合があります - Powershell 2」。

または、cleartool を直接呼び出す代わりに、このスクリプトのように CAL コマンドを呼び出してみることもできます。

于 2012-02-16T08:53:45.253 に答える