Quantcast
Channel: VMware Communities : All Content - All Communities
Viewing all articles
Browse latest Browse all 175326

Command line test program

$
0
0

Hi,

 

I dont know if this is the right place for this but I think it might come in handy in the context of appvolumes.

if it needs to be put somewere else feel free to move it to another section of the forum.

 

While trying to automate installations to create appstacks, which I do in powershell I often run into the issue that my arguments are not parsed the right way,

this usually happens when I need to combine a lot of argumenst with the -ArgumentList option in powershell.

 

Since it sometimes is hard to track what actually happens I wrote a small program which can be used to replace the executable you want to install.

The program wil show you the way the arguments are fed to the executable.

 

Its a very small and actually very easy program to make but it really helps me so it might also help others.

 

I'll add the source to this post, and will explain the code a bit too within the code with some remarks.

 

Public Class Form1    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load        Dim commandlimeargs As String() = Nothing        'get commandline parameters        commandlimeargs = Environment.GetCommandLineArgs()        For i = 0 To commandlimeargs.Length - 1            'create nice numbering of parameters to keep stuff alinged            If i < 10 Then                TextBox1.Text = TextBox1.Text & "Parameter 0" & i & " = " & commandlimeargs(i).ToString & vbCrLf            Else                TextBox1.Text = TextBox1.Text & "Parameter " & i & " = " & commandlimeargs(i).ToString & vbCrLf            End If        Next        'set cursor at the end of the texttbox        TextBox1.SelectionStart = TextBox1.Text.Length    End Sub    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click        Me.Close()    End Sub    Private Sub AboutToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AboutToolStripMenuItem.Click        'show teh about form        frmAbout.ShowDialog()    End Sub    Private Sub Form1_Resize(sender As Object, e As EventArgs) Handles Me.Resize        'some resizing logic        TextBox1.Width = Me.Width - 40        Button1.Left = Me.Width - Button1.Width - 28        TextBox1.Height = Me.Height - 100        Button1.Top = Me.Height - 65    End Sub
End Class

 

The program in action with some bogus parameters

 

Execution string :

 

Start-Process -PassThru -Wait -FilePath "c:\cmdtest.exe" -ArgumentList"/admin","/a","/I","/L*","`"D:\!TestMap\Log\CMDtest.log`"","/n","/q","/s","/v","/Passive","/norestart","REBOOT=ReallySuppress","/qn","/test bla /reboot=True","/adminfile","`"D:\!TestMap\Software Root\Transform_File.MSP`"","/config","`"D:\!TestMap\Software Root\Config_File.XML`""

 

In powershell :

 

cmd1.PNG

 

Result :

 

cmd2.PNG

In this case you can see the first argument is not right since -argumentlist/admin should have been split

this happend because I forgot a space between -ArgumentList"/admin"

 

The right string would be :

 

Start-Process -PassThru -Wait -FilePath "c:\cmdtest.exe" -ArgumentList "/admin","/a","/I","/L*","`"D:\!TestMap\Log\CMDtest.log`"","/n","/q","/s","/v","/Passive","/norestart","REBOOT=ReallySuppress","/qn","/test bla /reboot=True","/adminfile","`"D:\!TestMap\Software Root\Transform_File.MSP`"","/config","`"D:\!TestMap\Software Root\Config_File.XML`""

 

This will give this result :

 

cmd3.PNG

 

Every parameter on a separate line which is the right way.

It really saved me quite some time debugging my scripts hope it helps others too.

 

I also started a project to save and generate powershellscripts trough gui for easy installs, but never got to finishing it, I might start working on that one again too if there is any interest, maybe even start a blog about it so let me know if you think it might be usefull.

 

Mark


Viewing all articles
Browse latest Browse all 175326

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>