Job’s resource requirements not satisfied

Wednesday, November 12th, 2014

LSF had an odd message for a user.

Job’s resource requirements not satisfied

This could go in many ways and waste time reviewing the resource configuration for the server.

Many things were checked and in the end; the problem simply the server was administratively closed.

Once opened; jobs flowed again.

The remote session was disconnected because there are no Remote Desktop LIcense Servers

Monday, November 3rd, 2014

Remote Desktop is one of things administrators use throughout their day. It’s very useful and greatly missed when it does not work.

A user reported he had lost access to a 2012 server running remote desktop services. The server pinged and I was able to get to the hidden share.  However, when I attempted a Remote Desktop Connection; I received:

The remote session was disconnected because there are no Remote Desktop License Servers available to provide a license.  Please contact the server administrator.

Most likely the Remote Desktop Service had been running in trial mode and the grace period had expired. This server was located in another building and I was not interested in driving over.

Many people don’t know or simply forget there is a command line ability for remote desktop. You can by pass the licensing problem and get access by running the following from the Run command:

mstsc /admin

This will disable licensing for the session.  Basically; you are accessing the server through administrative mode only.

For more command line information, you can look at this.

Server 2012 changed many things.  It changed the way you manage Remote Desktop Services. Previously, you would simply go to administrative tools and bring up the services manager or session host configuration.  Now, you only get RD Licensing Diagnoser.

I ran it and a message which caught my attention was about licensing not being configuration for either Device or User.  There were also messages about license servers not getting accessed but I was interested in the configuration used during setup. The problem was where to configure this?  Especially since, Remote Desktop Session Host Configuration no longer exists.

Server 2012 is an attempt to be more virtual and cloud like so the management tools are geared for that. If you simply want a server to run Remote Desktop Service and use your license servers, you may configure the needed options through the local computer policy.  Start the editor:

gpedit.msc

Work your way through:

Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Licensing

There you will find your two needed options:

Use the specified RD license servers

Set the Remote Desktop licensing mode

Enable them and enter your license server(s) and the user or device mode.

Close out and give the server a reboot and you should have access to the server.

Can’t install .net 3.5 on Windows 8 or 2012

Friday, October 31st, 2014

As Microsoft tries to make things easier; they sometimes cause problems with internal security policies. Like many companies, Windows Update has a few controls on it.

A few Windows 8 installations ran into a problem when they needed .Net 3.5. The update policies blocked the download of needed files for the Windows Features wizard to install it.

Luckily; there is a support note; that explains another method to install.

All that is needed is the DVD or an ISO of the operating system. I used an ISO. A nice new feature is the ability for a virtual drive. Simply copy the ISO, double-click it and and you have the ISO mounted.

After that start an admin level CMD and use the DISM command to install .Net 3.5.

DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:<Virtual drive letter>:\sources\sxs

It will run for a couple minutes and it didn’t require a reboot.

Changing to Powershell ISE

Thursday, October 23rd, 2014

I have had a constant problem with AdminScriptEditor.  For whatever reason, it will format certain lines which break up my variables (IE.  $  variable).

In a moment of anger, I decided to start using the Powershell ISE.  Simple but missing a few things such as a print menu.

There is the add-ons menu which is kind of clumsy but it gives you the chance to add missing routines and functions.

I found Jeffrey Hicks wrote a series of functions to extend ISE.  Simple install process and now I can print my scripts!

There is also a technet entry on this.

Windows 7/8 and hiberfil.sys

Tuesday, October 14th, 2014

Windows 8 increased the boot speed by making use of the hibernate function to store the kernel session rather then completely shutdown.

For laptops and even desktops; this is a nice feature.  However, for a testing server or virtual machine; this is a waste of disk space especially if you have a large amount of RAM (in one situation, a windows 7 and 8 setup had two sixty gig files for hiberfil.sys).

This consumption also confused the users as they would see their free space as small and yet looking at their folders didn’t show these files.   Programs like windirstat will point this out.

The simplest way to disable this feature is to use the powercfg command.  Start an administrative level cmd shell.

Enter:  powercfg /h off

The hiberfil.sys file will disappear right after.

Startup time will increase but for these users; space was more important.

How to extend a Windows Server trial period.

Tuesday, October 14th, 2014

Every so often I will get the “emergency” request for a Windows Server machine and either it will take too long to purchase a license or it’s only a trial to check something.  Of course, the server is established and all is forgotten.

One hundred and eighty days later; an issue is raised over the server being offline.  A quick check and of course the license has expired so the machine will start regularly shutting itself down.

The test of course is not over so do we extend it or get a license? The license idea is rejected to we can only extend the trial period.

Microsoft understands these issues and gave a simple way to extend a trial:

  1. Start a command prompt as administrator
  2. enter : slmgr.vbs /rearm
  3. The system will need a reboot for the extension to begin.

A new period of 180 days will be displayed and you can do this 2 more times.

DNS check for powershell

Saturday, October 11th, 2014

I had a need to do a quick DNS lookup for computers in a powershell script which going through a list of computers. There are two ways to a system will not have a DNS entry: 1) System retired. 2) System uses DHCP and is not on the network.

A quick way to perform a look would be to use:

[System.Net.Dns]::GetHostName()

It does give output directed to the console.  If you want to suppress it, use the [void] option.

[void][System.Net.Dns]::GetHostName()

Trimming white space

Friday, October 10th, 2014

Working with a CSV file; I had a situation where the command line would give the output I wanted but the script would get the object information.  I found I could get what I needed by converting the output to a script but it introduced white space.  A computer name would turn into:

“Computer                                       “

What was interesting was the system commands would treat the white space as part of the computer name which of course cause the commands to fail.

Look around the Net; I found a command to trim white space.

$server = $server.trim()

The system name returned to proper size and what is great about this command is that it will trim white space from both sides.

Replace a character in a string

Friday, October 10th, 2014

I had a script where I needed to change a character in a string.

Simple task as I found on the Net.

$str = $str.replace(‘\’,’_’)

Scriptblock doesn’t work with variables.

Friday, October 10th, 2014

Powershell is a fun experience which I wish I had started awhile ago.  It’s features seem endless and it greatly eases system management.

The recent scare over Shellshock caused us to evaluate our Cygwin installations.  We didn’t know the exact number of installations and the version of Bash in use.

The question of the number of Cygwin installations was easy to solve. A script to review the organization units and scan each computer for Cygwin.

After a list was generated; a script was written and three results files were created: Found, System Down, and Not Found.

Cygwin due to it’s open source nature does not follow Microsoft design standards.  It has it’s own way of doing things. Good for the user but not always good for system management purposes.

I didn’t find a “Quick and Dirty” way to get the version number of the Bash executable.   Nothing in the registry and file information lacked details.

Redhat (we use them for support) advised using the “–version” option to identify the version.  A rather tedious task if done through remote desktop or nagging the users to send the information.

What would be nice if there was way to run a command remote and get the information.

Powershell has a nice option called “invoke-command.” It’s a one use option for such things.

The command is rather simply to use:

Invoke-Command -scriptblock { c:\cygwin\bin\bash –version }  -computername <hostname>

This gave the following output:

GNU bash, version 4.1.15(1)-release (i686-pc-cygwin)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

A little too much detail for a version number.  This was quickly addressed by using Select-String command.

Invoke-Command -scriptblock { c:\cygwin\bin\bash –version }  -computername <hostname> | Select-String -pattern “GNU bash, version”

This in turn gave:

GNU bash, version 4.1.15(1)-release (i686-pc-cygwin)

This was usable.  It also helped with simple errors.  If you don’t get the expected result, add an error message. This became evident when trying to run the command on Windows 2003 which lacked Powershell 2.0 and systems which did not have remote management configured.

Invoke-Command is great.  It gave me the information I needed without visiting each system.

I wrote a script and quickly found two problems:

  1. There are flavors of Cygwin and unless there was a conscious effort during install; you could end up with different directories (ie: C:\cygwin, C:\cygwin64, C:\rhcygwin).
  2. Running the command for several systems.  Invoke-Command can take up to five systems.  Great for a small number but not so great when you have hundreads or more.

Both of these issues required the use of variables and it was quickly discovered that -scriptblock option couldn’t use variables. For example:  $cygwinPath\bash.exe –version resulted as \bash.exe –version

The dynamic nature of scanning several computers was not something the command could do.  Rather then use another approach; I looked around the Net and found there was a way to use dynamic scriptblocks by using the NewScriptBlock command.

A quick change:

$scriptblock = $ExecutionContent.InvokeCommand.NewScriptBlock( “$cygwinPath\bash.exe –version”)
$versionResult = Invoke-Command -scriptblock $scriptblock -computername $server | Select-String -pattern “GNU bash, version”

This gave the needed results and we had an understanding of the work needed to be done.

If you would like to read more about Invoke-Command, Ed Wilson did a nice little writeup on his blog.