これを行うのはそれほど難しいことではありませんが、ちょっとした壁にぶつかりました。私はどの言語でもプログラミング経験がほとんどないので、親切にしてください。
私の目的は、特定のホストの各インターフェイスの IP とサブネットのペアを取得する単純な (機能する?) 関数を作成することです。これ自体はケーキウォークであり、非常にうまく機能します。私が抱えている問題は、数十または数百の IP を持つ多くのホストがあることです。これを表示するのは現実的ではないか使用できないので、それを CSV ファイルにダンプして、PS からのデータを直接操作したり、必要なプログラムやエディターで CSV を開いたりできるようにすることにしました。
私の問題は、すべてを正しくリストすることができないことです。情報を取得してそれをまとめた後の私の論理には、かなり欠陥があるか、完全に間違っていると感じており、専門家の助けが必要です.
これは、動作しているように見えるコードの安定した部分です。
function Get-IPConfig
{
$op_file_location = $args[0]
$op_file = (Import-Csv -Header ID $op_file_location)
if (! $op_file_location) {Write-Host "Please try again in the following format: Get-IPConfig c:\full\file\path\here.csv"}
else {
Foreach ($op_file.ID in $op_file)
{
Try {
$SysConfig = @(gwmi -Class Win32_ComputerSystem -ComputerName $op_file.ID)
$NetConfig = @(gwmi -class Win32_NetworkAdapterConfiguration -ComputerName $op_file.ID -Filter "IPEnabled='TRUE'")
}
Catch [System.Exception] {
Write-Host $op_file.ID "is not responding correctly. It may be offline, or you may not have permission to access it."
}
$ResultsIP = $NetConfigItem.IPAddress
$ResultsSubnet = $NetConfigItem.IPSubnet
$Results = $ResultsIP + $ResultsSubnet
Foreach ($NetConfigItem in $NetConfig)
{
Write-Host "Target Description:" $op_file.ID
Write-Host "NIC Description:" $NetConfigItem.Description
Foreach ($IP in $ResultsIP){Write-Host $IP}
Foreach ($IPSub in $ResultsSubnet) {Write-Host $IPSub}
}
}}
}
すぐに耳にするであろう悪いコーディング慣行やその他の恐ろしいこと以外に、これらの配列を組み合わせて CSV にダンプする準備をするにはどうすればよいでしょうか? 私の問題は、この場合、データの書き込み方法ではなく、データの準備方法に関係していると思います。どちらもかなりの影響力があると思いますが。明確にするために、私は psObject のものを試しましたが、あまり成功しませんでした。プログラミングの知識がほぼ完全に不足していることを考えると、それほど複雑ではないチュートリアルをまだ見つけていません。そうは言っても、頭を包み込むのに役立つ何かを見つけることができれば、それを使用することに反対しているわけではありません. 私を正しい方向に導くヒントやヒントは、非常に高く評価されます。