Skip to main content

Calling PS1 from VBS and gotchas with cmdletbindingattribute() - Part 2

This post is in continuation of my previous post where things got interesting while trying to execute a PS1 from a VBScript which will start/stop the website.

At the end of post there was this interesting case where we tried to stop a website which did not exist ...But we would always get a Return code of 0 ...or Success message.

Now that is bad for a Production Script as it should fail if we didn't give the correct website name.

So for this post my sample VBScript will remain almost same with only one modification.....on the website name (in Bold Red below):

Set objShell = CreateObject("WScript.Shell")
strCommand = "powershell.exe -noprofile -file C:\temp\test2.ps1 -websitename WebSiteDoesnotExist -action stop -verbose"

strError = objshell.run(strCommand,1,True)
If strError then
                        
    WScript.Echo "Failed with Exit Code" & strError & "."
else
    WScript.echo "Success"
endif 

So what could be the issue...So I tried to execute a simple PS1 first to check if it returns back the proper Exit code to the caller VBS. I used the below PS1 for testing:


Now Let's run this PS1 from the sample VBS (have to change the path of the PS1 to C:\temp\Dex1.ps1 )




Hmmm...still success which means a zero exit code is being returned.
Now let's try a very very minimal PS1 with one line (named it Dex2.ps1)



Let's give this a run:


Voila ! that works.......So I went back tried a few things and it appears if I use the cmdletbinding() attribute to make this an advanced function it doesn't work. Strange cause I tried the same thing in my Windows 7 machine and it works.

So at last below is my machine specs where I was trying this out:




At the end would just say that PowerShell sometimes behaves in an erratic way....but there is a way out, always and in the process you might learn something new :)





Popular posts from this blog

Test connectivity via a specific network interface

Recently while working on a Private cloud implementation, I came across a scenario where I needed to test connectivity of a node to the AD/DNS via multiple network adapters.  Many of us would know that having multiple network routes is usually done to take care of redundancy. So that if a network adapter goes down, one can use the other network interface to reach out to the node. In order to make it easy for everyone to follow along, below is an analogy for the above scenario: My laptop has multiple network adapters (say Wi-Fi and Ethernet) connected to the same network. Now how do I test connectivity to a Server on the network only over say Wi-Fi network adapter?

PowerShell + SCCM : Run CM cmdlets remotely

Today I saw a tweet about using implicit remoting to load the Configuration Manager on my machine by Justin Mathews . It caught my eye as I have never really tried it, but theoretically it can be done. Note - The second tweet says "Cannot find a provider with the name CMSite", resolution to which is in the Troubleshooting section at the end.

PowerShell + WPF + GUI : Hide (Use) background PowerShell Console

Few years back, I had started wrapping my PowerShell scripts with some sort of GUI built using Windows Forms (used Primal Forms CE mostly). Things went fine for a while but then I stumbled across awesome posts by MVP Boe Prox on using WPF with PowerShell to do the same. (check Resources section) I had been procrastinating the idea of playing with WPF for a while but then had a great discussion with MVP Chendrayan (Chen) and got inspired to do it. One can use Visual Studio (Express Edition - which is free) to design the UI and then consume the XAML in PowerShell script...Isn't that Cool ! See resources section for links on that. Often when we write the Code to present a nice UI to the end user there is a PowerShell console running in the background. In this post I would like to share a trick to hide/show the background console window. This trick works with both Winforms and XAML. Note - PowerGUI & Visual Studio Express are absolutely FREE ! For the demo o...