Export-csv column order

Is there a way to control or to format the output to a CSV of powercli?  It seems that columns are always just in random order and I would be able to dictate that.

The problem is not with the Export-Csv cmdlet, but with the way in which the properties are stored in an object by PowerShell.

In PowerShell v2, you can explicitly specify the order before the Export-CSV

$array | Select prop1, prop1, prop2 | Export Csv C:\file.csv - NoTypeInformation - UseCulture

In PowerShell v3, you now have the casting [ordered].

See Export-Xlsx, the suite and the data ordered, who throw also works with Export-Csv

Tags: VMware

Similar Questions

  • Export an ADF table with default column order

    Hello

    Jdev 11.1.1.5.0

    We have ADF Table with column drag and drop option. Also we have implemented ADF Table with excelHTMl type of export.

    Everything works as expected. Only problem is if we try to exchange a few columns by drag-and - drop option and then export the table, we receive the order of the columns with brewing. But our demand is, the user must obtain the export with the initial order table by default.

    It would be great, if you can suggest an idea to export the ADF table with default column order.

    Thanks in advance,

    MSR.

    I realized the required functionality. We can restore the default order of the columns to aid

       Function richeTableau = this.getFetchResultsTable ();
       Iterator rItr = rTable.getChildren () .iterator ();
       {while (rItr.hasNext ())}
           ((RichColumn) rItr.next ()).setDisplayIndex(-1);
       }

    Then we can call the real export help feature

       queue the event via a JavaScript inserted into the page
       FacesContext context = FacesContext.getCurrentInstance ();
       Erks = ExtendedRenderKitService
       Service.getService (context.getRenderKit (), ExtendedRenderKitService.class);
       erks.addScript (context, "customHandler()");
  • Import of csv - Cluster Get - Export csv

    Hello community vmware,

    I'm looking for a script simple ps import a list of vm (based on a csv file that I feed into it).

    I would then result to a csv file of the 2 column (1 column with the name of the virtual machine) and the other with the corresponding cluster name, in that it is.

    Thanks in advance for the help.

    Try something like this

    It assumes that your input CSV file looks like this

    Name

    VM1

    VM2

    $report = import-Csv - UseCulture names.cvs | %{

    Get-VM-name $_. Name |

    Select Name,@{N='Cluster'; E = {Get-Cluster - VM $_______ |} Select name - ExpandProperty}}

    }

    $report | Export Csv report.csv - NoTypeInformation - UseCulture

  • Include the attribute custom report (Export-Csv)

    I am writing a script to report on disk / the use of the capacity for each virtual machine in the environment.

    I try to include a column in the generated report (CSV), which includes the CustomField/CustomAttributes for each virtual computer as well as the news of disk capacity.  The report runs fine, but after you export the report to CSV (Export-Csv using) the newly created column just to the custom attribute field displays the following parameters for each line/entry:

    VMware.VimAutomation.ViCore.Impl.V1.Util.ReadOnlyDictionary'2 (System.String, System.String)

    When I use out-file it works, but formatting is very obscured...

    Here's the function/script that I use, I 'bolded in Red' the part of the script which I believe is the origin of the problem:

    Function Get-VMGuestDiskUsage {}
    (param
    [parameter (valuefrompipeline = $true required = $true, HelpMessage = "enter an entity vm")]
    ([VMware.VimAutomation.ViCore.Impl.V1.Inventory.VirtualMachineImpl] $VM)
    {in process
    $ErrorActionPreference = "SilentlyContinue".
    foreach ($disk in $VM. Guest.Disks) {}
    $objDisk = new-Object System.Object
    $objDisk | Add-Member - MemberType NoteProperty-VM name-value $VM. Name
    $objDisk | Add-Member - MemberType NoteProperty-name of Volume-value $disk. Path
    $objDisk | Add-Member - MemberType NoteProperty-CapacityMB name-value ([math]: round ($disk.) Capacity / 1 MB))
    $objDisk | Add-Member - MemberType NoteProperty-FreeSpaceMB name-value ([math]: round ($disk.) FreeSpace / 1 MB))
    $objDisk | Add-Member - MemberType NoteProperty - percent use of name-value ('{0:p2}' f (($disk.))) Capacity - $disk. FreeSpace) / $disk. Capacity))
    $objDisk | Add-Member - MemberType NoteProperty-name CustomFields-value ($VM. CustomFields)
    $objDisk
    }
    }
    }

    Get - VM * | Get-VMGuestDiskUsage | Export-Csv - NoTypeInformation c:\scripts\output\test.csv

    Any help is greatly appreciated!  Also please let me know if I did a poor job explaining the scenario and what I'm after here.

    Hello, jSun311-

    Because the property "CustomFields" itself is an object, and you try to get out of the strings to the CSV format, you must manage the object.  You can replace the line in question by something like:

    $objDisk | Add-Member -MemberType NoteProperty -Name CustomFields -Value (($VM.CustomFields | %{"$($_.Key) = $($_.Value)"}) -join ",")
    

    Which would result in the output for the column that might look like:

    dTestAttrib0 = someValue,dTestAttrib1 = AnotherValue
    

    In other words, there is a list separated by characters of the key/value pairs in the CustomFields property for the virtual machine.

    In addition, if you are interested, you might be able to clean up your code a bit by using the '-property ' New-Object parameter.  As:

    ...foreach ($disk in $VM.Guest.disks) {    New-Object PSObject -Property @{        VM = $VM.Name        Volume = $disk.Path        CapacityMB = [math]::Round($disk.Capacity / 1MB)        FreeSpaceMB = [math]::Round($disk.FreeSpace/1MB)        "Usage%" = "{0:p2}" -f (($disk.Capacity - $disk.FreeSpace) / $disk.Capacity)        CustomFields = ($VM.CustomFields | %{"$($_.Key) = $($_.Value)"}) -join ","    } ## end new-object} ## end foreach...
    

    In this way, you shouldn't bother with calls Add-Member and repetitive cases here.  Enjoy.

  • Export-Csv several files

    It is asked that we list all powered on virtual machines in a cluster to backup purposes.  I am able to get this information into a CSV file.  However, the backup engineer want a single file for each proxy server that uses this file to save these list of virtual machines.

    A simple way to do this is the same as this:

    # Author: Rhys Campbell
    # 2009-09-22
    # Split csv files
    # Path to the csv file. Must contain a sequential unique whole ID column
    $csvFile = "$Env:USERPROFILE\bigcsvFile.csv";
    # Slot in how many files?
    $split = 10;
    # Get the content of the csv file
    $content = import-Csv $csvFile.
    # If we start with Id = 1 in the csv file
    $start = 1;
    $end = 0;
    documents calc # per file
    $records_per_file = [ent] [Math]: ceiling ($content.) Count / $split);
    for ($i = 1; $i - $split; $i ++)
    {
    # Set the value of end of selection of records
    $end += $records_per_file;
    # Need to cast to int or we get an alphabetical comparison when we want a digital
    $content | Where-Object {[int] $_.} ID - ge $start - and [int] $_. ID - the $end} | Export-Csv-Path "$Env:USERPROFILE\file$ i.csv '-NoTypeInformation;
    # Update the starting value for record selection
    $start = $end + 1;
    }

    Credit source: http://www.youdidwhatwithtsql.com/splitting-csv-files-with-powershell/374

    I think that the next PowerCLI script will do the job.

    param($Cluster,
          $NumberOfProxyServers = 3,
          $FileName = 'proxy')
    
    $VMs = Get-Cluster $Cluster |
           Get-VM |
           Sort-Object -Property Name
    
    $NumberOfVMs =$VMs.Count
    $NumberOfVMsPerProxyServer = $NumberOfVMs/$NumberOfProxyServers
    
    for($i = 0; $i -lt $NumberOfProxyServers; $i++)
    {
      $Range = (($i*$NumberOfVMsPerProxyServer)..(($i+1)*$NumberOfVMsPerProxyServer-1))
      $VMs |
      Select-Object -Property Name |
      Select-Object -Index $Range |
      Export-Csv -Path "$FileName$i.csv" -NoTypeInformation -UseCulture
    }
    

    Save the script as a .ps1 file, for example, New - VMProxyFile.ps1 and run it as:

    . \New-VMProxyFile-cluster "YourClustername".

    Proxy file numbers starting by 0. I hope this isn't a problem.

  • Helps Export-CSV

    $vms = Get-VM -rental "somehost"

    foreach

    ($vm in $vms){

    $vmobj_hds = $vm. Hard drives

    foreach ($vmhd in $vmobj_hds){

    Write-Host $vm. Name, $vmhd. File name}

    }

    I need to change that to Write-Host to Export-CSV with the following titles, the name of VM, HardDisk2 1 hard disk, etc. 1 hard disk should be the. HarDisk.Filename info. I've always had problems with the select - export-csv cmdlets and property. Any help would be appreciated.

    Hello BrianGordon84-

    Try something like:

    ## get the VMs, sort descending by number of harddisksGet-VM | Sort @{e={($_.ExtensionData.Config.Hardware.Device | ?{$_ -is [VMware.Vim.VirtualDisk]}).count}} -Descending | %{    $vm = $_    ## make an object in which to put the info    $oInfo = New-Object -Type PSObject -Property @{VMname = $vm.Name}    ## for each harddisk, add a property to the info object with the harddisk name and filename    Get-HardDisk -VM $vm | %{        $oInfo | Add-Member -MemberType NoteProperty -Name $_.Name -Value $_.Filename    } ## end foreach-object    ## return the info object    $oInfo} | Export-Csv -NoTypeInfo C:\temp\vmDiskInfo.csv
    

    Sorting after the Get - VM is there to ensure that the first exported object has most of the hard drives, which is what makes the exported CSV have the right number of columns.  The headers in the CSV file are made based on the first object out.

    The code could be optimized a bit by using Get - view, but your question was about the Export-Csv.

    How do I?

  • How to ignore differences in column order when importing

    Hello

    There are pre cafee morning drowsiness, but I can't find a feature expected, please tell me a solution (I promise to get a coffee then).

    Importing a DDL file in my model. The patterns dialog 'compare' perfectly shows me where the difference is between my case and model.

    Under the 'Détails' tab, it shows some of my paintings have differences in the 'order of column' since the DDL file.

    For now I don't want to know these differences.

    Under 'options' > 'Compare the options', I turned off the checkbox "Use"column Order property.

    And clicked "refresh the tree."

    But it still shows the difference in the order of the columns.

    Can someone point me in the right direction?

    Thanks in advance for any response

    concerning

    Wouter

    .

    Hi Wouter,

    Updated answer:

    The property 'Use column order' does not affect whether or not the order of columns is highlighted a difference.

    What it do is to control whether or not the property of the order of the columns is selected if there is a difference.

    If the Order of columns property is not selected, it is ignored when you perform a merge or a glimpse of the DOF.

    If you do not want a difference in column order to be highlighted at all, you can select Properties filter under the Options node.

    Then in the right panel select Tables and uncheck the 'Included' the order of the columns.  Finally click on the button refresh trees.

    Kind regards

    David

  • Compare models does not take into account property "columns order.

    Hello

    This looks like a bug:

    After doing some restructuring on a table the models compare- dialog box displays columns levels between the model and the database, which is correct. I'm not interested in the reorganization of the physical table, but I still want to keep the model table in a certain order of column.

    Now in the 'options' - tab the options 'compare' and then I unchecked use 'Order of columns' property, press to refresh the trees. NO CHANGE!

    If no action is displayed in the DOF-preview (which is a good point of ) tree still shows the differences in the order of the columns that are not relevant for me. What I want to achieve is: the tree is must signpost: there is nothing to do on the database, despite the different orders of columns.

    Thank you, Dieter

    (it is for version 4.0.2 on Oracle 10 g

    Hi Dieter,

    When 'Column Order' property to use option is not set, a difference in the order of the columns will always appear as a difference, but the Order property of columns is initially not selected on the Details tab (although the user can still select if he wishes).  This means that (unless she is then selected by the user), the difference will not affect the DOF preview and it will not be merged in a merger.

    The order of the columns can be completely excluded in the comparison by going to the Options tab and then selecting the tab filter properties, then selecting Tables on the left side of the Panel and marking the Order of columns excluded property.

    The button refresh trees can be used to refresh the tree, ignoring the Order of the columns property.

    Kind regards

    David

  • UseCulture - Import/Export-Csv - switch. What is it?

    Salvation;

    I've seen a lot of references for the parameter - UseCulture importing content or exporters results of scripts to/from csv files. I tried in vain to find a real description or purpose of this function. Can anyone help direct me as to where I can find it or clarify on this setting?

    Thank you. Ron

    It forces the cmdlet Export-Csv to use the separator used in your locale to use.

    By default there is a comma, but in other regions, it may for example be a semicolon.

    See also Export CSV with Culture-specific separator

  • Virtual MACHINE created on date export csv - get - vm testvm works but says testvm get-vmcreationdate is not found.

    Hello

    I entered the following two functions in my shell powercli

    Two functions I have installed

    function {Get-VMEvents

    < #.

    . Logbook

    Get events for an entity or query all events.

    . Description

    This function returns the events for the entities. It is very similar to

    cmdlet Get-vievent. Please note that get-VMEvent can handle 1 vm at a time.

    You can't send picture of vms in this version of the script.

    . Example of

    Get-VMEvents 0All-types "VmCreatedEvent", "VmDeployedEvent", "VmClonedEvent".

    He will receive all events of type "VmCreatedEvent", "VmDeployedEvent"

    'VmClonedEvent '.

    . Example of

    Get-VMEvents-name 'vm1' - type 'VmCreatedEvent '.

    Will be out of the events of creation of virtual machine: "vm1. It's faster than the vms piping is of

    result of Get - vm. There is no need to use get - vm to move names to get-vmevents.

    Yet, it is OK when you do, it will be just a little more slow < span class = "wp-smiley wp-emoji wp-emoji-blink of eye" title = ';') > ;) </span >

    . Example of

    Get-VMEvents-name 'vm1' - category 'WARNING '.

    Will be out all events for vm: 'vm1. It is is faster than the names of piping of

    cmdlet Get - vm. Category will get-vmevent to search only the defined category

    events.

    . Example of

    Get - vm "vm1 | Get-VMEvents-types "VmCreatedEvent", "VmMacAssignedEvent".

    Shows events for vm1 which will be regarding the events of creation,.

    and events when when / what mac address is assigned

    . VM parameter

    This setting is a unique string that represents the name of the vm. He expects this single vm name

    There in the virtual Center. Now in the first version of the script, it will only load a case

    where there is 1 instance of vm selected name. In the future it will load multiple as

    Well.

    . Types of parameters

    If none is specified, it will return all the events. If specified will return

    Only the events with selected types. For example: "VmCreatedEvent."

    "VmDeployedEvent", "VmMacAssignedEvent" "VmClonedEvent", etc...

    . Category of a parameter

    Possible categories are: warning, info, error. Please use this setting if you

    you want to filter events.

    . Setting all the

    If you need to set this parameter, so command queries all events

    Center Virtual Server virtual machines.

    . Notes

    NAME: VMEvents

    AUTHOR: Grzegorz Kulikowski

    LASTEDIT: 09/11/2012

    DOES NOT? #powercli @ irc.freenode.net

    . Link

    http://psvmware.WordPress.com

    # >

    (param

    [Parameter (ValueFromPipeline = $true)]

    [ValidatenotNullOrEmpty()]

    $VM,

    [String []] $variétés.

    [string] $category,

    [switch] $All

    )

    $si = get-view ServiceInstance

    $em is get-view $si. Content.EventManager

    $EventFilterSpec = new-Object VMware.Vim.EventFilterSpec

    $EventFilterSpec.Type = $types

    {if ($Category)}

    $EventFilterSpec.Category = $category

    }

    If {($VM)

    $EventFilterSpec.Entity = new-Object VMware.Vim.EventFilterSpecByEntity

    switch ($VM) {}

    {$_-is [VMware.Vim.VirtualMachine]} {$VMmoref = $vm.moref}

    {$_-is [VMware.VimAutomation.ViCore.Impl.V1.Inventory.VirtualMachineImpl]} {$VMmoref = $vm. ExtensionData.moref}

    default {$vmmoref = (get - view - ViewType virtualmachine-filter @{'name' = $VM}) .moref}

    }

    $EventFilterSpec.Entity.Entity = $vmmoref

    $em. QueryEvents ($EventFilterSpec)

    }

    If {($All)

    $em. QueryEvents ($EventFilterSpec)

    }

    }

    function get-vmcreationdate {}

    < #.

    . Logbook

    Gets if possible virtual machine created.

    . Description

    This function will return the object with information about the creation time, method, of months,.

    creator of particular virtual machine.

    VMname: SomeVM12

    Createduserid: 10/08/2012 11:48:18

    CreatedMonth: August

    CreationMethod: cloned

    Creator: office\greg

    This function displays NoEvent property in case when your VC do not

    more information on these specific events, or your vm events no longer have

    entries for the subject being created. If your VC data base has more tension date it is no longer possible

    you find this event.

    . Example of

    Get-VMCreationdate - VMnames 'my_vm1', 'My_otherVM '.

    This will return items that contain date information of creating virtual machines with names

    myvm1 and myvm2

    . Example of

    Get-VM-location 'Cluster1 | Get-VMCreationdate

    This will return items that contain information created for virtual machines that are

    Located in Cluster1

    . Example of

    Notice-EEG - viewtype virtualmachine - SearchRoot (get-datacenter "mydc") user.user | Get-VMCreationDate

    This will return items that contain information created for virtual machines that are

    located in the data center "mydc" container If you use this feature in an existing loop where you

    having the cmdlet get-view virtual machines, you can pass them via pipes or as a parameter VMnames.

    . Example of

    $report = get-cluster "cl-01' | Get-VMCreationdate

    $report | Export-csv c:\myreport.csv

    Stores all reported creationtimes object in the array $report variable and export the report to a csv file.

    You can also filter the report before you write in the csv file using select

    $report | Where-Object {$_.} {CreatedMonth - eq "October"} | Select VMName, CreatedMonth

    So that you see only the vms that have been created in October.

    . Example of

    Get-vmcreationdate - VMnames "my_vm1", testvm55

    WARNING: my_vm1 is not found, typo?

    VMname: testvm55

    Createduserid: 05/10/2012 14:24:03

    CreatedMonth: October

    CreationMethod: NewVM

    Creator: home\greg

    In case when you receive virtual machine that is not appropriate in the infrastructure of yor, a warning is displayed.

    You can always store the full text of the report in the $report variable, but it includes all the information on

    dates of creation of the missing vm. A warning always only for your information there is

    probably a typing mistake in the name of the virtual machine.

    . Parameter VMnames

    This parameter must contain objects of virtual machine or strings representing vm

    names. It is possible to supply this function wiith VM objects coming from get - vm or

    get - view.

    . Notes

    NAME: Get-VMCreationdate

    AUTHOR: Grzegorz Kulikowski

    LASTEDIT: 27/11/2012

    DOES NOT? #powercli @ irc.freenode.net

    . Link

    http://psvmware.WordPress.com

    # >

    (param

    [Parameter (ValueFromPipeline = $true, mandatory = $true)]

    [ValidateNotNullOrEmpty()]

    [Object []] $VMnames

    )

    {in process

    {foreach ($vm to $VMnames)

    $ReportedVM = "" | Select VMname Createduserid, CreatedMonth, CreationMethod, creator

    If ($CollectedEvent = $vm |) Get - VMEvents - types "VmBeingDeployedEvent", "VmRegisteredEvent", "VmClonedEvent", "VmBeingCreatedEvent" - ErrorAction SilentlyContinue)

    {

    If ($CollectedEvent.GetType ().) IsArray) {$CollectedEvent = $CollectedEvent |?} {{$_-is [vmware.vim.VmRegisteredEvent]}}

    $CollectedEventType = $CollectedEvent.gettype () .name

    $CollectedEventMonth = "{0: MMMM}" $CollectedEvent.CreatedTime f

    $CollectedEventCreationDate = $CollectedEvent.CreatedTime

    $CollectedEventCreator = $CollectedEvent.Username

    Switch ($CollectedEventType)

    {

    "VmClonedEvent" {$CreationMethod = "Cloned"}

    "VmRegisteredEvent" {$CreationMethod = "RegisteredFromVMX"}

    "VmBeingDeployedEvent" {$CreationMethod = "VmFromTemplate"}

    "VmBeingCreatedEvent" {$CreationMethod = "NewVM"}

    default value {$CreationMethod = 'Error'}

    }

    $ReportedVM.VMname = $CollectedEvent.vm.Name

    $ReportedVM.CreatedTime = $CollectedEventCreationDate

    $ReportedVM.CreatedMonth = $CollectedEventMonth

    $ReportedVM.CreationMethod = $CreationMethod

    $ReportedVM.Creator = $CollectedEventCreator

    } else {}

    If ($?) {

    If ($vm - is [VMware.Vim.VirtualMachine]) {$ReportedVM.VMname = $vm.name} else {$ReportedVM.VMname = $vm.} ToString()}

    $ReportedVM.CreatedTime = 'NoEvent.

    $ReportedVM.CreatedMonth = 'NoEvent.

    $ReportedVM.CreationMethod = 'NoEvent.

    $ReportedVM.Creator = 'NoEvent.

    } else {}

    $ReportedVM = $null

    Write-Warning "$VM is not found, typo?

    }

    }

    $ReportedVM

    }

    }

    }

    Now, if I use the first command

    Get - vm testvm

    I get a response of

    Name PowerState Num CPU MemoryGB

    ----                 ---------- -------- --------

    Receiving TestVM 4 4,000

    But if I do

    Get-vmcreationdate testvm

    he responds with

    WARNING: testvm is not found. misspelling?

    I can't understand why he says this?

    What will be the final objective to query the server vcenter set and export a CSV of the creation of each day VM - is their an easier way to do it?

    I was intending to use

    get - vm | Get-VMCreationDate | Export-Csv-path "d:\\reports\vmcreationinventory.csv ".

    But at the present time, each unique virtual machine is indicating "is not found."

    Attached is an example with a virtual machine called gbvls

    Although you may be better communicate with the author of these functions, from what I can tell, it seems to indicate that none of the specified events were found for these virtual machines.

    You can check if there are targeted with the cmdlet Get-VIEvent ordinary events.

    If you can see events, there could be a problem with the Get-VMEvents function.

    $vmName = 'testvm '.

    $tgtEvents = "VmBeingDeployedEvent", "VmRegisteredEvent", "VmClonedEvent", "VmBeingCreatedEvent".

    $vm = get-VM-name $vmName

    Get-VIEvent-body $vm - MaxSamples ([int]: MaxValue) |

    Where {$tgtEvents - contains $_.} GetType(). Name}

  • Need help with an Export-CSV and ForEach loop

    Hi guys, I'm total NOOB in CLI so please forgive the stupid question.

    I need your expert advice for the very large environment and will award points.

    I have a working script that alerts to our logout ESXi hosts, maintenance and NotResponidng mode

    His job well, but need to send a mail to all three of our VCenters

    Current script only works for a VC at a time. How do I ForEach and always the hose of the same body CSV and HTML

    It would be nice to have an HTML and CSV output that looks like this (assuming that there are currently disconnected etc.)

    I have a set of credentials, that work on all 3 of my VC

    VC1

    Host1 disconnected

    Host2 NotResponding

    VC2

    Host3 disconnected

    Host4 NotResponding

    VC3

    No disconnected/maintemance/notresponding hosts for VC3

    Here is my current code, etc. of the hidden passwords >

    # Clear old sessions
    Disconnect VIServer VC01-confirm: $false

    # VC01 VC check for disconnection and Maintenance mode and does not
    SE connect-VIServer-Server VC01 - FakeUSer username-password FakePassword

    $Report = get-VMhost-State disconnected, maintenance, NotResponding | SELECT name, connectionstate

    # scan info to be html and give him a date stamp

    $ReportHtml = $report | ConvertTo-Html | Out-string

    # Write CSV file and give it a character of data

    $filePath = "C:\PS\Output".
    $filename = "VC01disconnectedHosts".
    $CurrentDate = get-Date
    $CurrentDate = $CurrentDate.ToString ('MM-dd-yyyy_hh-mm-ss')

    $Report | Export-Csv "C:\PS\Output\VC_$Currentdate.csv".

    # Send the info by Mail

    Send-MailMessage-to [email protected] - subject VMwareMorningcheckVC01$ CurrentDate '
    SmtpServer - mail.sanlam.co.za - from [email protected] '
    -BodyAsHtml-body $reportHtml - accessories 'C:\PS\Output\VC_$CurrentDate.csv '.

    Thank you in advance for help.

    You could use a ForEach loop through all vCenters and combine the results in a $1 report.

    Something like that

    $vCenters = "VC01","VC02","VC03"
    
    # Clear old sessionsDisconnect-VIServer $vCenters -Confirm:$false
    
    $report = @()# Check VC VC01 for Disconnects and Maintenance mode and Not Respondingforeach($vc in $vCenters){  Connect-VIServer -Server $vc -User FakeUSer -Password FakePassword
    
      $Report += (Get-VMhost -State Disconnected,Maintenance,NotResponding | Select @{N="VC";E={$vc}},name ,connectionstate)  Disconnect-VIServer $vc -Confirm:$false}
    
    # parse info to be html ,and give it date stamp
    
    $ReportHtml = ($report | ConvertTo-Html | out-String)
    
    # Write out CSV file and give it a Data Stamp
    
    $CurrentDate = Get-Date -Format 'MM-dd-yyyy_hh-mm-ss'$filename = "C:\PS\Output\DisconnectedHosts-$($CurrentDate).csv"
    
    $Report | Export-Csv -Path $filename -NoTypeInformation -UseCulture
    
    # Send info with Mail
    
    Send-MailMessage -To [email protected] -Subject VMwareMorningcheck$CurrentDate `-SmtpServer mail.sanlam.co.za -From [email protected] `-BodyAsHtml -Body $reportHtml -Attachments "C:\PS\Output\DisconnectedHosts-$($CurrentDate).csv"
    

    I added the property vCenter for each line in the report

  • Export-Csv not generating expected results


    I'm trying to generate a report from the script of grouping of NETWORK cards, but given the following code I will have to create Excel object and define its elements?

    The Export-Csv option does not work as I expect in this case. Thank you for your help.  The following code:

    ($VMHost in Get-VMHost){

    Foreach ($vSwitch in ($VMHost | Get-VirtualSwitch )){

    $NicTeaming = Get NicTeamingPolicy -VirtualSwitch $vSwitch

    $obj = new-object psobject

    $obj | Add Member -membertype NoteProperty -name home -value $VMHost

    $obj | Add Member -membertype NoteProperty -name vSwitch -value $vSwitch

    $obj | Add Member -membertype NoteProperty -name NumPorts -value $vSwitch. NumPorts

    $obj | Add Member -membertype NoteProperty -name NumPortsAvailable -value $vSwitch. NumPortsAvailable

    $PG = $vSwitch | Get-VirtualPortGroup

    If ($PG. Count-gt 1){

    $obj | Add Member - membertype NoteProperty -nom échanges -valeur ([string] ::join()«, », ($PG)))

    }

    Else {}

    $obj | Add-Member - membertype NoteProperty-trade name-value $PG

    }

    $obj | Add-Member - membertype NoteProperty - name BeaconInterval-$NicTeaming.BeaconInterval value

    $obj | Add-Member - membertype NoteProperty - name LoadBalancingPolicy-$NicTeaming.LoadBalancingPolicy value

    $obj | Add-Member - membertype NoteProperty - name NetworkFailoverDetectionPolicy-$NicTeaming.NetworkFailoverDetectionPolicy value

    $obj | Add-Member - membertype NoteProperty - name NotifySwitches-$NicTeaming.NotifySwitches value

    $obj | Add-Member - membertype NoteProperty - name FailbackEnabled-$NicTeaming.FailbackEnabled value


    If ($NicTeaming.ActiveNic - gt 1) {}

    $obj | Add-Member - membertype NoteProperty-ActiveNic name-value ([string]: join (",", ($NicTeaming.ActiveNic)))

    }

    Else {}

    $obj | Add-Member - membertype NoteProperty - name ActiveNic-$NicTeaming.ActiveNic value

    }

    If ($NicTeaming.StandbyNic - gt 1) {}

    $obj | Add-Member - membertype NoteProperty-StandbyNic name-value ([string]: join (",", ($NicTeaming.StandbyNic)))

    }

    Else {}

    $obj | Add-Member - membertype NoteProperty - name StandbyNic-$NicTeaming.StandbyNic value

    }

    If ($NicTeaming.UnusedNic - gt 1) {}

    $obj | Add-Member - membertype NoteProperty-UnusedNic name-value ([string]: join (",", ($NicTeaming.UnusedNic)))

    }

    Else {}

    $obj | Add-Member - membertype NoteProperty - name UnusedNic-$NicTeaming.UnusedNic value

    }

    $obj | Add-Member - membertype NoteProperty - name CheckBeacon-$NicTeaming.CheckBeacon value

    $obj

    $Report += $obj

    }

    $Report = $Report | Sort-Object VMName

    IF ($Report - don't ' ")

    {$Report |} {Export-Csv NIC - Teaming.csv}

    }

    You declare $report in a table?

    On the first line

    $report = @)

  • result of foreach not getting attached to the export-csv

    Hello people,

    I am trying to learn powercli. I use under commads to get information for VMs. looks like the results not add in the csv file. CSV file shows the result of the latest VM in import-csv file.

    Q1 - can you please help identify what is bad in the commands below?

    Q2 - How can I use a single export-csv command to get an output of lines both (get - vm and get-cluster)?

    $vmname = import-csv "C:\vmname.csv".
    {foreach ($_.name in $vmname)}
    Get - vm $_.name | Select 'Name', 'Host ' | export-csv - UseCulture - NoTypeInformation C:\vmname-host-info.csv
    Get-cluster - vm $_.name | Select 'name ' | export-csv - UseCulture - NoTypeInformation C:\vmcluster-info.csv}

    Thank you!

    You're crushed the CSV file with each iteration of the loop.

    Why do you want to produce 2 CSV files? Is it not easier to keep all the info in 1 file?

    Her you could do something like that

    $vmname = import-csv "C:\vmname.csv".
    & {{foreach ($_.name in $vmname)}}
    Get - vm $_.name | Select 'Name","Host",@{N="Cluster '; E = {Get-Cluster - VM $_______ |} Select name - ExpandProperty}}

    }} | Export-csv - UseCulture - NoTypeInformation C:\vm-info.csv

    But the best is to use the track more PowerShell

    $vmname = import-csv "C:\vmname.csv".

    Get-VM-name $vmname |

    Select Name,Host,@{N="Cluster; E = {Get-Cluster - VM $_______ |} Select name - ExpandProperty}} |

    Export-csv - UseCulture - NoTypeInformation C:\vm-info.csv

  • Strange output from Get - VM... A cruise ship Export-CSV

    If I type this in PowerCLI I get expected results

    Get-Datacenter -name "name of my datacenter" | Get-VM | Where { ($_ | Get-CDDrive).ISOPath } | FT -auto Name, @{Label="OS"; Expression = { $_.Guest.OSFullName }}, @{Label="ISO file"; Expression = { ($_ | Get-CDDrive).ISOPath }}

    But if I try to export to a CSV file

    Get-Datacenter -name "name of my datacenter" | Get-VM | Where { ($_ | Get-CDDrive).ISOPath } | FT -auto Name, @{Label="OS"; Expression = { $_.Guest.OSFullName }}, @{Label="ISO file"; Expression = { ($_ | Get-CDDrive).ISOPath }} | Export-CSV virtual_machines_mounted_ISO.csv

    I get output like this:

    #TYPE Microsoft.PowerShell.Commands.Internal.Format.FormatStartData
    "ClassId2e4f51ef21dd47e99d3c952918aff9cd","pageHeaderEntry","pageFooterEntry","autosizeInfo","shapeInfo","groupingEntry"
    "033ecb2bc07a4d43b5ef94ed5a35d280",,,"Microsoft.PowerShell.Commands.Internal.Format.AutosizeInfo","Microsoft.PowerShell.Commands.Internal.Format.TableHeaderInfo",
    "9e210fe47d09416682b841769c78b8a3",,,,,
    "27c87ef9bbda4f709f6b4002fa4af63c",,,,,
    "27c87ef9bbda4f709f6b4002fa4af63c",,,,,
    "27c87ef9bbda4f709f6b4002fa4af63c",,,,,
    "27c87ef9bbda4f709f6b4002fa4af63c",,,,,
    "27c87ef9bbda4f709f6b4002fa4af63c",,,,,
    "27c87ef9bbda4f709f6b4002fa4af63c",,,,,
    "27c87ef9bbda4f709f6b4002fa4af63c",,,,,
    "27c87ef9bbda4f709f6b4002fa4af63c",,,,,
    

    What Miss me?

    Try to replace the 'FT-auto' by 'Select-Object.

  • Convert a CSV column value before loading

    Hello

    I have a timestamp value in the CSV file as 23/10/2013-02:26

    I load the CSV into a table with the column DATE data type.

    I'm new to APEX and am not sure how to set up the Transformation rules.

    Can anyone help?

    Thank you.

    You're silently casting a string to a number (and not a date).

    Try this:

    declare
      l_input_from_csv varchar2(20) := '9/4/2013 1:54:23 AM';
      l_date date;
    begin
      l_date := to_date( l_input_from_csv, 'MM/DD/YYYY HH12:MI:SS AM');
      return l_date;
    end;
    

    HOWEVER - I think that APEX will convert the date data type return type string data (which is not what you want).

    Assuming you are using the data loader in your application:

    The first page/step of the application process for the separator file, etc.

    The second page/step asks you to assign the column in the TABLE to CSV column (*.)

    --including any "special formatting" that must take place.

    -It's on THIS page you will add to the FORMAT string appropriate to the appropriate text box. (empty the area below the drop-down list)

    -based on my experience, APEX will run the command to_date() using this "format string" you.

    The third page/step is a verification step

    The 4th page/step shows you what has been done.

    MK

Maybe you are looking for