Automation

 View Only
  • 1.  Compiling PowerCLI Scripts

    Posted Sep 13, 2017 01:25 PM

    Has anyone had success with compiling powercli scripts into an executable? We are using powercli and the horizon modules to automate the process of building VM's and the script works great as a .ps1 file. However the script has a password in it to login to the horizon server and as a result i wanted to make some kind of effort to hide the password by compiling it into an executable. However when i use powergui to compile into executable the script stops working and gives various errors. Has anyone had any success with compiling powercli scripts? Anyone have any advice for the problem i am experiencing?



  • 2.  RE: Compiling PowerCLI Scripts

    Posted Sep 13, 2017 02:23 PM

    You could use the PS2EXE tool, as documented in How To Convert a PowerShell Script into an EXE File

    But be aware that this is not the ideal way to "hide" password.

    Someone who knows about Base64 encoding can easily extract your password.

    And another tip, I think it's time to stop using PowerGui.

    It's not developed anymore, and it doesn't support all features in the more recent PowerShell versions.

    Perhaps it's time to look at something like Visual Studio Code.



  • 3.  RE: Compiling PowerCLI Scripts

    Posted Sep 13, 2017 02:29 PM

    i will look into PS2EXE to see if that helps.

    Below is a snippet of the code i am using that requires a password. Do you see another way to handle this?

    invoke-command -computername $connectionserver -scriptblock {

            param($vmname, $vmviewPool, $vmuser)

            

      write-host "Updating Horizon for " $vm -ForegroundColor Green

            $Username = '<USERNAME>'

            $Password = '<PASSWORD>' | ConvertTo-SecureString -AsPlainText -Force

            $Credential = New-Object -TypeName pscredential -ArgumentList $Username,$Password

            $viewServer = "<HorizonServer>"

            add-pssnapin vmware.view.broker

            Get-Module -ListAvailable VMware* | Import-Module

          

            connect-hvserver $viewserver -Credential $credential

           

            #add machine to pool

            add-hvdesktop -pool $vmviewpool -machines $vmname

           

            #add user to VM In pool

            $userresult = get-user -name $vmuser 

            $usersid = $userresult.sid

            $vmresult = get-desktopvm -name $vmname

            $vmMachineID = $vmresult.Machine_id

            update-userownership -machine_id $vmMachineID -sid $usersid

            disconnect-hvserver $viewserver -confirm:$false

    }    -ArgumentList $vmname, $vmviewPool, $vmuser



  • 4.  RE: Compiling PowerCLI Scripts

    Posted Sep 13, 2017 02:41 PM

    PowerShell itself, unfortunately doesn't have a feature to store and retrieve credentials securely.

    But there have been many methods posted.

    I personally find the procedure in Using saved credentials securely in PowerShell scripts rather good.

    But there remains a weak point, you have to protect the AES key in a secure way.

    PowerCLI's New-VICredentialSToreItem also allows to store credentials, but then it becomes a matter of protecting the vicredentials.xml file.



  • 5.  RE: Compiling PowerCLI Scripts

    Posted Sep 13, 2017 02:42 PM

    ok thanks