Need to powershell script to gather the host ESX Info network

Hello

I need two scripts powershell to collect two types of information about the ESX host network.

1. information vNIC -& gt; information on the vmnic (physical ESX host network adapter) connected to vSwitches.

vNIC | VSwitch model | | Trade | Speed | Status | | PCI slot Active/stand-by/not assigned

(Example) output expected:

vmnic0 | intel corporation 82XXXX gigabit ethernet controller | vSwitch0 | service console, vMotion | 1000mbps Full | up 01:01.00 | | Assets

2. Portgroup information

PortGroup | vNIC (s) with active / standby |  PCI slot of vNIC (s) with active / standby | Physical switch with port number

Expected results (example):

Service console | vmnic0 (a) : (s) | 01 vmnic1: 00. 00 (a) : 02:00. 00 (s) | abcd-123 [GigabitEthernet10/10] : xyzf-7890 [Gigabitethernet11/11]

Please note if CDP is not active, then in the field of physical switch values can contain "CDP is not enabled"

Thanks in advance!

Noticed that the two threads under became a little mixed in the script.

This is the script with the devIds with the indication of the active / standby.

foreach($esxImpl in (Get-VMHost)){
     $esx = $esxImpl | Get-View
     $netSys = Get-View $esx.ConfigManager.NetworkSystem
     foreach($pg in $esx.Config.Network.Portgroup){
          $pNICStr = @()
          $pciStr = @()
          $cdpStr = @()
          foreach($a in $pg.ComputedPolicy.NicTeaming.NicOrder.ActiveNic){
               if($a){
                    $pNICStr += ($a + "(a)")
                    $pciStr += ($esx.Config.Network.Pnic | where {$_.Device -eq $a} | %{$_.Pci + "(a)"})
                    $cdpInfo = $netSys.QueryNetworkHint($a)
                    $cdpStr += &{if($cdpInfo[0].connectedSwitchPort){$cdpInfo[0].connectedSwitchPort.devId + "(a)"}else{"CDP not configured(a)"}}
               }
          }
          foreach($s in $pg.ComputedPolicy.NicTeaming.NicOrder.StandbyNic){
               if($s){
                    $pNICStr += ($s + "(s)")
                    $pciStr += ($esx.Config.Network.Pnic | where {$_.Device -eq $s} | %{$_.Pci + "(s)"})
                    $cdpInfo = $netSys.QueryNetworkHint($s)
                    $cdpStr += &{if($cdpInfo[0].connectedSwitchPort){$cdpInfo[0].connectedSwitchPort.devId + "(s)"}else{"CDP not configured(s)"}}
               }
          }

          $pg | Select @{N="ESXname";E={$esxImpl.Name}},
          @{N="Portgroup";E={$pg.Spec.Name}},
          @{N="VLANid";E={$pg.Spec.VlanId}},
          @{N="pNIC";E={$pNICStr}},
          @{N="PCI location";E={$pciStr}},
          @{N="Physical switch";E={$cdpStr}}
     }
}

____________

Blog: LucD notes

Twitter: lucd22

Tags: VMware

Similar Questions

  • Need a powershell script to gather information from ESX host

    Hello

    I need a powershell script to collect the below given information host ESX to the Virtual Center. My VC:2.5 of the environment, the ESX hosts: 2.5, 3, 3.5

    At present I have individual powershell scripts of a steamer to get these details. Would be more useful to have a single script. I tried VESI, but does not receive the report in the below in the format.

    | ESX host name Version | Number | construction | manufacturer Model | Processor type | Number of physical CPUS | Number of cores | VMotion service IP Console IP | | County HBA | Physical NETWORK interface cards count

    Thanks in advance!

    So I'm at my wits end here.

    It works for me and Robert also confirmed that it worked for him.

    Although I don't see why this would solve the problem, you could finally try an upgrade to PowerShell v2 RTM.

    ____________

    Blog: LucD notes

    Twitter: lucd22

  • Need a powershell script to find the PID of VM in an ESX box

    Hello

    I need a powershell script to list out the PID of all virtual machines running in a box of ESX.

    The script should prompt for ESX box name and root password.

    Expected results:

    The virtual computer name.  NEST

    Thanks in advance!

    My mistake, the point (any character) is to eat the rest of the message.

    Try again with

    $mask = [regex]"vmid=(\d+)\s+([\w-]+)"
    

    He accepts what regex esteem alphabetic characters or the hyphen (-).

    ____________

    Blog: LucD notes

    Twitter: lucd22

  • Need a powershell script to extract VM-> IP->->-> mapping vSwitch portgroup vNIC

    Hello

    I need a powershell script to extract the following information for all the VMS in vcenter.

    vm_name | ESX_name | Cluster_name | vm_IP_address | vNIC_name | PortGroup | vSwitch

    Please note that multiple virtual machines have several vNIC where vNIC is connected to various exchanges

    Here you go

    $report = @()
    Get-VM | %{
         $vm = $_
         $_ | Get-Vmguest | %{
              $guest = $_
              if($_.Nics){
                   $i = 0
                   $_.Nics | %{
                        $row = "" | Select Name, Powerstate, Host, Cluster, "IP address","Nic Name",Portgroup,vSwitch
                        $row.Name = $vm.Name
                        $row.Powerstate = $vm.PowerState
                        $row.Host = $vm.Host.Name
                        $row.Cluster = ($vm.Host | Get-Cluster).Name
                        $row."IP address" = $guest.IPAddress[$i]
                        $row."NIC Name" = $vm.NetworkAdapters[$i].Name
                        $row.Portgroup = $guest.Nics[$i].NetworkName
                        $row.vSwitch = (Get-VirtualPortGroup -Name $guest.Nics[$i].NetworkName -VM $vm).VirtualSwitchName
                        $report += $row
                        $i++
                   }
              }
              else{
                   $row = "" | Select Name, Host, Cluster, "IP addr","Nic Name",Portgroup,vSwitch
                   $row.Name = $vm.Name
                   $row.Powerstate = $vm.PowerState
                   $row.Host = $vm.Host
                   $row.Cluster = ($vm.Host | Get-Cluster).Name
                   $row."IP address" = "na"
                   $row."NIC Name" = "na"
                   $row.Portgroup = "na"
                   $row.vSwitch = "na"
                   $report += $row
    
              }
         }
    }
    $report
    

    ____________

    Blog: LucD notes

    Twitter: lucd22

  • Need a powershell script to create a local user on esx given the esx server list box

    Hello

    I need a powershell script to create a local user on esx in a given list entry of esx servers through a csv spreadsheet. The script should ask me the user name and the password for the user name to be created on the given list of esx servers.

    Thanks in advance!

    Just noticed that there is a lack of vacuum after the - password parameter.

    It should be

    $userName = Read-Host "Username"
    $password = Read-Host "Password" -AsSecureString:$true
    Import-Csv "C:\vmhosts.csv" | %{
         Connect-VIServer -Server $_.Hostname -Credential (Get-Credential)
         New-VMHostAccount  -Id $userName -Password $password -UserAccount:$true -GrantShellAccess:$true -Confirm:$false
         Disconnect-VIServer -Confirm:$false
    }
    

    ____________

    Blog: LucD notes

    Twitter: lucd22

  • Need a powershell script to collect info patch esx

    Hello

    IAM looking for a powershell script that collects the result of "motion esxupdate" for all versions of esx host 3.5 in the Virtual center 2.5 version and exports to CSV file.

    It should take input as virtual Center and collect all the information of ESX host, connect to esx hosts, run the esxupdate query and update of the CSV with results.

    I got the code base of other scripts. I've pasted below. He collects only results for esx server in view of the need to modify the code for the above requirements.

    -


    $servers = "server0″", server1″

    $account = "root".

    $password = "password".

    $servers | % {$a = plink - pw $password $account@$_ "esxupdate query"

    {$server = $_}

    -


    Thanks in advance!

    Have you tried running the script in the powershell console?

    May be a problem with the vesi script editor.

    Sent from my iPhone

    On 19 March 2010, at 21:14, Sureshadmin<>

  • Need a PowerShell script to...

    Hi, I need a PowerShell script to list all the virtual machine from the center of data-list for each virtual computer all drives and formats the disc and the disc type and a free column for comments.

    Move us the backup platforms and try to develop a plan of migration for all virtual machines

    See you soon

    Looks like you are using an older version of PowerCLI, the CapacityGB was introduced in one of the previous PowerCLI builds.

    Try to upgrade.

    If an upgrade is not possible, you can do

    Get-Datacenter -Name MyDC | Get-VM | Sort-Object -Property Name |Get-HardDisk | Select @{N="VM";E={$_.Parent.Name}},Name,@{N="CapacityGB";E={[int]($_.CapacityKB/1MB)}},@{N="Type";E={[string]::Join('/',($_.DiskType,$_.StorageFormat,$_.Persistence))}},@{N="Comment";E={' '*25}} |Export-Csv C:\HD-report.csv -NoTypeInformation -UseCulture
    

    It also sorts the VM on their Name property.

  • PowerCLI need to define global attributes on the hosts

    PowerCLI need to define global attributes on the hosts... Please, I beg you. ESXi4.

    The name is easy in the user interface as long as it applies to all hosts in the global inventory, but I want to be able to set or change the value of the attribute on a per host-level or a cluster.

    Thanks for any help!

    I have

    To create global custom attributes that you use

    New-CustomAttribute -Name MyCustomAttribute
    

    To set a global custom attribute for the hosts, you can use

    New-CustomAttribute -Name MyCustomAttribute -TargetType VMHost
    

    If you want to set or change the value of the attribute for a specific host, you can do

     Set-CustomField -Name MyCustomAttribute -Value "MyValue" -Entity (Get-VMHost )
    

    If you want to change the value for all hosts in a cluster, you can do

    Get-Cluster  | Get-VMHost | Set-CustomField -Name MyCustomAttribute -Value "MyValue"
    

    ____________

    Blog: LucD notes

    Twitter: lucd22

  • The IP of the host ESX and ESXi console information

    Hi guys,.

    I have a little problem here, we have a script that collects the host Console IP, host name, field info... etc.

    My problem is with the period of INVESTIGATION, because we have a mixed environment of esx3.5, esx4.0, esx4.1 and ESXi4 get the IP of the Console is a bit of a problem.

    If I use the

    $NicInfo = get-VMHostNetwork - VMHost $esxhost. Name
    $newesxhost. VmHostName = $NicInfo.HostName
    $newesxhost. Domain = $NicInfo.DomainName
    {foreach ($cs in $NicInfo.ConsoleNic)}
    $newesxhost. IPAddress = [string] $cs. INTELLECTUAL PROPERTY
    }

    I covers the ESX Console hosts IP info, but all the info of ESXi IP gets missed.

    If I add to the:

    $NicInfo = get-VMHostNetwork - VMHost $esxhost. Name
    $newesxhost. VmHostName = $NicInfo.HostName
    $newesxhost. Domain = $NicInfo.DomainName
    foreach ($cs in $NicInfo. ) VirtualNic | where {$_.name - eq "vmk0"}){}
    $newesxhost. IPAddress = [string] $cs. INTELLECTUAL PROPERTY
    }

    I get the ESXi IP Management IP network, but the ESX hosts to report the vmk0 which is the IP address of vmotion.

    So if anyone can help I'd be very happy.

    Include the HOST party so that you can see what I mean:

    #[int] $Loopctr = 0
    $newesxhost = (@($xml.) (ESXInventory.HOST) [0])
    $newVMPortGroup = (@($xml.) (ESXInventory.VMPortGroup) [0])

    Get-VMHost-location (Get-Cluster-name $cluster. Name) | Sort-Object-unique | % {
    $esxhost = get-view $_.ID
    Write-Host $esxhost. Name
    #if ($Loopctr - gt 0) {$newesxhost = $newesxhost.clone ()}
    $newesxhost = $newesxhost.clone)
    $newesxhost. MemberOfCluster = $cluster. Name
    $newesxhost. Name of the vendor = $esxhost. Summary.Hardware.Vendor
    $newesxhost. Model = $esxhost. Summary.Hardware.Model
    $newesxhost.os_version = [string] $esxhost. Config.Product.Version
    $newesxhost.os_build = [string] $esxhost. Config.Product.Build
    $newesxhost.os_caption = [string] $esxhost. Config.Product.FullName
    $newesxhost. MemorySize = [string] $esxhost. Summary.Hardware.MemorySize
    $newesxhost. CpuModel = $esxhost. Summary.Hardware.CpuModel
    $newesxhost. CpuMhz = [string] $esxhost. Summary.Hardware.CpuMhz
    $newesxhost. NumCpuPkgs = [string] $esxhost. Summary.Hardware.NumCpuPkgs
    $newesxhost. NumCpuCores = [string] $esxhost. Summary.Hardware.NumCpuCores
    $newesxhost. NumCpuThreads = [string] $esxhost. Summary.Hardware.NumCpuThreads
    $newesxhost. NumNics = [string] $esxhost. Summary.Hardware.NumNics

    $newesxhost. NumHBAs = [string] $esxhost. Summary.Hardware.NumHBAs

    $NicInfo = get-VMHostNetwork - VMHost $esxhost. Name
    $newesxhost. VmHostName = $NicInfo.HostName
    $newesxhost. Domain = $NicInfo.DomainName
    foreach ($cs in $NicInfo.VirtualNic | where {$_.name - eq "vmk0"}) {}
    $newesxhost. IPAddress = [string] $cs. INTELLECTUAL PROPERTY
    }

    $VMPortGroup = get-VirtualPortGroup - VMHost $esxhost. Name

    {foreach ($vpg to $VMPortGroup)
    Write-Host $vpg. Name
    $newVMPortGroup = $newVMPortGroup.clone)
    $newVMPortGroup.Name = $vpg. Name
    $xml. ESXInventory.AppendChild ($newVMPortGroup) > $null
    }

    $xml. ESXInventory.AppendChild ($newesxhost) > $null
    #$Loopctr += 1

    /regards

    Why you do not include a test that check if the host's ESX or ESXi?

    Something like that

    $esx = Get-VMHost MyESX
    
    $NicInfo = Get-VMHostNetwork -VMHost $esx 
    
    $newesxhost.VmHostName = $NicInfo.HostName$newesxhost.Domain = $NicInfo.DomainName
    
    if($esx.Extensiondata.Config.Product.ProductLineId -eq "esx"){    foreach ($cs in $NicInfo.ConsoleNic ){        $newesxhost.IPAddress = [string] $cs.IP    }}else{    foreach ($cs in $NicInfo.VirtualNic |where {$_.name -eq "vmk0"} ){        $newesxhost.IPAddress = [string] $cs.IP    }}
    
    $newesxhost
    
  • How to remove the host esx 3.5 virtual Center

    Can't find info on how to do to remove the host esx virtual center.

    How to do?

    THX.

    Right-click on your host in the left pane and click Disconnect and then once it is disconnected you can right click on the host again and click on Remove and which removes the host to vCenter.

    =========================================================================

    William Lam

    VMware vExpert 2009

    Scripts for VMware ESX/ESXi and resources at: http://engineering.ucsb.edu/~duonglt/vmware/

    repository scripts vGhetto

    http://Twitter.com/lamw

    If you find this information useful, please give points to "correct" or "useful".

  • Not able to connect to the host ESX 3.5 by VC so customer VI

    The host ESX 3.5 has been disconnected from the VC, and we are not able to connect customer using VI as well. The virtual machines on the host are running without any problem.

    Got the message when tried to restart/start services of Mgmt. below

    # Service mgmt-vmware restart

    stopping VMware ESX Server management services:

    VMware ESX Server Host Agent Watchdog

    VMware ESX Server host agent

    Starting VMware ESX Server management services:

    Agent Host VMware ESX Server (background)

    Availability report startup (background)/etc/init.d/mgmt-vmware: fork: Resource temporarily unavailable.)

    # Start of Service mgmt-vmware

    From the VMware ESX Server management services:

    VMware ESX servre Agent Host (background)

    Availability report startup (background)

    status of service mgmt-vmware #.

    VMware-pass is stopped

    hostd.log - entries

    /etc/init.d/sshd command failed

    Didn't the /etc/init.d/sshd fork: Resource temporarily unavailable.

    Let us know the fix for this problem other than restarting the host.

    To know how to clean it, please read KB1007887 - defunct cimservera of process on VMware ESX 3.5 hardware management agents run and follow the instructions.

    André

  • How to get the host ESX DR see replicated Celerra Lun

    Hi guys, Im setting up SRM with 2 x NS20 and ive got regarding the configuration of the LUN on the production storage array, Lun on the storage LUN appropriate to prod/dr esx servers present DR Bay. Ive set up replication and added the DR lun to the esx server, ensuring not to add it as he will write a signature. I've then added the production on the production ESX Server LUNs, added storage which obviously writes a signature on the drive, and with the installation of the replication, I expected to simply issue a new analysis on the DR esx host and do see the data store.

    Am I missing something here? Any help would be appreciated.

    Thank you

    Hello

    "On DR NS ive done exactly the same thing with respect to FS, Lun, target iSCSI and presented to the host ESX DR, ive done a rescan and his picked up the lun 'Read Only', which is being replicated in but the tab of summary in VC, I see that the local VMFS file system and I was expecting to see the replicated LUN listed with the store local data or is this seen only". When SRM changes the properties of Lun during a failover? »

    You will not see the Site recovery volumes listed in data warehouses, unless you do one of two things - a failover in which case the production side will be unalterable and be removed from the list of data on the Production side store while exposing the VMFS data store now read-write on the side of the recovery.

    Or you use the test function in which case that encourage a wink of Celerra temporary writable and it will appear as a data store broken in the list on the side of the recovery VMFS data warehouses.

    However, it seems that you do not see this result, as DR table does not seem to be configured as it should.

    Can the side Production VC communicate with happiness with the Celerra recovery site - IE can launch you a session PUTTY from the Production side VC and connect to recovery side Celerra. Can the recovery side VC do the same thing for the Production side Celerra?

    I guess you get the unknown peer after that MRS. not the discovery of the table that owns about 23% forever and then ends. The only other thing I can think of and am not sure about this as a solution because it is a set of actions that I did of my side of recovery when Celerra is to create a small file system and in a small iSCSI LUN on the side of the recovery of the recovery side Celerra and put it in your recovery ESX cluster side - create a file system VMFS on it and place a Virtual computer in this VMFS file system - this is to check that there are no problems with the ESX host side recovery working with the recovery side Celerra

    My guess would be a thing of IP connectivity - if it's a little strange, if the link between the Production side VC and the recovery side VC has been established successfully

    I'll pass on to a colleague to VMware SRM and see if he has any ideas

    Concerning

    Alex Tanner

  • PowerShell script to browse the root of an ESXI host?

    I am currently working on a project to automate the task to bring our standard up to STIG vmware environment.


    I was able to make the largest part of the task using PowerCLI and vSphereCLI scripts. Some patches require that you check the data to files like/etc/ssh/ssh_config... I tried to use the vifs.pl, but that does not allow you to browse directories host root. Also trying to research how to execute SSH via Powershell commands, but there is no free utlity. Is there another way to do this?

    Here is an example: under text difficulty: I need to be able to read the content of/etc/ssh/ssh_config to check if there is the "LOCAL so."

    Under rule: the SSH client must not send any environment variables on the server or send only those relating to the regional settings.

    STIG ID: GEN005529-ESXI5-708 rule ID: SV - 51085r1_rule Vuln ID: V-39269

    Severity: CAT II class: Unclass

    Discussion:
    Environment variables can be used to change the behavior of remote sessions and should be limited. Local environment variables specify the language, character set and other features change the operation of the software according to the preferences of the user.

    Documentable: No.

    Check the content:
    Deactivate the lock mode.
    Select the shell ESXi.
    < file > = / etc/ssh/ssh_config
    < Required_keyword > = AcceptEnv
    < Required_keyword_setpoint > = LOCAL
    Run the following commands:
    # grep AcceptEnv/etc/ssh/ssh_config

    If 'AcceptEnv' is not set to 'LOCAL' a finding.

    Reactivate the lock mode.

    Difficulty of text:
    Deactivate the lock mode.
    Select the shell ESXi.
    < file > = / etc/ssh/ssh_config
    < Required_keyword > = AcceptEnv
    < Required_keyword_setpoint > = LOCAL
    Run the following commands:
    # vi < file >

    Add/Modify the < required_keyword > or < required_keyword_setpoint > where/as necessary for 'LOCAL '.

    Reactivate the lock mode.

    IAB: IAB-000366
    SP NIST 800 - 53A: CM - 6.1 (iv)
    NIST 800-53 SP: CM - 6B

    There is the free PuTTY Suite, with the included plink.exe you can do a SSH session on the ESXi server.

    There are several examples on how to use plink.exe in this community.

  • PowerShell script to change the DNS entries for all hosts

    Ive tried many others which have been posted on the web and none work... Someone at - it a script to change the DNS entries on all hosts?

    OK, changed a few pieces my end, it worked but now it's... Try this (50% confident

     $dnsServers = ("192.168.111.3","192.168.111.4")
    
     Get-VMHost | Get-View | %{
        $ns = Get-View -Id $_.configManager.networkSystem
        $dns = $ns.networkConfig.dnsConfig
    
         $dns.Address = @()
         foreach($server in $dnsServers) {
           $dns.Address += $server
       }
       $ns.UpdateDnsConfig($dns)
     }
    

    If you found this information useful, please consider the allocation of points for correct or helpful.

    Alan Renouf

    http://Virtu-al.NET

  • Script to reconnect the hosts using "Read-Host - AsSecureString".

    I'm trying to get a script that will reconnect all ESX host, when you use a server different vCenter (same database well). I found the bases of what I need here:

    PowerCLI blog

    But the only problem with that one is that the script has the password in clear text. I prefer to ask the password, as with the Read-Host - AsSecureString option. My script below works fine without the option - AsSecureString... when the Read-Host is not hidden. Can someone tell me how to make it work with the AsSecureString?

    $password = Read-Host - assecurestring "Please enter the root password"

    Get-VMHost | % {$view = get-view $_.id}

    $arg = New-Object vmware.vim.hostconnectspec

    $arg.userName = 'root '.

    $arg.password = $password

    $arg.force = $true

    $view. ReconnectHost ($arg)

    Thank you!

    Kyle

    The property of password in HostConnectSpec object requires a plaintext password.

    This means that you must use the method Robert provided in this post.

    I've attached a file (since the SW forum do not like the brackets) with your script suitable for this method.

    ____________

    Blog: LucD notes

    Twitter: lucd22

Maybe you are looking for