コンピューターに関する情報をXMLで収集して保存することになっているPowerShellコードを作成しています。しかし、IP、MAC、ネットワークカードの名前を取得できないようです。
これが私が書いたいくつかのコードの例です(作業コード):
#OSInfo
$newosinfo = (@($xml.computer.software.osinfo)[0])
Get-WmiObject -computer $compname Win32_OperatingSystem |
ForEach-Object {
$newosinfo = $newosinfo.clone()
$newosinfo.caption = $_.caption
$newosinfo.serialnumber = [string]$_.serialnumber
$newosinfo.OSArchitecture = $_.OSArchitecture
$newosinfo.manufacturer = $_.manufacturer
#Time $newosinfo.installdate;
$xml.computer.software.AppendChild($newosinfo) > $null
}
$xml.computer.software.osinfo | where-object {$_.caption -eq ""} | foreach-object {$xml.computer.software.RemoveChild($_)}
そして、これが私が書き込もうとしたコードです(動作しないコード):
$newnetwork = (@($xml.computer.software.network)[0])
Get-WmiObject -computer $compname Win32_NetworkAdapter -Filter 'NetConnectionStatus=2' |
ForEach-Object {
$newnetwork = $newnetwork.clone()
$newnetwork = 1 | Select-Object Name, MAC, IP
$newnetwork.Name = $_.Name
$newnetwork.MAC = $_.MacAddress
$IP = $_.GetRelated('Win32_NetworkAdapterConfiguration')
$newnetwork.IP = $IP | Select-Object -expand IPAddress
$xml.computer.software.AppendChild($newnetwork) > $null
}
$xml.computer.software.network | where-object {$_.Name -eq ""} | foreach-object {$xml.computer.software.RemoveChild($_)}
このコードは、このエラーを出します:
Cannot convert argument "0", with value: "@{Name=Intel(R) 82579V Gigabit Network Connect
ion; MAC=F4:6D:04:40:DB:6F; IP=10.0.0.12}", for "AppendChild" to type "System.Xml.XmlNod
e": "Cannot convert the "@{Name=Intel(R) 82579V Gigabit Network Connection; MAC=F4:6D:04
:40:DB:6F; IP=10.0.0.12}" value of type "Selected.System.Int32" to type "System.Xml.XmlN
ode"."
At A:\Dropbox\Bachelorprosjekt\Kode\Fungerende Script+kode\infoGatherer.ps1:177 char:43
+ $xml.computer.software.AppendChild <<<< ($newnetwork) > $null
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument
だから私の質問は、上記のようなコードを知っているか、書くことができる人がいますか?ちなみに、「アクティブ化された」カードに関する情報のみを収集する方が賢明ですか?