スクリプト メタデータ
Security Controls でスクリプトを使用するには、スクリプトを一意に識別し、機能と入力パラメータを記述するメタデータを含める必要があります。このセクションでは、メタデータを作成する方法について説明します。
入力パラメータが1つで、簡単な1行のスクリプトから始めます。
Get-Service $serviceName -ComputerName "$ST_ComputerName"
Security Controls で必要なメタデータとスクリプトは次のとおりです。一部の情報は任意です。各要素は後で詳細に説明します。
<#
<stScript uid="d0d3c64c-19a3-4879-9396-ac8769d60c9c">
<name>GetServices</name>
<version>1.0.0.0</version>
<author>My Company</author>
<scriptType type="any" />
<minEngineVersion>8.0.0.0</minEngineVersion>
<modifiesTarget>false</modifiesTarget>
<options>
<option name="OutputMachineResults" value="true" />
<option name="OutputRunResults" value="true" />
<option name="CombineOutputFiles" value="false" />
<option name="DeleteMachineFiles" value="false" />
</options>
<concurrency default="16" />
<description>
<category>情報</category>
<purpose>ターゲット コンピュータでサービスを取得する</purpose>
<inputs>サービス名のワイルドカード</inputs>
<outputs>インストールされているサービスのリスト</outputs>
</description>
<parameters>
<parameter>
<name>serviceName</name>
<description> クエリのワイルドカード サービス </description>
<default>”*”</default>
</parameter>
</parameters>
</stScript>
#>
Get-Service $serviceName -ComputerName "$ST_ComputerName"
メタデータ ブロック
メタデータは、スクリプト コメント内の XML フラグメントです。
スクリプトのコメントは、<#” and “#> で囲みます。 本書では、これらの区切り文字をそれぞれ1行にし、列1から始めます。
XML 文書のルート要素は「stScript」です。 スクリプトの一意の識別子である属性が1つあります。 これはグローバル一意識別子 (GUID) です。 GUID は「xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx」という形式の32文字の16進数で指定されます。 多くの標準ツールで GUID を生成できます。
先頭の要素と末尾の要素はそれぞれ1行にして、列1から開始する必要があります。 このため、Security Controls で使用されるすべてのスクリプトの先頭は次の2行でなければなりません (各スクリプトで別の GUID に置換)。
<#
<stScript uid="d0d3c64c-19a3-4879-9396-ac8769d60c9c">
最後は次の2行になります。
</stScript>
#>
他の要素は次の順番で表示されます。
name
この必須の要素は、Security Controls 内に表示されるスクリプトの名前を指定します。 名前は1~100文字でなければなりません。 名前には、スペースと特殊文字を使用できます。
例:
<name>GetServices</name>
version
この必須の要素は、スクリプトのバージョンを指定します。 このバージョンは、ピリオドで区切られた4桁の数字として指定されます。 スクリプトを修正するときには、新しいバージョンが、使用していた前のバージョンよりも大きい数字でなければなりません。
例:
<version>1.0.0.0</version>
author
この必須の要素は、スクリプトの作成者を示します。 一般的に、作成者の名前または会社名が使用されます。 このフィールドは1~256文字で、空白にすることはできません。
例:
<author>My Company</author>
scriptType
この任意の要素は、スクリプト実行の種類を指定します。属性「type」は必須です。 これには次のいずれかを含める必要があります。
- type=“any” は、1つ以上のターゲット コンピュータに対してスクリプトが実行され、PowerShell remoting が必要ないことを示します。 これは最も一般的なスクリプト タイプであり、scriptType 要素が指定されていない場合の既定値です。
- type=”consoleOnly” は、スクリプトがターゲット コンピュータのセットに対して実行されないことを示します。 この種類のスクリプトは、コンピュータ グループまたは選択したコンピュータに対して実行できません。 このようなスクリプトは、Security Controls メニューで [ツール] > [コンソール ITScripts の実行] を選択したときにのみ、使用可能なスクリプトに表示されます。
- type=”remote” は、1つ以上のターゲット コンピュータに対してスクリプトが実行され、ターゲット コンピュータで PowerShell remoting が使用可能で構成されている必要があることを示します。
- type=”esxServer” はスクリプトが ESXi Server または vCenter Server に対して実行されることを示します。 このタイプのスクリプトは、ESXi Server を含むコンピュータ グループに対してだけ実行されます。 コンピュータ グループのその他のコンピュータが含まれる場合、このスクリプトが実行されるときに無視されます。
例:
<scriptType type="any" />
minEngineVersion
この任意の要素は、このスクリプトを実行するために必要な最低 ITScripts エンジン バージョンを指定します。 指定しない場合、スクリプトは任意のバージョンの ITScripts エンジンで実行するように作成されます。
例:
<minEngineVersion>8.0.0.0</minEngineVersion>
modifiedTarget
この任意の要素は、スクリプトがターゲット コンピュータを修正するかどうかを示します。指定しない場合は、既定値の「false」となります。 これは、スクリプトは情報を収集するだけで、ターゲット コンピュータを修正しないことを示します。 これは文書専用です。 値は、スクリプトがターゲット コンピュータを修正しないことを保証しません。
例:
<modifiesTarget>false</modifiesTarget>
options
この任意の要素と4つの下位要素は、標準出力ファイルを生成するように ITScripts エンジンに指示します。 既定では、次の標準出力ファイルがエンジンによって生成されます。
- runoutput.txt: 実行出力が生成された場合は、実行全体で1つのファイル
- runerror.txt: エラーが検出された場合は、全体の実行で1つのファイル
- machineoutput.txt: コンピュータ出力が生成される場合は、各ターゲット コンピュータに1つのファイル
- machineerror.txt: エラーが検出された場合は、各ターゲット コンピュータで1つのファイル
メタデータで次の項目を指定する場合は、runoutput.txt ファイルも runerror.txt ファイルも生成されません。
<option name="OutputRunResults" value="false" />
メタデータで次の項目を指定する場合は、machineoutput.txt ファイルも machineerror.txt ファイルも生成されません。
<option name="OutputMachineResults" value="true" />
すべてのコンピュータの machineoutput.txt ファイルを runoutput.txt ファイルに連結し、すべての machineerror.txt ファイルを runerror.txt に連結する場合は、次のオプションを指定します。
<option name="CombineOutputFiles" value="true" />
個別のコンピュータ出力ファイルとエラー ファイルを結合する場合は、次の項目を指定することで、個別のファイルを削除できます。
<option name="DeleteMachineFiles" value="true" />
例:
<options>
<option name="OutputMachineResults" value="true" />
<option name="OutputRunResults" value="true" />
<option name="CombineOutputFiles" value="false" />
<option name="DeleteMachineFiles" value="false" />
</options>
concurrency
この任意の要素は、複数のターゲット コンピュータに対してスクリプトが実行されるときに使用する、既定の最大同時レベルを指定します。 Security Controls でこれを無効にするには、ITScripts テンプレートを作成し、別の同時値を指定します。指定しない場合、既定の最大同時接続数が32に設定されます。
例:
<concurrency default="16" />
description
「description」要素と4つの下位要素はすべて必須です。 入力した情報は、Security Controls に表示されます。
category
必須の「category」要素は、説明要素の子です。 カテゴリはスクリプトを整理するために役立ちます。 カテゴリは1~50文字でなければなりません。 標準カテゴリ: 構成、グループ ポリシー、情報、メンテナンス、監視、サポート。
purpose
必須の「purpose」要素は、説明要素の子です。 1~1024文字でなければなりません。 スクリプトの使用目的を簡潔かつ正確に示してください。
inputs
必須の「inputs」要素は、説明要素の子です。 1~1024文字でなければなりません。 スクリプトで必要な入力パラメータを正確に記述してください。 入力パラメータがない場合は、「None」を指定します。
outputs
必須の「outputs」要素は、説明要素の子です。 1~1024文字でなければなりません。 スクリプトで生成された出力を正確に記述してください。
例:
<description>
<category>情報</category>
<purpose>ターゲット コンピュータでサービスを取得する</purpose>
<inputs>サービス名のワイルドカード</inputs>
<outputs>インストールされているサービスのリスト</outputs>
</description>
parameters
スクリプトで入力パラメータが必要な場合は、「parameters」要素を指定する必要があります。 各入力パラメータには、1つの「parameter」子パラメータが必要です。 各「parameter」要素には3つの子要素が必要です。
- name: 先頭に「$」を付けない、入力パラメータ名。 名前はスクリプトで使用される有効な PowerShell 変数名でなければなりません。
- description: この説明は Security Controls に表示されます。
- 既定: この要素は、ユーザがテンプレートで代替値を指定しない場合、あるいはスクリプト実行を開始またはスケジュールするときに、パラメータで使用される既定のパラメータ値を指定します。 既定値が文字列の場合は、アポストロフィまたは引用符で囲みます。 アポストロフィを使用すると、$ や引用符などの PowerShell で特殊な意味を持つ文字を文字列に含めることができます。 このような文字を引用符で囲むには、チック文字 (`) を前に入れます。
例:
<parameters>
<parameter>
<name>serviceName</name>
<description>検索するワイルドカード サービス</description>
<default>”*”</default>
</parameter>
</parameters>