2016-07-18 13 views
-1

私はESXiからすべての情報を取得したいと思います。私はさまざまなCSVファイルで情報を抽出しましたが、一度結合したい場合はすべて表示されません。しかし、私はむしろ同じ情報を収集するためにforeachを作成することになります。esxi詳細情報

Add-PsSnapin VMware.VimAutomation.Core -ErrorAction "SilentlyContinue" 
Import-Module ‚C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1‘ 

$datetime = Get-Date -Format "ddMMyyyy"; 

# Configuration Block 
$User = 
$Password = 
$ESXiServer = "172.17.1.171" 

# Connect to ESXi 
$PWD = ConvertTo-SecureString -AsPlainText -Force -String $Password; 
$SourceCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User,$PWD; 
$sourceConnection = New-MvmcSourceConnection -Server $ESXiServer -SourceCredential $sourceCredential 

$SourceVMName = (Get-MvmcSourceVirtualMachine -SourceConnection $sourceconnection).Name 
$Datacenter = Get-Datacenter 
$Datastore = Get-Datastore 
$DataStoreLocation = $Datastore.ExtensionData.info.url 
$Datastore = Get-Datastore 

# Get-VMHostNetworkAdapter | fl * 
Get-VMHostNetworkAdapter | select VMhost, Name, IP, SubnetMask, Mac, DHCPEnabled, DeviceName | Export-Csv C:\VMHostNetworkDetails_$datetime.csv -Delimiter ";" 
Get-MvmcSourceVirtualMachine -SourceConnection $sourceconnection | select MemorySizeBytes, OperatingSystem, UsedSpacebytes | Export-Csv C:\VMRAmDetails_$datetime.csv -Delimiter ";" 
$Global:DefaultVIServers | Select ProductLine,Version,Build, Port | Export-Csv C:\GlobalDetails_$datetime.csv -Delimiter ";" 
@(Import-Csv C:\VMHostNetworkDetails_$datetime.csv) + @(Import-Csv C:\VMRAmDetails_$datetime.csv) + @(Import-Csv C:\GlobalDetails_$datetime.csv) | Export-Csv C:\ESxiDetails_$datetime.csv -Delimiter ";" 

注:get-vmは機能しません。

EDIT:
私はforeachループを使用して情報を取得しようとしましたが、IP、SubnetMask、Mac、DHCPEnabledを取得できませんでした。 $VMSysInfo.IPAddress私にIPは与えていませんが、Get-VMHostNetworkAdapter | select VMhost, Name, IP, SubnetMask, Mac, DHCPEnabled, DeviceNameは私にIPを与えます。

$VmInfo = vmware.vimautomation.core\Get-VM 
$VMS = ($VmInfo).Name 
$VCenter = @() 
foreach ($VM in $VMS) 
{ 
    $HostServer = (($VmInfo | ? {$_.Name -eq $VM}).Host).Name 
    $VMSysInfo = Get-VMGuest -VM $VM 
    $MyObject = New-Object PSObject -Property @{ 
    VMName = $VM 
    #VMHostName = $VMSysInfo.HostName 
    VMIP = $VMSysInfo.IPAddress 
    VMInstalledOS = $VMSysInfo.OSFullName 
    PowerState = ($VmInfo | ? {$_.Name -eq $VM}).PowerState 
    NumberOfCPU = ($VmInfo | ? {$_.Name -eq $VM}).NumCpu 
    MemoryGB = (($VmInfo | ? {$_.Name -eq $VM}).MemoryMB/1024) 
    VMDataS = (Get-Datastore -VM $VM).Name 
    #HostServer = (($VmInfo | ? {$_.Name -eq $VM}).Host).Name 
    #HostCluster = (Get-Cluster -VMHost $HostServer).Name 
    Datacenter = (Get-Datacenter -VM $vm).Name 
    #Notes = $vm | Select -ExpandProperty Description 
    Portgroup = (Get-VirtualPortGroup -VM $vm).Name 
    } 
    $VCenter += $MyObject 
     } 
    $VCenter | Select VMName, 
    @{N='VMIPAddress';E={$_.VMIP -join '; '}}, 
    VMInstalledOS, PowerState, NumberOfCPU, MemoryGB, 
    @{N='VMDataStore';E={$_.VMDataS -join '; '}}, 
    HostServer, HostCluster,Datacenter, Notes, Portgroup | 
    Export-Csv C:\test.csv -NoTypeInformation -Delimiter ";" 
+0

は「私がすることができません」「」動作しません「と表示されません」 - [良い質問をする方法]をお読みください(http://stackoverflow.com/help/how-to-ask)、誰かがあなたを助けてくれるかもしれない詳細な質問を編集してください。 – TessellatingHeckler

+0

注意してお読みください。私の質問ははっきりしています。私は3つのCSVファイルを作成して、それぞれ正しい情報を与えます。 foreachループを使用して同じ情報を取得する方法を知りたいだけです。 – frhling1

+0

Hyper-Vコマンドとのネーミングクラッシュのために 'Get-VM'が動作しないと思います。モジュール/スナップインの接頭辞 'vmware.vimautomation.core \ Get-VM'を含むフルネームを使用すると動作する可能性があります。とにかく、3つのテーブルが1つのCSVにどのように収まるかはっきりしていません。それらを連鎖させるのはCSVデータではありません。 ( 'Get-Content a.csv、b.csv、c.csv | Set-Content out.csv')。 'foreach'が何をループするのかははっきりしません。どのようにforeachループが同じ情報を集めることができるのか、また別の結果を与える理由は明確ではありません。 – TessellatingHeckler

答えて

0

私は、foreachループを変更し、それが動作します:

$VmInfo = vmware.vimautomation.core\Get-VM 
#$VmInfo = (Get-MvmcSourceVirtualMachine -SourceConnection $sourceconnection).Name 
$VMS = ($VmInfo).Name 
$Data = @() 
foreach ($VM in $VMS) 
{ 
    $Datacenter = Get-Datacenter 
    $Datastore = Get-Datastore 
    $SourceIP = ($global:DefaultVIServer).name 
    $DataStoreLocation = $Datastore.ExtensionData.info.url 

    $VMNetwork = Get-VMHostNetworkAdapter 
    $PortalGroup = Get-VirtualPortGroup -VM $vm 
    $MvmcSourceVirtualMachine = Get-MvmcSourceVirtualMachine -SourceConnection $sourceconnection 

    $VMCustom = New-Object System.Object 

    $VMCustom | Add-Member -Type NoteProperty -Name DataCenter -Value $Datacenter.Name 
    $VMCustom | Add-Member -Type NoteProperty -Name DataStoreName -Value $Datastore.Name 
    $VMCustom | Add-Member -Type NoteProperty -Name DataStoreLocation -Value $DataStoreLocation 
    $VMCustom | Add-Member -Type NoteProperty -Name NumberOfCPU -Value $VmInfo.NumCpu 
    $VMCustom | Add-Member -Type NoteProperty -Name PowerState -Value $VmInfo.PowerState 
    $VMCustom | Add-Member -Type NoteProperty -Name MemoryGB -Value $VmInfo.MemoryGB 
    $VMCustom | Add-Member -Type NoteProperty -Name VMHost -Value $VMNetwork.VMhost 
    $VMCustom | Add-Member -Type NoteProperty -Name DHCP -Value $VMNetwork.DHCPEnabled 
    $VMCustom | Add-Member -Type NoteProperty -Name SubnetMask -Value $VMNetwork.SubnetMask 
    $VMCustom | Add-Member -Type NoteProperty -Name Client -Value $VMNetwork.Client 
    $VMCustom | Add-Member -Type NoteProperty -Name IP -Value $SourceIP 
    $VMCustom | Add-Member -Type NoteProperty -Name MacAddress -Value $VMNetwork.Mac 
    $VMCustom | Add-Member -Type NoteProperty -Name PortalGroupName -Value $PortalGroup.Name 
    $VMCustom | Add-Member -Type NoteProperty -Name OperatingSystem -Value $MvmcSourceVirtualMachine.OperatingSystem 

    $Data += $VMCustom 
} 

$Data | Export-CSV "C:\ESXiInfo.csv" -Delimiter ";" -NoTypeInformation 
関連する問題