Mobile Management Thought Leaders – Microsoft?!

2016-06-03T20:10:47+00:00 June 9th, 2016|

During this three part webinar series we will discuss the Microsoft Enterprise Mobility Suite. Specifically highlighting the comprehensive solution to show how it is more than just device management!

Register Now!

Space is limited, register early

Part I – IT Challenges in the Changing Workplace 

Thursday June 9 – 10:30-11:30am  

The workplace is changing, stay in front of the curve by learning about these challenges and how to overcome them: 

  • Consumerization of IT
  • Identity as the perimeter
  • Protecting more than just devices
  • Multiple platforms
  • Shadow IT
  • Modern threats/attacks

Part II – Identity is the New Perimeter

 Thursday June 16 – 10:30-11:30am 

How do you protect your company?

  • Azure AD Premium
  • Azure Rights Management 
  • Intune 

Part III – Better Together

Wednesday June  – 10:30-11:30am  

Let’s take a deep dive into all the components of the EMS solution.

  • Advanced Threat Analytics
  • EMS 
  • O365     


Is Microsoft Really Going “Open”?

2017-07-27T00:00:58+00:00 April 14th, 2016|Azure|

Coretek Cloud Logo final

Many customers aren’t aware of the major shift Microsoft has been making over the last few years.  Microsoft SQL on Linux is a culmination of those changes.  With the announcement of Red Hat support and .Net on Linux, Microsoft has made a major move in the open source marketplace.

Did you know that almost all of the features in System Center 2013, OMS, Azure Backup, and Azure Site Recovery, treat Linux as an equal class citizen?  Windows — or Linux — is no longer a sticking point on the solutions we design and deploy.  With Windows or Linux we can deliver operational solutions on any platform.


Let us know if you have a unique requirement that has been challenging to your business, we are very confident we can help.


Jason M. Cornellier – Cloud Practice Director


Server 2003 EOS, Part 6…

2017-07-27T00:01:00+00:00 July 9th, 2015|Uncategorized|

For previous parts of this blog series, see Parts 1, 2, 3, 4, and 5.

In just a few days it will be July 14th.  And that means End Of Support (EOS) for Windows Server 2003 after more than ten years!  Mind you, I won’t be celebrating; but I might just pause a moment to think of all the critical applications and services that I’ve experienced on Server 2003 throughout the years.  And my, how times have changed since then…

Now, we know there are still some of you out there that have Server 2003 running somwhere in your datacenters, or under a desk, or on a server plastered behind a wall.  It happens.  And we are here to help you. 

So start by checking out our 4-part webinar series on how you might approach different aspects of your migration away from Server 2003, which you can finnd at these links:

If all that’s not good enough, check out Microsoft’s dedicated Server 2003 EOS site for even more detail. 

…and then send us a message from our Contact Page, and let us help you with your critical Server 2003 workloads.  We can’t wait to help you solve your Server 2003 problem and get you back into a fully-supported, modern compute and workload environment.  Talk to you soon!

Ignite 2015 – Download Specific Videos and Slides…

2017-07-27T00:01:00+00:00 May 7th, 2015|Uncategorized|

I was unable to attend the Microsoft Ignite event this year, but I wanted to try and get all the value out of the conference that I could from afar.  I knew I needed to get the session videos and slides, similar to the scripted process that I did for TechEd last year

And while I’ve seen a few download scripts out there, I specifically want just my favorite slides and videos, not a whole category.  Plus, I want the lower-quality MP4s so that the download consumes less space.  And since I’m downloading them while they still post them (the week of the event), I need to permit that they may not yet be available, and that I may re-run it until I get everything I want.

And so here it is, for all my Ignite/TechEd peeps…  It’s a “how-to” to help you grab the content you want, and *only* what you want…

Step 1

First, go to the Ignite 2015 Session catalog at Channel 9 and figure out which session Videos and PowerPoints you want.  Look for the little code by each session, for example FND1451, BRK3505 or BRK2306, etc.

Step 2

Next, create a folder.  I created C:TempGetVideos   …Yes, original, I know. 

Step 3

In that folder you created, make a text file called “MySessionIdList.txt”, and paste in a list of the session IDs, one-per-line, like this:


…and so on. 

Step 4

Again, in that same folder, create a text file called something like I did, “GetSessionVideos.ps1”, and paste in the following code:

Import-module bitstransfer
$inputFile = "mySessionIdList.txt"
$mySessionList = Get-Content $inputFile
$myUrlPathParent = ""
$myRestPath = ""
$myRestComparison = ""
# For pete's sake, do NOT show this to Don Jones! I can't take that level of criticism! ;)
foreach ( $sessionId in $mySessionList )
# Check to see if the file is present before attempting to download
if (!(Test-Path "$sessionId.pptx"))
# Yep, the dreaded Write-Host, because I actually want to watch the script run...
# I'm crazy like that...
Write-Host -ForegroundColor GREEN "Getting $sessionId.pptx..."
# Get the PPTX
$MyThing = Invoke-RestMethod $myRestPath | Where-Object link -Contains "$myRestComparison/$sessionId"
if ($MyThing -ne $NULL)
$MyPptxUrl = $MyThing.getelementsbytagname('enclosure').url
start-bitstransfer -source "$MyPptxUrl" -destination "$sessionId.pptx"
Write-Host -ForegroundColor CYAN "Sorry, the PPTX for $sessionId is not yet available..."
write-host "Already have $sessionId.pptx, skipping..."
# Check to see if the file is present before attempting to download
if (!(Test-Path "$sessionId-mobile.mp4"))
# Go ahead and revoke my MVP, Don...
Write-Host -ForegroundColor GREEN "Getting $sessionId-mobile.mp4..."
# Get the MP4
start-bitstransfer -source "$myUrlPathParent/$sessionId-mobile.mp4" -destination "$sessionId-mobile.mp4"
write-host "Already have $sessionId-mobile.mp4, skipping..."

…And run that script in a Powershell session to get your videos! It might look something like this, using my examples above (note that some files were downloaded, some skipped, and some not yet available):

Of course,you can modify the code to suit your tastes, but this simple set of instructions should get you going.

Have fun viewing and learning!

Note: This is an update from my TechEd 2014 download script posted here.  And thanks to THIS POST for the clue on the Rest API call, due to the *horrible* naming convention for the slides this year. 


Server 2003 EOS, Part 1.

2017-07-27T00:01:00+00:00 December 16th, 2014|Uncategorized|

As you surely know, the Microsoft Windows Server 2003 family is quickly approaching its End of Service (EOS) date. 

Side note: Coretek is absolutely ramped-up and ready to assist you in your migration to Server 2012 R2 (on-premises or Cloud-based), including the possibility of Microsoft funding for assessment and other exciting options.  But that’s not why I’m writing today….

Like the XP EOS frenzy early this year, these big-impact EOS timeframes end up causing some strange feelings for your friendly neighborhood server technician.  What I mean is, as a consultant, I spend a great deal of my time staying current on bleeding-edge technologies and building automations to eliminate manual installs and deployments, etc.

But today, I needed to test some odd behavior I discovered in preparation for an application migration, and I actually had to perform a manual install of Server 2003 — that’s right, manual — for the first time in what must be years.  And because of that, I’m suddenly awash in memories of where I was all those years ago.

But you’re wondering, why a manual installation?  Well just to clarify, I’ve long-since deleted all my VMM templates for Server 2003, or any VHDs that I might have had lying around to “hydrate” and test.  I searched, trust me.  So for this particular test-bed, on this particular evening, I figured it was just quicker to attach the the old CD-sized ISO to the virtual DVD drive, and on I went through that old blue initial setup screen. 

And then it hit me…  What was different about my life the last time I saw and walked through this setup screen? 

It must’ve been around mid-2008, I’m thinking, based on my memory of the day.  I think I recall the situation correctly — I had a different president, different employer, different car, different family arrangement, and on and on…  Basically a very different life.  I guess this setup screen is a bit like a time capsule of memories, like an old song that brings back a day long forgotten.  Or maybe I’m just melancholy as the holidays approach…

You know what else I had forgotten all about?  That “continue on CD #2” thing.  Remember that?  And Hyper-V issues like not having the mouse integrations, having to ctrl+alt+left-arrow all the time, and needing “integration Services” installed manually before it can communicate.  Ah, how quaint.

Will I ever walk through the blue setup screen again?  Surely; after all, I’ll probably be setting up some test beds for other folks like me who long-ago deleted deployment images and templates for Server 2003.  But I’ll tell you one thing, the next time I do the install, it will be for building a template in my VMM lab so I don’t have to do it again. 

Server 2003 might be antiquated and End of Service, but at least I can pull it forward into the future kicking and screaming just enough to help hasten its demise. 



TechEd 2014, Day 0…

2017-07-27T00:01:02+00:00 May 11th, 2014|Uncategorized|

Wow, what a day… And TechEd North America 2014 hasn’t really even begun.

In one day, after I went from Metro Detroit to Houston, got to take in an introductory session from the always-entertaining Joey Snow, Richard Campbell, and Rick Claus

Joey, Richard, Rick

…took in the enormity and quiet of the pre-convention center, after taking (and passing, w00t) a certification test in the awesome Certification Testing Center area…

Convention Center Awaits

…watched some partners and vendors set up their booths, dryly enjoying the metaphor of the sleeping racecar lying in wait…

Racecar Awaits

…and ran through an awesome Hands-on Lab (from holSystems) before I made my way back to the hotel. 

I can only look forward to what tomorrow holds…  I’ll be posting each day this week from the convention, so stay tuned!


Powershell with embedded VBS…

2017-07-27T00:01:03+00:00 November 21st, 2013|Uncategorized|

I recently have been working on a project where the client uses an application that requires a generic username and password to be passed to the database.  To further complicate the matter the users could not know or input the username/password…

To accommodate the project I started working with the logic and how to accomplish this goal.  I started Imprivata (A Single Sign on Application) and AppSense to launch the app at the end of the userinit process.  Unfortunately, this failed to function due to the outdated server version at the client site.  So I ended up with PowerShell to launch the application…

I wrote 26 lines of code (see below) to check if the script had been run before; if it hadn’t, then it would create a flag.  Once it completed, it would check the flag, run the script, expect Imprivata to proxy the credentials, and the day was saved, right?!? 


# Create Windows Shell Object to allow for window to be minimized
$shell = New-Object -ComObject "Shell.Application"
# Create Registry Key Flag if it doesn’t already exist
if (!(test-path -path HKCU:SoftwareCUSTOMER -pathType container))
  New-Item -Path HKCU:Software -Name CUSTOMER
  New-ItemProperty "HKCU:SoftwareCUSTOMER" -Name "SynapseLaunched" -Value 0 -PropertyType "DWord"
#Check the value of Synapse Launched
if ((Get-ItemProperty 'hkCU:softwareCUSTOMER' -name SynapseLaunched | select -exp SynapseLaunched) -ne 1) 
  #launch Synapse then minimize all windows
  & 'C:Windowsexplorer.exe' "::{1FBD11EF-1260-11D1-87A7-444553540001}"
  start-sleep -s 2
  #countdown from 2 seconds to allow app to connect to server
  Start-Sleep -s 2
  #kill Explorer.exe and relaunch
  $proc = Get-Process
  foreach ($objItm in $proc) 
    If ($objItm.ProcessName -eq "explorer") 
       kill $objItm.ID
  #Set SynapseLaunched Dword Value to 1
  Set-ItemProperty 'hkcu:softwareCUSTOMER' -name SynapseLaunched -Value 1  

…Sadly, not so.  Imprivata at the client site was outdated and would not be available to be used for Windows 7 at the site for 2 months, causing an unacceptable delay in the project. 

Well, after the Imprivata approach failed for me, I needed to accomplish what I couldn’t do in Imprivata.  I started by thinking that perhaps I could launch an explorer process (this app is an explorer shell extension) as run as user with my username…  But no dice; the launching of explorer like that didn’t work because it would cause the files I needed to be created in a non-existent user profile, and would error out on the server.

So, I fell back to Windows VBS scripting’s SendKeys.  Since my script was already in PowerShell, and scripting in autoIT or VBS is something I rarely do, I experimented with creating a new Shell object.  Below is the code that I used for that:


#proxy Credentials
      $wshell = new-object -com
      $wshell.AppActivate("Windows Security")
      start-sleep -m 30
      start-sleep -m 30
      $wshell.AppActivate("Windows Security")
      start-sleep -m 30

By utilizing $wshell = new-object -com, I was able to tap into .Net commands to interact with windows.  Now I could utilize some old VB Scripting code I had laying around from the past…

By utilizing $shell = New-Object -ComObject "Shell.Application", I was able to manipulate the Explorer.exe shell and minimize/maximize windows as I saw fit…

This was a very rewarding exercise.  Through this solution we (Coretek) were able to solve the client’s issues with the app, accommodate both teams (Desktop and PACs), simplify the end user experience, and best of all bring Windows 7 deployments back on schedule!

Send an Email from the Windows Command Prompt or Script, Pt II…

2017-07-27T00:01:03+00:00 November 14th, 2013|Uncategorized|

Following up on the earlier post, “Send an Email from the Windows Command Prompt or Script…

…While I’m somewhat picking up where I left off in Part 1, the situation in that earlier post had special requirements about how the email message had to be sent (controlled source, user interaction, etc.).  But what if you don’t have those requirements?  What if you simply want to send an email from a Windows workstation or Server? 

Well, in that case, simply use PowerShell.  Since version 2, PowerShell has included the Send-MailMessage cmdlet for relatively easy mail sending from almost any modern computer.

Recently, I was telling somebody how do use this method to send messages in a script, and demonstrating the input details such as specifying the SMTP relay server.  The person then asked me, “What if the SMTP server changes?”  Hmm…  Good point.   So I whipped up a few extra lines to work around that problem, and the person thought I should post it here.  Agreed!

Here is the script, put together as plainly as possible, with clearly named variables to help you understand what’s going on:

$MyRecipientEmailAddress = ""
$MySenderEmailAddress = ""
$MyRecipient = $MyRecipientEmailAddress.Split("@")
[0] $MyDestinationDomain = $MyRecipientEmailAddress.Split("@")[1] $MyMxRecords = Resolve-DnsName -Type MX -Name $MyDestinationDomain $MyMxRecord = $MyMxRecords[0].NameExchange $MyMessageSubject = "This is a test" $MyMessageBody = "This is the message. Thanks! - Jeremy" Send-MailMessage -To "$MyRecipientEmailAddress" -SmtpServer "$MyMxRecord" -Subject "$MyMessageSubject" -Body "$MyMessageBody" -From "$MySenderEmailAddress"

Remember, the trick is not really the standard options of the cmdlet, but grabbing the possibly-changing MX record for the relay.  This script will dynamically go and get the *current* first-listed MX record for the recipient, and just use that.

And I can almost hear you now, “…But Jeremy, aren’t you side-stepping the built-in fault-tolerance of the MX record?”  Yes, a bit; you can absolutely add a little more code to this and make it aware of the MX ranking, and roll through them and validate until successful.  Maybe I’ll do that in another post…

By the way, while it may not be obvious to you initially, note that I’m just specifying my recipient’s destination SMTP server as my -SmtpServer.  This *should* be fine in many/most cases.  The destination server should be glad to receive and forward the email to the end user that is a part of its own system.  However, some security protection may block this from happening, so be sure to know your destination first.  In my/our case, this was actually being used in an internal system to a friendly destination.  Your result may vary…

Now get out there and send those emails!

How to simplify Excel formulas with “Cell Naming”…

2017-07-27T00:01:03+00:00 October 31st, 2013|Uncategorized|

This week’s post is about a little-known-feature in Microsoft Excel called “Cell Naming.”  If you ever use Excel, like I do, then this tip is for you!  This is one of those features that I always knew existed but I never actually took the time to try, until now.

Simply put, “Cell Naming” allows you to assign a name to a cell, or a range of cells, for easy reference.  

You can get to the ” Name Manager” from the ‘Formulas’ tab then by clicking on the “Name Manager” button. 

For example:  

Click on the image to get a clear view…


In the above example, you see an Excel worksheet which is 3 columns wide x 14 rows tall that lists sale prices of 10 items at 3 different stores (“Store1″,”Store2″,”Store3″).  Each column has a “SubTotal” at the bottom that adds up the prices of that store’s 10 items sale prices, respectively.  Finally, there is a cell that adds up the 3 different stores “SubTotals” to equal the “GrandTotal.”

Next to the spreadsheet is the “Defined Names” which show you all of your cells/ranges with their associated names.

The four “Defined Names” that I created are:

Store1ItemTotals = $E$4:$E$13
Store2ItemTotals = $F$4:$F$13
Store3ItemTotals = $G$4:$G$13
GrandTotalSales = Store1ItemTotals+Store2ItemTotals+Store3ItemTotals

This was just a simple example, but imagine if you have 1000′s of cells with complex formulas that you need to manage!  And instead of having to manually cross-reference which cells that each formula is calling (i.e “E14″), you can know exactly which is being called by the descriptive “Cell Names” that you’ve pre-applied (i.e. “Store1ItemTotals”).  

I hope this tip will help you save a great amount of time and energy when working with Excel in the future!

Look out – Here comes IE 11!

2017-07-27T00:01:03+00:00 October 17th, 2013|Uncategorized|

For many of us that have been watching the recent pre-releases from Microsoft (Windows 8.1 tomorrow!), IE11 will be a welcome update.  In fact, it will be released as an “Important” update for Windows 7 and up, in order to ensure a large footprint.

However, some companies are barely getting through Windows 7 migrations, or have limited resources available to test their applications against the latest browser, and would like to slow the flow of the river of updates a bit…

So for people/companies that perform automatic updates (or standard deployment of “Important” updates) but *don’t* want IE11 to come down to their workstation, there is a toolkit available to stop the IE11 deployment for Windows 7 or Windows Server 2008 R2 when using Automatic Updates.

Note that for those of you who have used these toolkits in the past for previous versions, the previous toolkits will not stop automatic deployment of IE11, since each uses a different set of registry keys.

Now get that migration done, so you can go to Windows 8.1!!

Load More Posts