スクリプト メタデータ

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>