Admit it… you are a crappy coder. You may be a pretty fair IT Professional, but you cannot script your way out of a paper bag. There’s a support group for you.
Hi, my name is Mitch, and I’m a lousy scripter.
Admittedly I have never been to an AA or NA meeting; I have never really done well with support groups, and the only addiction I ever had I kicked without anyone’s help. However I’ve seen plenty of AA meetings on TV and in movies, and that’s how they usually start.
Recently I wrote an article called iSCSI Virtual Disks: If you have to make a bunch… Use PowerShell! Thanks to one of my loyal readers (who despite or because of their loyalty are always quick to point out when I make a mistake) I realized that despite saying that it did, the script did not actually connect the virtual disks to the iSCSI Target… and I had to find a way to do that before looking stupid for too long.
Here’s the problem… I’m not really a PowerShell guru, just a regular IT guy who realizes the amazing power of the tool. And as was written in an article that went live this week (guest-written by a colleague and friend), while using Google to find samples of scripts is great, there are two spectacular tools to help you on your way.
The first such tool is called Get-Help. You can type that in PowerShell to find out about any cmdlet. Cool!
However what do you do if you know there is probably a cmdlet, but you don’t know what it is? Well, the second one is the Integrated Scripting Environment (ISE). PowerShell’s ISE is the easiest way to build your scripts, whether they are simple, single-line cmdlets, or large, vast, flowing scripts that take up pages and pages.
Step 1: Run PowerShell ISE. This is pretty easy, and if you haven’t figured it out, just click on the Start menu and type ISE.
Step 2: Select your Module.
The PowerShell ISE window is generally divided into three parts: A live PowerShell window, a scripting window, and the Commands list. The Commands section is literally a list of every command and cmdlet in PowerShell… thousands of them. However let’s say you know the command you are looking for has to do with iSCSI Targeting… select that Module from the drop-down list, and all of a sudden your thousands of commands turn to twenty-six.
What I want to do is to map a previously created iSCSI Virtual Disk to an iSCSI Virtual Target… so the top target (Add-IscsiVirtualDiskTargetMapping) sounds pretty spot-on. I’ll click on it, and if this is the first time clicking on a command for this module, I will get the following message:
To import the “iSCSITarget” module and its cmdlets, including “Add-IscsiVirtualDiskTargetMapping”, click Show Details.
When I click Show Details, I am presented with several options. These will differ for every cmdlet, and they will correspond to the optional (and required) command-line switches that I might need.
The Path is going to be the full name and path of the previously created iSCSI Virtual Disk. In my case I created several, but they all look like q:\iSCSIVirtualDisks\Disk1.vhdx. That is what I am going to enter there.
The TargetName is the name of the target I created… in this case it might look like Target1.
It is important that you pay attention to the ComputerName box because as you saw in my previous article, I might name the iSCSI Virtual Disks (my VHDX files) the same thing on each host. When I enter the ComputerName TargetServer1 PowerShell knows to look for Target1 on that server. If you do not enter a ComputerName then it will assume that it should look on the local server… and that could be disastrous, especially if those VHDX files are already otherwise mapped and in use.
The Credential box is exactly what it sounds like… If your user account does not have credentials to execute a command on a remote system, you can use this box to specify alternate credentials.
The Lun box allows you to set the LUN (Logical Unit Number) of the virtual disk. If you are not concerned by this, the default is for the lowest available LUN number to be assigned automatically.
If you want more help, notice that there is a blue circle with a ? right in the window. Click on that, and you get a much more detailed Help dialog than you would get by typing Get-Help Add-IscsiVirtualDiskTargetMapping in the PowerShell window will pop up for you. If you don’t believe me, try them both
So let’s go ahead and populate those fields the way I said:
Once you populate them, there are three buttons at the bottom of the Commands console that you can use:
Run does exactly what you would think… it runs the command with the appropriate switches.
Insert puts the command and switches into your PowerShell (blue) window, but does not execute the command.
Copy is also pretty self-explanatory… it copies it to the clipboard for you to put in the scripting (white) window… or anywhere else you might want to insert it with a Ctrl-V.
So I don’t really know how to script, but I know what I want to accomplish… PowerShell ISE takes me from base-camp to the goal like a Sherpa guiding me on Everest. Yet another way to love PowerShell… and get to know it better!