私はPoShの経験がかなり浅いですが、noob回路で自分自身を保持できると思います. PowerShell を介して SQL テーブル内のサーバーのリストから直接接続ストレージ (DAS) を取得するメカニズムに取り組もうとしています。DAS を取得するコマンドは、DAS が接続されているサーバーからローカルで実行する必要があります。各サーバーには複数の DAS デバイスを接続できるため、サーバーごとに配列を作成し、その配列に各 DAS ユニットのオブジェクトを設定することにしました。私はプロセスを釘付けにし、各サーバーを反復処理し、各サーバーでコマンドをリモートで実行し、(リモート セッション内で) 必要なデータをキャプチャすることができますが、オブジェクトの配列を元に戻すのに問題があります。これにより、このデータをデータベース テーブルに書き込むことができます。呼び出しコマンド スクリプト ブロック内で配列を呼び出すと、すべて問題なく、必要なデータを取得できます。それは、後で呼び出そうとしたときだけです。データを書き込むためにこれらのサーバー (数百) のそれぞれで SQL セッションを確立する予定はないので、これを実行しているマシンから行うことをお勧めします。
このデータはデータベースに直接書き込まれるため、ファイルや csv などのエクスポート/インポートをいじるよりも、同じスクリプト内の PowerShell 内でネイティブに活用することもお勧めします。
PowerShell がネットワーク上でオブジェクトをシリアル化することは理解していますが、ローカル マシンに戻ると復元されると理解しています。私が達成しようとしていることは可能ですか、それとも単に頭がおかしくなっているだけですか?
関連するコードは次のとおりです。
$result = invoke-command -computer $FQDN -credential $mycred -ArgumentList $FQDN -scriptblock {
param($FQDN)
$DASArray = @()
$OMReport = get-wmiobject -class win32_product | where-object {$_.Name -like 'Dell OpenManage*'}
if (!$OMReport)
{
}
else
{
[xml]$DAS = omreport storage enclosure -fmt xml
$Nodelist = $DAS.SelectNodes("/OMA/Enclosures/DCStorageObject")
foreach ($Node in $Nodelist | where-object {($_.SelectSingleNode("EnclosureType").get_InnerXML()) -ne 1})
{
$DASValues = New-Object PSObject
$DASValues | Add-Member –MemberType NoteProperty –Name FQDN –Value $FQDN
$DASValues | Add-Member –MemberType NoteProperty –Name ID –Value $Node.selectsinglenode("ObjID").get_InnerXML()
$DASValues | Add-Member –MemberType NoteProperty –Name Model –Value $Node.selectsinglenode("AssetName").get_InnerXML()
$DASValues | Add-Member –MemberType NoteProperty –Name EnclosureType –Value $Node.selectsinglenode("EnclosureType").get_InnerXML()
$DASValues | Add-Member –MemberType NoteProperty –Name ServiceTag –Value $Node.selectsinglenode("ServiceTag").get_InnerXML()
$DASArray += $DASValues
}
}
}
$result
if (!$DASArray)
{
}
else
{
$DASArray
}
}
スクリプトブロック内から呼び出された場合の出力例:
FQDN : server1
ID : 16777237
Model : MD1200
EnclosureType : 7
ServiceTag : XXXXX1
PSComputerName : server1
RunspaceId : 999231e0-5be1-4b8b-8cf1-6462a9fccad3
PSShowComputerName : True
FQDN : server1
ID : 16777238
Model : MD1200
EnclosureType : 7
ServiceTag : XXXXX2
PSComputerName : server1
RunspaceId : 999231e0-5be1-4b8b-8cf1-6462a9fccad3
PSShowComputerName : True
FQDN : server1
ID : 16777239
Model : MD1200
EnclosureType : 7
ServiceTag : XXXXX3
PSComputerName : server1
RunspaceId : 999231e0-5be1-4b8b-8cf1-6462a9fccad3
PSShowComputerName : True
FQDN : server2
ID : 16777240
Model : MD1200
EnclosureType : 7
ServiceTag : XXXXXX4
PSComputerName : server2
RunspaceId : 999231e0-5be1-4b8b-8cf1-6462a9fccad3
PSShowComputerName : True
何かご意見は?