2

サーバーのビルド コンプライアンス テストとして機能する powershell スクリプトを作成しています。私がしなければならないことの 1 つは、IPv6 ネットワークが無効になっているかどうかを検出することです。

WMI は、この情報が Win32_NetworkAdapterConfiguration の IPAddress プロパティで見つかるが、IPv6 または IPv4 の両方である可能性があることを示します。これは、私が見つけたいと思っている「はい/いいえ」の答えを私に与えません。

その他の注意点は、レジストリに直接アクセスして詳細をスクレイピングしたり、ipconfig などのコマンドの出力からスクレイピングしたりしたくないということです。

私たちの環境には 2003/2008 のマシンが混在しているため、IPv6 をテストする方法を思いつく人はいますか?

乾杯

4

7 に答える 7

7

.NET の方法を使用できます。

Write-Host 'OS Supports IPv6: ' $( [System.Net.Sockets.Socket]::OSSupportsIPv6 )

IPv6 データグラム ソケットを作成できる場合、このプロパティは true になります。このプロパティは、グローバル machine.config ファイルの影響も受けるため、IPv6 の状態は常に正確であるとは限りません。

編集: これをリモート マシンでテストするには、引き続き powershell を使用できますが、powershell 2.0 をインストールし、WinRM を有効にする必要があります。

これら 2 つの条件が true の場合、おそらくInvoke-Commandを使用してそれを行うことができます。

于 2010-01-18T02:44:52.277 に答える
4

通常、IPv6 のテストは、お使いの XP での yes/no の回答よりも複雑になります。

  1. Microsoft TCP/IP バージョン 6」ネットワーク コンポーネントがインストールされていますか。
  2. アダプターにIPv6アドレスがありますか-通常、(1)は(2)を意味すると想定します。
  3. アダプタがグローバル スコープの IPv6 を持っているかどうか。つまり、リンク ローカルの fe80:: プレフィックス付きアドレスまたはループバック インターフェイス、::1 だけではないかどうか。

おそらく (1) は、Microsoft が示すように、Powershell スクリプトで見つけることができます。

http://gallery.technet.microsoft.com/ScriptCenter/en-us/c4eb1596-7ac9-4be7-a711-b43446a3e3df

于 2010-02-08T09:51:26.700 に答える
4

実際、同僚が良い方法を思いついた - 少しぎこちないがうまくいく。:)

$IPV6 = $false
$arrInterfaces = (Get-WmiObject -class Win32_NetworkAdapterConfiguration -filter "ipenabled = TRUE").IPAddress

foreach ($i in $arrInterfaces) {$IPV6 = $IPV6 -or $i.contains(":")}

write-host $IPV6
于 2010-02-16T03:33:32.060 に答える
2

IPv6 が有効で動作していることを具体的に確認したい場合は、テスト ホストに接続してみるのが最善の方法だと思います。そうすれば、特定のソフトウェア設定をテストするだけでなく、すべてのルーティング構成とその周辺のすべてが正常に機能することもわかります。

于 2010-01-18T02:47:40.537 に答える
1

これはあなたがやりたくないことですが、netsh インターフェイスが提供する出力を調べてみるのが最善の方法のようです。

あなたが求めているものをここで見たいと思うかもしれません。実装はより簡単になりnetsh interface ipv6 show interfacesますが、必要なのは結果を反復することだけです。インターフェイスが見つかった場合はどこかで有効になり、見つからない場合はそうではありません。

于 2010-01-18T01:46:49.097 に答える
1

これはテストしていませんが、.NET Socket クラスには OSSupportsIPv6 プロパティがあります。だから、線に沿った何か

[System.Net.Sockets]::OSSupportsIPv6

ドキュメントには、「オペレーティング システムとネットワーク アダプタが IPv6 プロトコルをサポートしている場合は true、サポートしていない場合は false」と記載されています。その値が OS の機能に基づいているのか、それとも構成されているのかに基づいているのかどうかは、私には明らかではありません。

ローカル ヘルプでこれを調べたので、MSDN リンクが手元にありません。見つけるのが難しすぎてはいけません。

于 2010-01-18T02:41:31.903 に答える