-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 ";"
は「私がすることができません」「」動作しません「と表示されません」 - [良い質問をする方法]をお読みください(http://stackoverflow.com/help/how-to-ask)、誰かがあなたを助けてくれるかもしれない詳細な質問を編集してください。 – TessellatingHeckler
注意してお読みください。私の質問ははっきりしています。私は3つのCSVファイルを作成して、それぞれ正しい情報を与えます。 foreachループを使用して同じ情報を取得する方法を知りたいだけです。 – frhling1
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