Showing posts with label powershell. Show all posts
Showing posts with label powershell. Show all posts

Tuesday, December 22, 2015

It's a good time to be a Linux sysadmin!

Linux is everywhere now.  It's on my TV, on my Roku, it's the firmware running my SAN hardware, it's the OS behind all of our virtualization platforms. If you know me, you know my technology passions are for Linux, Perl and pretty much anything running open source.  I started using Linux about 1993/94 when I downloaded SLS from GEnie over my 2400 baud modem.  It was kernel 0.99p11.  It booted Linux and ran off of floppy.  Later, I got a larger copy from GEnie using work's 9600 baud connection.  I had to dialup Indy to get a speed that fast!

Later, when Windows 95 came out, I started running Linux as my desktop and I've stuck with it.  I remember that the guys in my office would always reboot their Windows 95 systems at lunch as a preventative measure to prevent accidental lockups.  One time, just prior to lunch, I distinctly remember Ken yelling "Oh  no!  It locked up and I've been working on that spreadsheet for an hour!" I typed "w" to get my uptime:

[rat@localhost Desktop]$ w
 16:39:19 up 99 days,  8:14,  4 users,  load average: 0.25, 0.25, 0.27


Ha!  They can't keep their desktop up half a day - mine's been up for 99 days and still going.  I think to myself: "Linux - I think I'll keep it."

It's been over 20 years.  I can remember telling someone I worked on Unix and Linux systems.  "Ah, a niche OS, eh?"  "Niche?"  Not really.  Unix/Linux was running the Internet before these guys knew there was an Internet.  It's always been the one to run DNS, web servers, DCHP servers, NTP (time protocol), etc.  It ran all the SMTP (mail) and SNMP (network and hardware monitoring).  Linux WAS the back office of any decent sized IT shop. 

Later, Apple forked BSD Unix into its operating system OSX.  Now Apple was Unix!  I was very much at home on the Apple OSX command line.  Everything was there: Bash shell, Perl, and all the core Unix commands.  Pretty cool. 

Next came Windows PowerShell.  So many of the commands were aliased to bash commands that I was once again at home.  I really like Windows 2012 R2 Core and PowerShell.  Each new version of PowerShell adds more and more bash-like aliases.

And now, Microsoft Azure Cloud Services has dozens of versions of Linux you can deploy in their cloud service.  One estimate was that over 75% of the virtual machines in Microsoft Azure Cloud Service were Linux.  Even better - Microsoft runs AZURE on Linux!!  What's more, the Azure services SDK client also runs on Linux!  It was pretty freaky seeing bash scripts with a Microsoft license boiler plate on them.  And now the Office 360 is coming to Linux!

It's not a niche!  It's not going away.  I'd say that, without fan fare, Linus' OS has finally won.  I saw the future 20 years ago.  It is Linux!!

Merry Christmas everyone!

P.S. Don't forget - Linux is the OS running Android phones and the Raspberry Pi.

References:
http://www.wired.com/2015/09/microsoft-using-linux-run-cloud/

Thursday, December 18, 2014

iSCSI with Powershell and Hyper-V on Windows Core 2012 R2

I found a great link for working with iSCSI drives from Powershell.  The first thing you have to do is turn on iSCSI:

PS C:\Windows\system32> Set-Service -Name MSiSCSI -StartupType Automatic
PS C:\Windows\system32> Start-Service MsiSCSI

Next, tell Windows Server Core where your SAN resides:

PS C:\Windows\system32> New-IscsiTargetPortal -TargetPortalAddress 192.168.12.34
0
 
 
InitiatorInstanceName  :
InitiatorPortalAddress :
IsDataDigest           : False
IsHeaderDigest         : False
TargetPortalAddress    : 192.168.12.34
TargetPortalPortNumber : 3260
PSComputerName         :

I would have thought at this point it would know the iSCSI share but it did not.  Had to run this command:

PS C:\Windows\system32> $target = Get-IscsiTarget
PS C:\Windows\system32> print $target.NodeAddress
Can't find file iqn.2003-06.com.equallogic:0-bf1bf6-56acce3eb-fd0030124795492f-testvol1

PS C:\Windows\system32> Connect-IscsiTarget -NodeAddress $target.NodeAddress

You just need the above TWO commands in black.  I ran the line in red to see what it was looking at (making certain of the IQN before proceeding).  The Connect-IscsiTarget command responds with this:

AuthenticationType      : NONE
InitiatorInstanceName   : ROOT\ISCSIPRT\0000_0
InitiatorNodeAddress    : iqn.1991-05.com.microsoft:testsrv.example.com
InitiatorPortalAddress  : 0.0.0.0
InitiatorSideIdentifier : 412341375678
IsConnected             : True
IsDataDigest            : False
IsDiscovered            : True
IsHeaderDigest          : False
IsPersistent            : False
NumberOfConnections     : 1
SessionIdentifier       : ffffe000cd87c020-4012313700056702
TargetNodeAddress       : iqn.2003-06.com.equallogic:0-bf1bf6-56acce3eb-fd00301...-testvol1                      TargetSideIdentifier    : 4f00
PSComputerName          :

Testing the iSCSI session...

PS C:\Windows\system32> Get-IscsiConnection


ConnectionIdentifier : feffe060cd87c029-1
InitiatorAddress     : 0.0.0.0
InitiatorPortNumber  : 15552
TargetAddress        : 192.168.12.34
TargetPortNumber     : 3260
PSComputerName       :

Looks good so you permanently register it (you don't want your iSCSI volumes disappearing after a reboot after all this).


PS C:\Windows\system32> Get-IscsiSession | Register-IscsiSession

Now, check to see if you have a iSCSI session:

PS C:\Windows\system32> get-IscsiSession


AuthenticationType      : NONE
InitiatorInstanceName   : ROOT\ISCSIPRT\0000_0
InitiatorNodeAddress    : iqn.1991-05.com.microsoft:testsrv.example.com
InitiatorPortalAddress  : 0.0.0.0
InitiatorSideIdentifier : 400301370020
IsConnected             : True
IsDataDigest            : False
IsDiscovered            : True
IsHeaderDigest          : False
IsPersistent            : True
NumberOfConnections     : 1
SessionIdentifier       : bfbfe030cd87c020-400201370020d002
TargetNodeAddress       : iqn.2001-05.com.equallogic:0-af1bf6-66acce3eb-fd02300
                          24795492f-testvol1
TargetSideIdentifier    : 4f00
PSComputerName          :

Looking good.  Now check your drives again:

PS C:\Windows\system32> get-disk

Number Friendly Name                            Operationa Total Size Partition
                                                lStatus                Style
------ -------------                            ---------- ---------- ---------
0      XENSRC PVDISK SCSI Disk Device           Online          88 GB MBR
1      XENSRC PVDISK SCSI Disk Device           Online          40 GB MBR
2      EQLOGIC 100E-00 SCSI Disk Device         Online       77.01 GB RAW

You can see the Dell Equalogic SAN volume has been added as disk number 2.
Now you just need to format the disk and give it a drive letter:

PS C:\Windows\system32> Get-Disk | Where partitionstyle -eq 'raw' | Initialize-D
isk -PartitionStyle MBR -PassThru | New-Partition -AssignDriveLetter -UseMaximum
Size | Format-Volume -FileSystem NTFS -NewFileSystemLabel "iDisk3" -Confirm:$fal
se

DriveLetter FileSystemL FileSystem  DriveType  HealthStat SizeRemain       Size
            abel                               us                ing
----------- ----------- ----------  ---------  ---------- ----------       ----
F           iDisk3      NTFS        Fixed      Healthy      76.91 GB      77 GB

Remember: Get-Disk | Where partitionstyle -eq 'raw' is CRUCIAL if you do not want to initialize a disk with data on it already.

That's it.  You've added an iSCSI drive from the command line.
 

Sunday, December 4, 2011

Powershell, pretty cool afterall

I am really enjoying Powershell.  The ISE is much more useful than I thought and flipping from the shell to notepad is really slick (although I still had to install gVim).  The cmdlets are slicker than I originally gave them credit for.  The default is to list all of the parameters/attributes of the cmdlet I've been experimenting and you can almost always leave them off when there's just one or two parameters.  e.g.

PS > Get-History | Foreach-Object { $_.CommandLine } > c:\temp\
script.ps1
For the exact same results - try the much easier to remember...

PS > get-history > history.txt 
The above works just like you would expect.

I found quite a few other examples that were obviously simplified.  It's a pretty interesting scripting language.  By adding the .Net accessibility, it is as if you have blended Bash and Ruby and some special Windows references thrown in to boot.  I like it.  It looks to be very powerful and handy.  One of the main reasons I didn't like administering Windows is the lack of good sysadmin scripting tools and a poor command line shell.  Powershell fixes that.  Much is familiar too since it uses many Bash commands.

So, I've spent the day patching and armoring my Windows 7 running under OpenBox.  I really like Windows 7 (which is probably why they are coming out with a Windows 8 so soon.)  

With the vastly improved Windows 7, Windows 2008 R2 and Powershell - all in 64 bit - looks like it's going to be a less painful transition that I had thought.  I'm actually really looking forward to it now.