2013-03-08 55 views
1

此代碼在導出爲CSV時會爲IPAddress字段輸出「System.String []」輸出。我知道這個問題的解決方案是加入該領域,但我基於用戶選擇的設置動態選擇對象,所以我不知道如何解決它。任何幫助表示讚賞。WMI Export-CSV爲IP地址創建System.String(動態選擇對象)

$colItems = GWMI Win32_NetworkAdapterConfiguration -computername $PCname -namespace "root\CimV2" -filter "IpEnabled = TRUE" 

###Define Settings Array 
$settings_array = @() 
Foreach ($objItem in $chklstGetMIPRet.CheckedItems) 
{$settings_array += [String]$objItem} 
##### 

###Export to CSV 
$colItems | Select-Object -Property $settings_array | export- csv "$ScriptDir\Exports\$Outputfile" -NoType   

$ chklstGetMIPRet是一個檢查列表框,用戶可以選擇他們希望顯示哪些WMI類。 $ chklstGetMIPRet.CheckedItems包含該檢查列表框中當前選中的所有值。所以在foreach經過和每個檢查項目的補充,價值$ settings_array

編輯:

此代碼:

$prop_list = @{"MACAddress" = "MACAddress"} 
$prop_list += @{"Caption" = "Caption} 
$prop_list += @{"IPAddress" = $colItems.IPAddress -join ', '} 

Foreach ($objItem in $chklstGetMIPRet.CheckedItems) 
{$exp_settings_array += $prop_list[$objItem]} 

$colItems | Select-Object -Property $exp_settings_array | export-csv "$ScriptDir\Exports\$Outputfile" -NoType 

除非它出口,我得到的標題和MACADDRESS正確帶有標籤但IPAddress只是將實際IP輸出到沒有標籤的頂行。

+0

$ chklstGetMIPRet是一個檢查列表框,用戶可以選擇他們希望顯示哪些WMI類。 $ chklstGetMIPRet.CheckedItems包含該檢查列表框中當前選中的所有值。所以foreach通過,併爲每個檢查項目添加該值$ settings_array – Thomas 2013-03-08 18:31:34

回答

0

我不確定你將如何實現這一點,但根本原因是該字段實際上是一個字符串數組。這將工作給你一個例子:

$colItems = GWMI Win32_NetworkAdapterConfiguration -computername $PCname -namespace "root\CimV2" -filter "IpEnabled = TRUE" 
$settings_array = @() 
$settings_array += 'DHCPEnabled' 
$settings_array += @{n='IPAddress';e={$_.IPAddress -join ', '}} 
$colItems | Select-Object -Property $settings_array 

很明顯,你將不得不工作到這一點在你的代碼$ chklstGetMIPRet.CheckedItems財產。

在你的情況下,我會建議有一個散列表,其中包含匹配checkeditems和值的鍵值,這些鍵值表示要爲該項目添加屬性數組的值。因此,例如(未經測試,因爲我沒有嘲笑了一個表格,測試它的時間):這讓你查找哈希那麼在你建立的屬性數組在foreach

$ph = @{n='IPAddress';e={$_.IPAddress -join ', '} 
$propertyLookup = @{'DHCPEnabled' = 'DHCPEnabled'; 
         'IPAddress' = $ph 
         } 

$settings_array += $propertyLookup[$objItem] 
+0

我試過這個,它不工作。 $ settings_array = @()Foreach($ objItem in $ chklstGetMIPRet.CheckedItems)$ settings_array + = @ {n ='$ objItem'; e = {$ _。$ objItem -join','}}}' – Thomas 2013-03-08 18:08:38

+0

什麼是$ chklstGetMIPRet.CheckedItems?它從何而來?它有什麼作用?請在您的問題中提供相關信息。 – EBGreen 2013-03-08 18:25:49

+0

添加爲我的問題的評論 – Thomas 2013-03-08 18:32:07