0

この結果のように..

システム情報 >> RESULTS.TXT

システム情報 | 「ネットワークカード」を見つける

ただし、これは最初の行エントリのみをキャプチャします。

Network Card(s):           2 NIC(s) Installed.

私が本当に見たいのは:

Network Card(s):           2 NIC(s) Installed.
                           [01]: VMware Accelerated AMD PCNet Adapter
                                 Connection Name: Production
                                 DHCP Enabled:    No
                                 IP address(es)
                                 [01]: 1.1.1.1
                           [02]: VMware Accelerated AMD PCNet Adapter
                                 Connection Name: Backup
                                 DHCP Enabled:    No
                                 IP address(es)
                                 [01]: 2.2.2.2

systeminfo 全体を実行する必要はありません。ネットワーク カードに関する詳細を取得できますか。

また、PowerShell を介してこれをプッシュしようとしました..

& systeminfo.exe | & FIND.exe "Network Card"

そして、どちらも機能していません.. :(

4

4 に答える 4

2

私の場合のようにNetwork Card(s):、の出力で常に最後に表示される場合はsysteminfo、次の方法でうまくいくはずです。

@echo off
set s=
for /f "delims=" %%a in ('systeminfo') do (
    if defined s echo %%a
    for /f %%b in ("%%a") do if "%%b"=="Network" echo %%a & set s=1
)

s到達した時点でスイッチとして設定し、Network Card(s)そこからすべてを出力します。

セクションNetwork Card(s)最後に出てこず、ネットワーク カード情報を取得するためのより明確な方法が必要であり、かつ CSV 形式の出力に問題がない場合は、これも機能するはずです (複雑すぎる可能性がありますが)。

@echo off
setLocal enableDelayedExpansion
set c=0
for /f "delims=" %%a in ('systeminfo /FO CSV') do (
    set line=%%a
    set line=!line:,= !
    if "!c!"=="0" for %%b in (!line!) do (
        set /a c+=1
        if "%%~b"=="Network Card(s)" echo %%~b
    ) else for %%c in (!line!) do (
        set /a c-=1
        if "!c!"=="0" echo %%~c
    )
)
于 2014-03-27T22:18:32.163 に答える
1

さて、PowerShell から離れようとしているコメントの 1 つを読んだばかりですが、それが機能し、例に含まれるすべての情報がダンプされるので、とにかく投稿することにしました... :)

function Get-NetworkCards {
[cmdletbinding()]
param(
    [parameter(Mandatory=$false)][string]$ComputerName = "LocalHost"
)
    $adapterCfg = ( gwmi -Class Win32_NetworkAdapterConfiguration -ComputerName $ComputerName | Sort-Object Index )

    $adapter = ( gwmi -Class Win32_NetworkAdapter -ComputerName $ComputerName | Sort-Object Index )

    foreach ( $nic in $adapterCfg ) {
        if( $nic.IPEnabled -eq $true ) {
            foreach ( $settings in $adapter ) {
                if( $settings.DeviceID -eq $nic.Index ) {
                    $curr = $settings
                }
            }
            $props = [ordered]@{
                Description = $nic.Description;
                Connection = $curr.NetConnectionID;
                DHCPEnabled = $nic.DHCPEnabled;
                IPAddresses = $nic.IPAddress;
            }

            $Obj = New-Object PSObject -Property $props

            $Obj
        }
    }
}

get-networkcards
于 2014-03-27T22:59:07.123 に答える
0

PowerShell でのテキスト抽出による Systeminfo:

$sys = systeminfo
$start = ($sys | select-string "network card" -SimpleMatch).LineNumber
$sys[($start-1)..($sys.Length-1)] | Out-File RESULTS.TXT

個人的には、WMI ベースのソリューションを使用してネットワーク情報を取得していたでしょう。

于 2014-03-27T22:26:05.990 に答える
0

PowerShell でやりたいこと - http://blogs.technet.com/b/heyscriptingguy/archive/2008/09/08/how-do-i-find-information-about-the-network-adapter-cards -on-my-computer.aspx

彼らのスクリプトを引用する:

Param($computer = "localhost")
function funline ($strIN)
{
 $num = $strIN.length
 for($i=1 ; $i -le $num ; $i++)
  { $funline = $funline + "=" }
    Write-Host -ForegroundColor yellow $strIN 
    Write-Host -ForegroundColor darkYellow $funline
} #end funline

Write-Host -ForegroundColor cyan "Network adapter settings on $computer"
Get-WmiObject -Class win32_NetworkAdapterSetting `
-computername $computer |
Foreach-object `
 {
  If( ([wmi]$_.element).netconnectionstatus -eq 2)
    {
     funline("Adapter: $($_.setting)")
     [wmi]$_.setting
     [wmi]$_.element
    } #end if
 } #end foreach
于 2014-03-27T22:20:14.893 に答える