UAM: Shell Apps 技術リファレンスガイド
注:
実行コンテキスト: すべてのスクリプトはローカルシステムアカウントとして実行されます。
検出スクリプト
検出スクリプトは、必要なアクションと実際のインストール状態に応じて1回から2回実行されます。次のいずれかの結果で終了します:
戻り値の型
$true: アプリはインストールされています(シングルバージョンモードのみ)。
$false: アプリはインストールされていません(シングルバージョンモードのみ)。
string: 検出されたバージョン名。
$null: アプリはインストールされていません。
インストールスクリプト
これは、ターゲットアクションがインストールであり、検出スクリプトが $false、$null、またはターゲットでないバージョン名を返した場合にのみ実行されます。追加情報については、フローの例を参照してください。
戻り値の型:
void: インストールが正常に完了しました。最終的なコンプライアンス状態は、検出スクリプトの2回目の実行によって再評価されます。
バージョン管理ノート:
インストールスクリプトは、必要に応じてアップグレードするまたはダウングレードとして動作するように実装される場合があります。これを達成するために、Nerdio Managerは$Context.TargetVersionおよび$Context.DetectedVersion変数を提供します。$Contextオブジェクトの仕様を参照してください。追加情報について。
インストールスクリプトは、すべてのバージョンに独自のインストールのオーバーライドが設定されている場合、空のままにすることができます。
アンインストールスクリプト
これは、ターゲットアクションがアンインストールであり、検出スクリプトが$trueまたは文字列バージョン名を返す場合にのみ実行されます。追加情報については、フローの例を参照してください。
戻り値の型
void: アンインストールが正常に完了しました。最終的なコンプライアンス状態は、検出スクリプトの2回目の実行によって再評価されます。
$Contextオブジェクトの仕様
これは、すべてのスクリプトに対して、Nerdio Managerが管理・注入するグローバル変数です。
Log(message: string | string[]): 後でポリシーの詳細ページで利用可能な任意のメッセージをログに記録するための関数です。例えば、$Context.Log('Hello world')。
GetAttachedBinary(version: string | null): 添付ファイルをダウンロードし、一時フォルダー内の絶対パスを返します。詳細については、ファイル添付を参照してください。
TargetVersion: string | null: 展開ポリシーのインストール操作で設定されたバージョン名、アンインストール操作の場合はnullです。[Nerdio Manager v6.6+]
DetectedVersion: string | null: 検出スクリプトによって返されたバージョン名、他の戻り値のタイプの場合はnullです。[Nerdio Manager v6.6+]
Versions: ShellAppVersion[]: All shell app version definitions.[Nerdio Manager v6.6+]
プロパティ
Name: string: バージョン名。
ファイル添付
任意のシェルアプリのバージョンには任意のバイナリデータが添付される可能性があり、任意のスクリプトは$Context.GetAttachedBinary() を使ってこのバイナリデータを取得できます。
この関数を呼び出すと、次のことが行われます:
ファイルがまだダウンロードされていない場合は、ファイルをダウンロードします。
ダウンロードしたファイルを内部ストレージにキャッシュします。
ファイルを一時フォルダーにコピーします。
一時フォルダー内のファイルの絶対パスを返します。
この関数は、特定のバージョンに添付されたファイルを提供するためのオプションのバージョン名パラメーターを受け取ります。Nerdio Managerは、コンテキストに基づいて最も適切なファイルを見つけようとします。考えられる結果は4つです:
シェルアプリに単一のバージョンがある場合、そのファイルを選択します。
アクションがインストールの場合、ターゲットバージョンのファイルを選択します。
Detectスクリプトが適切なバージョン名を返した場合、そのファイルを選択します。
エラーが発生します。
マルチバージョンモードの重要なポイント
Detectスクリプトは、ホスト上で検出された場合は適切なバージョン名を返す必要があり、検出されない場合はnullを返します。これは、アプリが存在するかどうかを示す単純な真/偽のブール値を許可する単一バージョンモードとは異なります。
Detectスクリプトの返された結果は、アプリがインストールされているかどうかの最終的な真実の源です。そして、それはインストール/アンインストールのすべてのフォローアップ実行のドライバーです。
Nerdio Managerは、アプリ検出に関してホスト上の内部状態を追跡したり、仮定を立てたりすることはありません。
顧客は、現在インストールされているシェルアプリのバージョンを追跡するために必要なロジックを自由に記述できます(例:レジストリキー、ファイルなど)。
統合カタログページでの可用性
統一カタログにおけるシェルアプリの可用性は、対応するシェルアプリ管理の一般ステップにある公開チェックボックスによって制御されます。
バージョン設定UI
ここでは、各シェルアプリ管理のバージョンウィザードステップで見られるバージョン管理UIの詳細をいくつか示します。
名前: x.x.x.x形式で保存されているバージョン名です。これは、関連するインストールポリシーに対して正の値を返すために、検出スクリプトから返されるバージョンと同一でなければなりません。
-
解凍(無効): このオプションは新しいシェルアプリにはお勧めしません。なぜなら、このオプションは単一バージョンモードでのみサポートされており、将来的にはその動作が変更される可能性があるからです。
注意: このオプションは、SCCM PowerShell アプリケーションのインポートサポートのために特に導入されました。選択した場合、zipファイルは一時フォルダーに抽出され、コンテキストがそのフォルダーに設定されます。したがって、アーカイブ内のファイルを直接使用できます。同じ動作は、次のチェーンを使用することで達成できます: $Context.GetAttachedBinary() -> Expand-Archive -> Set-Location。
ファイル :現在のバージョンに特定のファイルを添付し、インストールスクリプトから$Context.GetAttachedBinary()を介して呼び出すことができます。
インストールをオーバーライド: これは、現在のバージョンをインストールする際にグローバル インストールスクリプトをオーバーライドする機能を提供します。これは、一部の単純なバージョン管理シナリオに便利かもしれません。
パラメータ化
Nerdio Manager v6.1から、任意のスクリプトは、設定 > Nerdio 環境 > セキュア変数タイルに設定されたセキュア変数の値を安全に注入してパラメータ化できます。詳細については、「Scripted Actions グローバル Secure Variables」を参照してください。
この機能を利用するには、スクリプトの先頭に次の定型コードを挿入し、変数の値をスクリプトパラメータとして動的に注入してください。
[CmdletBinding()]
param (
[Parameter(Mandatory)]
[string] $SecureVar_MyCustomVar1,
[Parameter(Mandatory)]
[string] $SecureVar_MyCustomVar2
)
注:
セキュア変数はIntuneデバイスではサポートされていないため、展開エラーが発生します。
パラメータ名はSecureVar_で始める必要があります。残りの名前は既存のセキュア変数にマッピングする必要があります(大文字と小文字を区別します)。例えば: セキュア変数がAdminPasswordの場合、スクリプトパラメータはSecureVar_AdminPasswordとして定義する必要があります。
セキュア変数は、管理者によってシェルアプリのスクリプトパラメータでの使用が明示的に許可される必要があります。セキュア変数の設定でシェルアプリ内での使用を許可するオプションを選択してください。
Nerdio Managerは、適切なパラメータ設定を確保するためにスクリプトを常に解析します。現在のスクリプトの正常性は、各スクリプトコンテンツエディターの下にある折りたたみ可能なスクリプトステータスセクションで確認できます。
フローの例
標準のシングルバージョンインストールの場合、検出スクリプトが最初に実行され、インストールが必要かどうかを判断します。検出ルールがfalseを返す場合(アプリが存在しないことを意味します)、インストールスクリプトが実行されます。その後、検出ルールが再度実行されます。再度falseを返す場合、インストールは失敗として報告されます。trueを返す場合は、成功として報告されます。
構成されたバージョン |
構成されたアクション |
検出#1が返した値 |
実行されたスクリプト |
検出#2が返した値 |
最終ステータス |
|---|---|---|---|---|---|
1.0 |
インストール |
$false |
インストール |
$true |
成功 |
1.0 |
インストール |
$false |
インストール |
$false |
失敗 |
1.0 |
インストール |
$true |
- |
|
成功 |
1.0 |
アンインストール |
$true |
アンインストール |
$false |
成功 |
1.0 |
アンインストール |
$true |
アンインストール |
$true |
失敗 |
1.0 |
アンインストール |
$false |
- |
|
成功 |
マルチバージョンインストールの場合、検出スクリプトが最初に実行され、インストールが必要かどうかを判断します。バージョン検出ルールが定義されたターゲットバージョンと一致しない値を返す場合、インストールスクリプトが実行されます。その後、検出ルールが再度実行されます。それでも定義されたターゲットバージョンを返さない場合、インストールは失敗として報告されます。定義されたターゲットバージョンを返す場合は、成功として報告されます。
構成されたバージョン |
構成されたアクション |
検出#1が返した値 |
実行されたスクリプト |
検出#2が返した値 |
最終ステータス |
|---|---|---|---|---|---|
220 |
インストール |
$null |
インストール |
1.0 |
成功 |
220 |
インストール |
$null |
インストール |
$null |
失敗 |
220 |
インストール |
1234.0 |
- |
- |
失敗 |
220 |
インストール |
1.0 |
- |
- |
失敗 |
220 |
インストール |
1.0 |
インストール |
2.0 |
成功 |
220 |
インストール |
2.0 |
インストール |
1.0 |
成功 |
220 |
アンインストール |
1.0 |
アンインストール |
$null |
成功 |
220 |
アンインストール |
1.0 |
アンインストール |
1.0 |
失敗 |
220 |
アンインストール |
1234.0 |
- |
- |
失敗 |
トラブルシューティング
発生したエラーのスタックトレースは、展開ポリシーの詳細ページで確認できます。さらに、特定のホストのホストアプリケーション管理タスクでアプリ管理ログをリクエストボタンを選択することで、すべての展開ログを抽出できます。
コメント (0件のコメント)