組み込みPowerShellスクリプト

最終更新日: 20 年 2023 月 XNUMX 日

Windowsコレクターでは、LogicMonitorはを使用した埋め込みスクリプトをサポートします PowerShellの。 通常はお勧めしますが Groovy スクリプトを必要とするほとんどのタスクでは、PowerShellは、経由でのみアクセスできるWindows固有のメトリックを監視する必要がある場合に有利です。 PowerShellコマンドレット。 一部の構成では、PowerShellを「リモート処理」に使用して、リモートシステムでコマンドを呼び出すこともできます。これは、一部の種類のメトリック収集に役立ちます。

組み込みのGroovyスクリプト機能とは異なり、PowerShellスクリプトは、基盤となるOSが提供するインタープリターによって実行されます。 基盤となる機能はWindowsのバージョンによって異なるため、PowerShellスクリプトの完全な移植性を保証するのは難しい場合があります。 幅広い互換性のために、拡張PowerShell機能セットを慎重に使用することをお勧めします。

組み込みPowerShellは、特に スクリプト化されたアクティブディスカバリー, スクリプト化されたデータ収集, スクリプト化されたイベントソース, 設定S私たちの.

PowerShellスクリプトでのデバイスプロパティの使用

Groovyとは異なり、PowerShellスクリプトにデバイスプロパティを渡すシームレスな方法はありません。 代わりに、次のようにコード化された埋め込みPowerShellスクリプトに任意のプロパティを置き換えることができます ## DEVICE.PROPERTY ##.

インスタンスプロパティは現在、PowerShellではサポートされていません。

例–データソースのアクティブディスカバリーにPowerShellを使用する

以下は、実行に使用されるPowerShellコードのサンプルです。 スクリプト化されたアクティブディスカバリー。 スクリプト化されたActiveDiscoveryの目標は、次の形式のインスタンスデータを返すことです。

instance_id##instance_name##instance_description

XNUMX行にXNUMXつのインスタンスをstdoutに出力します。 この例では、WindowsDHCPサーバーによって提供されるDHCPスコープを列挙します。

#WMIを実行する必要があるホスト名を取得します$ hostname = '## SYSTEM.HOSTNAME ##'; #すべてのdhcpスコープの配列を取得$ scopes_array =(Get-WmiObject `-Namespace ROOT \ Microsoft \ Windows \ DHCP` -ComputerName $ hostname -List |` Where {$ _。Name-eq'PS_DhcpServerv4Scope '})。Get( )| `Select-Object -ExpandProperty cmdletOutput; #スコープ配列を反復処理するforeach($ scopes_arrayの$ scope){#スコープ配列から興味深い情報を取得$ scope_id = $ scope.ScopeId; $ instance_name = $ scope.Name + ":" + $ scope.Description; $ instance_desc = "スコープID:" + $ scope_id; #インスタンスデータを書き出すWrite-Host "$ scope_id ## $ instance_name ## $ instance_desc"; }#正常に実行されたことを示す応答コードを返すExit 0;

例–データソースデータ収集にPowerShellを使用する

上記の例では、WindowsDHCPサーバーで使用可能なDHCPスコープを識別する方法を示しています。 次に、同じデバイスを使用して、各スコープのIPアドレスに関する追加データを取得します。

#WMIを実行する必要があるホスト名を取得します$ hostname = '## SYSTEM.HOSTNAME ##'; #すべてのdhcpスコープの配列を取得$ scopes_array =(Get-WmiObject `-Namespace ROOT \ Microsoft \ Windows \ DHCP` -ComputerName $ hostname -List |` Where {$ _。Name-eq'PS_DhcpServerv4Scope '})。Get( )| `Select-Object -ExpandProperty cmdletOutput; #スコープ配列を反復処理するforeach($ scopes_arrayの$ scope){#スコープ配列から興味深い情報を取得$ ScopeId = $ scope.ScopeId; $ AddressesFree = $ scope.AddressesFree; $ AddressesInUse = $ scope.AddressesInUse; $ PendingOffers = $ scope.PendingOffers; $ ReservedAddress = $ scope.ReservedAddress; #キーと値のペアをstdout Write-Host "AddressesFree = $ {AddressesFree}"に書き込みます。 書き込みホスト "AddressesInUse = $ {AddressesInUse}"; 書き込みホスト "PendingOffers = $ {PendingOffers}"; 書き込みホスト "ReservedAddress = $ {ReservedAddress}"; }#正常に実行されたことを示す応答コードを返すExit 0;

ここから、XNUMXつのデータポイントを作成し、Key-Valueポストプロセッサーを使用して、キー「AddressesFree」、「AddressesInUse」、「PendingOffers」、および「ReservedAddress」で関連データを抽出します。

についてのページをご覧ください PowerShellのヒントとコツ その他の例とサンプルコードについては。

記事上で