虽然这可能不是很难做到,但我遇到了一些困难。我真的很少有任何语言的编程经验,所以请善待。
我的目标是创建一个简单的(工作?)函数,它将为给定主机上的每个接口捕获 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 的东西,但没有取得多大成功。考虑到我几乎完全缺乏编程知识,我还没有找到一个不太复杂的教程。话虽如此,如果我能找到一些可以帮助我理解它的东西,我并不反对使用它。任何可能将我推向正确方向的提示或技巧将不胜感激。