Metadati script

Al fine di poter utilizzare uno script in Security Controls, deve contenere metadati che lo identificano univocamente e ne descrivono funzionalità e parametri di immissione. Questa sezione descriverà come creare tali metadati.

Iniziamo con un semplice script da una riga che presenta un singolo parametro di input:

Get-Service $serviceName -ComputerName "$ST_ComputerName"

Lo script completo con i metadati richiesto da Security Controls viene mostrato in basso. Alcune delle informazioni sono opzionali e ciascun elemento verrà descritto in dettaglio più avanti.

<#

<stScript uid="d0d3c64c-19a3-4879-9396-ac8769d60c9c">

<name>Ottieni servizi</name>

<version>1.0.0.0</version>

<author>Società personale</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>Informazioni</category>

<purpose>Ottenere i servizi sul computer di destinazione</purpose>

<inputs>Carattere jolly del nome di servizio</inputs>

<outputs>Elenco dei servizi installati</outputs>

</description>

<parameters>

<parameter>

<name>Nome servizio</name>

<description> Servizio(i) caratteri jolly da interrogare </description>

<default>”*”</default>

</parameter>

</parameters>

</stScript>

#>

Get-Service $serviceName -ComputerName "$ST_ComputerName"

Blocco metadati

I metadati sono un frammento XML all'interno di un commento script.

I delimitatori del commento script sono "<#" e "#>". Per le nostre finalità, tali delimitatori devono trovarsi essi stessi sulle righe e iniziare nella colonna 1.

L'elemento radice del documento XML è “stScript”. Presenta un solo attributo, l'identificatore univoco dello script. Si tratta di un identificatore univoco globale (GUID). Un GUID viene specificato da 32 caratteri hex nel formato “xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”. Sono presenti molti strumenti standard per la generazione di GUID.

Gli elementi iniziali e terminali devono essere presenti su righe proprie, iniziando dalla colonna 1. Pertanto, tutti gli script utilizzati in Security Controls devono iniziare con queste due righe (sostituendo un GUID diverso per ciascuno script):

<#

<stScript uid="d0d3c64c-19a3-4879-9396-ac8769d60c9c">

e terminare con queste due righe:

</stScript>

#>

Gli altri elementi devono apparire nell'ordine descritto in basso.

nome

Questo elemento richiesto fornisce il nome dello script, così come appare all'interno di Security Controls. Il nome deve essere compreso tra 1 e 100 caratteri. Il nome può contenere spazi e caratteri speciali.

Esempio:

<name>Ottieni servizi</name>

versione

Questo elemento richiesto specifica la versione dello script. La versione viene specificata come quattro numeri interi separati da punti. Quando si modifica uno script, la versione più recente deve avere una versione superiore a qualsiasi versione precedente utilizzata.

Esempio:

<version>1.0.0.0</version>

autore

Questo elemento richiesto identifica l'autore dello script. In genere si utilizza il nome dell'autore o il nome dell'azienda. Questo campo deve essere compreso tra 1 e 256 caratteri e non deve essere vuoto.

Esempio:

<author>Società personale</author>

scriptType

Questo elemento opzionale specifica il tipo di esecuzione dello script. Presenta un attributo richiesto, "tipo", che deve contenere uno dei seguenti elementi:

  • type=“any” indica che lo script viene eseguito rispetto a uno o più computer di destinazione, ma non richiede l'uso di PowerShell in remoto. Si tratta del tipo di script più comune e rappresenta il valore predefinito se l'elemento scriptType non viene specificato.
  • type=”consoleOnly” indica che lo script non viene eseguito su un set di computer di destinazione. Questo tipo di script non può essere eseguito su un gruppo di computer o computer selezionati. Tale script apparirà negli script disponibili solo quando si seleziona Strumenti > Esegui ITScripts console dal menu Security Controls.
  • type=”remote” indica che lo script viene eseguito su uno o più gruppi di destinazione e richiede che PowerShell in remoto sia disponibile e configurato sui computer di destinazione.
  • type=”esxServer” indica che lo script viene eseguito su un server ESXi o un server vCenter. Gli script di questo tipo vengono eseguiti solo rispetto ai gruppi di computer che contengono server ESXi. Se il gruppo di computer contiene qualsiasi altro computer, questo verrà ignorato quando viene eseguito questo script.

Esempio:

<scriptType type="any" />

minEngineVersion

Questo elemento opzionale specifica la versione minima del motore ITScripts richiesta per l'esecuzione di questo script. Se non viene specificata, lo script deve essere scritto in modo da poter essere eseguito con qualsiasi versione del motore ITScripts.

Esempio:

<minEngineVersion>8.0.0.0</minEngineVersion>

modifiedTarget

Questo elemento opzionale indica se lo script effettua eventuali modifiche sui computer di destinazione. Se non viene specificato, il valore predefinito è “false”, a suggerire che lo script raccolga soltanto informazioni ma non modifichi i computer di destinazione. Ciò ha il solo scopo di documentazione. Il proprio valore non garantisce che lo script non modifichi i computer di destinazione.

Esempio:

<modifiesTarget>false</modifiesTarget>

opzioni

Questo elemento opzionale e i relativi quattro elementi secondari informano il motore ITScripts in merito a quali file di output standard debbano essere generati. Per impostazione predefinita, il motore genererà tali file di output standard:

  • runoutput.txt: un singolo file per l'intera esecuzione se viene generato un qualsiasi output di esecuzione
  • runerror.txt: un singolo file per l'intera esecuzione se sono stati rilevati errori
  • machineoutput.txt: un singolo file per ciascun computer di destinazione se viene generato un qualsiasi output computer
  • machineerror.txt: un singolo file per ciascun computer di destinazione se sono stati rilevati errori

Se si specifica quanto segue nei metadati, i file runoutput.txt e runerror.txt non verranno generati:

<option name="OutputRunResults" value="false" />

Se si specifica quanto segue nei metadati, i file machineoutput.txt e machineerror.txt non verranno generati:

<option name="OutputMachineResults" value="true" />

Se si desidera che tutti i file machineoutput.txt per tutti i computer vengano concatenati nel file runoutput.txt, e che tutti i file machineerror.txt vengano concatenati nel file runerror.txt, specificare questa opzione:

<option name="CombineOutputFiles" value="true" />

Se si sceglie di combinare l'output del singolo computer e i file di errore, è possibile scegliere di eliminare i singoli file specificando quanto segue:

<option name="DeleteMachineFiles" value="true" />

Esempio:

<options>

<option name="OutputMachineResults" value="true" />

<option name="OutputRunResults" value="true" />

<option name="CombineOutputFiles" value="false" />

<option name="DeleteMachineFiles" value="false" />

</options>

contemporaneità

Questo elemento opzionale specifica il livello di concorrenza massimo predefinito da utilizzare quando viene eseguito uno script rispetto a una serie di computer di destinazione. È possibile escludere questo aspetto in Security Controls creando un modello ITScripts e specificando un valore di concorrenza diverso. Se non specificato, il valore massimo predefinito di concorrenza è impostato a 32.

Esempio:

<concurrency default="16" />

descrizione

L'elemento “descrizione” e i quattro relativi elementi secondari sono tutti obbligatori. Le informazioni inserite qui verranno visualizzate all'interno di Security Controls.

categoria

L'elemento "categoria" richiesto è un figlio dell'elemento di descrizione. La categoria aiuta a organizzare i propri script. La categoria deve essere compresa tra 1 e 50 caratteri. Le categorie standard possono includere: “Configurazione”, “Criterio di gruppo”, “Informazioni”, “Manutenzione”, “Monitoraggio” e “Supporto”.

finalità

L'elemento "finalità" richiesto è un figlio dell'elemento di descrizione. Deve contenere tra 1 e 1024 caratteri. Deve contenere una descrizione concisa e accurata di quello per cui viene utilizzato lo script.

input

L'elemento "input" richiesto è un figlio dell'elemento di descrizione. Deve contenere tra 1 e 1024 caratteri. Questo elemento dovrebbe descrivere accuratamente i parametri di input richiesti dallo script. Se non sono presenti parametri di input, specificare “Nessuno”.

output

L'elemento "output" richiesto è un figlio dell'elemento di descrizione. Deve contenere tra 1 e 1024 caratteri. Questo elemento dovrebbe descrivere accuratamente l'output generato dallo script.

Esempio:

<description>

<category>Informazioni</category>

<purpose>Ottenere i servizi sul computer di destinazione</purpose>

<inputs>Carattere jolly del nome di servizio</inputs>

<outputs>Elenco dei servizi installati</outputs>

</description>

parametri

L'elemento “parametri” deve essere specificato se lo script richiede parametri di input. Deve essere presente un singolo elemento figlio “parametro” per ciascun parametro di input. Ciascun elemento "parametro" deve avere tre elementi figlio:

  • nome: il nome parametro input senza ‘$’ iniziale. Il nome deve essere il nome variabile PowerShell valido utilizzato nello script.
  • descrizione: la descrizione apparirà in Security Controls.
  • predefinito: questo elemento specifica il valore del parametro predefinito che verrà utilizzato per il parametro, a meno che l'utente non specifichi un valore alternativo in un modello o quando si avvia o si pianifica l'esecuzione dello script. Se il valore predefinito è una stringa, racchiuderla tra apostrofi o virgolette. Gli apostrofi consentono alla stringa di contenere caratteri che hanno un significato speciale in PowerShell, come i simboli $ e le virgolette. Per integrare tali caratteri all'interno di virgolette, farli precedere dal carattere (`).

Esempio:

<parameters>

<parameter>

<name>Nome servizio</name>

<description> Servizio(i) caratteri jolly da individuare</description>

<default>”*”</default>

</parameter>

</parameters>