2016-08-25 7 views
0

私はこのPowerShellスクリプトを、コンピュータから.Netフレームワークバージョンを入手しています。私はまた、このスクリプトに "Get-WmiObject Win32_ComputerSystem"を適用して、コンピュータ名と.Netフレームワークバージョンの両方を持つ必要があります。これについてどうすればいいですか?PowerShellは、ドメインコンピュータのコンピュータ名と.NET Frameworkを取得しますか?

Get-ADComputer -Filter * | ForEach { Get-ChildItem ‘HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP’ -recurse | Get-ItemProperty -name Version -EA 0 | Where { $_.PSChildName -match ‘^(?!S)\p{L}’} | Select PSChildName, Version } | Export-csv C:\temp\Netversion.csv 
+0

これは昨日からあなたの質問http://stackoverflow.com/questions/39113247/と同じ質問のようですpower-shell-to-get-net-framework-version-from-ad-computers – DAXaholic

+0

それは私が自分で修正した問題でした。これで、スクリプトに余分な機能を追加して、コンピュータ名を取得して、すべてのコンピュータで.netフレームワークのバージョンを識別できるようにしたかったのです。あなたが慎重に読んだら、それは同じ質問ではありません。あなたが次の質問を確認するのに役立つことができず、私の質問に投票しても構わない。 –

+0

@ Samk80 SOの社会契約は[いいです](http://stackoverflow.com/help/be-nice)ですので、あなたが不満を感じても、気難しいコメントをしないように助言します。 – vonPryz

答えて

0

コンピュータ名はレジストリから読み取ることができますので、gwmiを呼び出す必要はありません。 (WMI呼び出しは遅いため、可能であればこれらの呼び出しを避けることをお勧めします)。コンピュータ名はHKLM:\System\CurrentControlSet\Control\ComputerName\ComputerNameに格納されていますので、スクリプトを修正してレジストリから読み取るようにしてください。言われていること

、それはあなたがリモートコンピュータの情報を読み取ることを期待ようなスクリプトに見えますが、それが唯一のローカルコンピュータを読んでいます。そしてそれはあなたがADコンピュータオブジェクトを持っているのと同じくらい何回も行います。これは、Get-ADComputerからパイプラインに渡されるオブジェクトを決して使用しないためです。

何が必要でしょうがそうのようなパイプラインを活用することで、複数のレジストリにremote connectionsでは、

Get-ADComputer -Filter * | ForEach { 
    $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $_) 
    $regKey= $Reg.OpenSubKey(<foo>) 
    $value = $RegKey.GetValue(<bar>) 
    # Do stuff with reg values, save in, say, collection of custom PSObjects 
} 
... 
# Save the data into a file 
+0

ありがとうございました。あなたのような人々は、この世界への宝石のようなものです。 –

関連する問題