Quick Tip: Manage Host NTP with PowerCLI

0

So along the lines of my last post, I decided I should also make another quick post about NTP on the Host side.

Check out my last post Here in case you missed it!

In order to look at the host NTP settings Select your host-Configuration-Time Configuration

From here we can see the status of the NTP Service, here called the NTP Client, and which NTP servers the Host is using.

If you want to check out the same thing but in powercli, use this one-liner!

get-vmhost|select name,@{l=”ServiceRunning”;e={get-vmhostservice $_|?{$_.key -like “ntpd”}|select -expand running }}, @{l=”NTPServer”;E={get-vmhostntpserver $_}}

It is a tad long for a one-liner, but it will display the name of the host, if the ntp service is running on the host, and the ntp servers the host is pointed to. It’s a quick way to glance at ntp host configurations in your environment.

This is all great and dandy, but if you want to change the ntp server the host points to, then I have a script for you!

function set-vmhostntp{
 param([Parameter(Mandatory=$true)]$ntp, $vmhost="*")
 #example set-vmhostntp -ntp 192.168.12.10, 192.168.12.11 -vmhost myhost.vnoob.local

$vmhostinfo=get-vmhost $vmhost

$vmhostinfo |select name,@{l="ServiceRunning";e={get-vmhostservice $_|?{$_.key -like "ntpd"}|select -expand running }}, @{l="NTPServer";E={get-vmhostntpserver $_}}

remove-vmhostntpserver (get-vmhostntpserver $vmhost) -vmhost $vmhost -confirm:$false
 Add-vmhostntpserver -ntpserver $ntp -host $vmhost|out-null

$vmhostinfo|Get-vmhostservice|?{$_.key -like "ntp*"}|set-vmhostservice -policy automatic|restart-vmhostservice -confirm:$false
 $vmhostinfo|select name,@{l="ServiceRunning";e={get-vmhostservice $_|?{$_.key -like "ntpd"}|select -expand running }}, @{l="NTPServer";E={get-vmhostntpserver $_}}

}

So Step by Step
1. The script provides the current configuration, from my earlier one-liner.
2. It then removes all the currently configured NTP Servers on the Host
3. It adds the Ntp Servers you specify, restarting the NTP service.
4. And Finally it provides the configuration again, which should now include your specified NTP Servers

Hope this Helps!!

QuickTip:Manage VM NTP with PowerCLI

0

One thing that can cause a lot of headaches for a VM and an infrastructure in general is incorrect NTP configuration.

Fortunately for a VM, there is mainly one setting for NTP outside of guest OS…Whether you want to get your time(NTP) from the vm’s host.

There are really only two reasons you want to get your VM’s time from its host. Those being, you don’t want to to query your NTP server for the time, or it can’t query the NTP server for the time.

Yes, I know, those are pretty vague, but also fairly all-encompassing :) . Let’s do an example. Let’s say your environment consists of 1 bajillion!!!! VMs, if you only have one NTP server, it is very possible you don’t want all of those VM constantly querying the NTP server to get their time. In this situation, it is less network intensive if they simply query their hosts. Secondly, it is possible that a particular vm, is logically segmented from the NTP server and the VM is not allowed to communicate with the NTP server, again in this case it makes a lot of sense to get the time from its host.

Great! So what is the Setting I am talking about?  Well, right-click on a VM, Edit Settings-Options Tab-VMware Tools, and under the Advanced section you will see “Synchronize guest time with host”. If the box is checked it will query its host for its time.

So how do I quickly find out what all the VM settings are? Glad you asked :)


get-vm|select name, @{N="SyncWithHost";E={$_.extensiondata.config.tools.synctimewithhost}}

That quick one-liner will display all the VMs of the server you are connected to, and whether they get their time from their host(True) or not (False)

That’s so sweet vNoob

I know I know, no autographs right now, I need to finish this post.

K, SOoooOOOoOoo, Let’s say once you find out what VMs the current NTP configuration for the VMs, that you want to change some or all of them.


param($vm="*", $sync=$false)

$spec = new-object VMware.Vim.VirtualMachineConfigSpec
$spec.tools = New-Object VMware.Vim.ToolsConfigInfo
$spec.tools.syncTimeWithHost = $sync

$vms=get-vm $vm |?{$_.extensiondata.config.tools.synctimewithhost -like $true}
$vms|select -expand name
$vms|%{$_.extensiondata.reconfigvm_task($spec)}

By default this script will change all your VMs to Not sync with their host. However I threw two variables in there, so you can select your VMs individually, or set them to true.

An example might be

./configtimesync.ps1 -vm MyVM -sync $True

This will set the vm MyVM to sync with its host($True)

./configtimesync.ps1

This will set all VMs to Not sync with their host.

I Hope This Helps!

Also download the file if you are interested!

ConfigTimeSync
ConfigTimeSync
configtimesync.ps1
Version: 1
336.0 B
12 Downloads
Details...

Copy Windows Folder Permissions with Powershell!

0

So we have all been there, or atleast most everyone who has a SMB customer has been there. They have a shared network drive where all of their employees can access their files. However instead of having the folder permissions setup with groups, making the management immensely easier, the permissions are setup on the individual level. So when a new employee is hired, instead of just adding them to a couple of AD groups, you are piece-mealing their permissions together by having to manually touch 30+ folders to make sure the employee gets their requested access.

Well, after having done this one too many times, I wrote a script.


Function Copy-FolderPermission{

param([Parameter(Mandatory=$true)][string]$refid,
[Parameter(Mandatory=$true)][string]$newuser,
[Parameter(Mandatory=$true)][string]$location)

$permprop=@("Folder","User","Access", "Permissions")

$collection=@()
[array]$permarray
$folders=get-childitem $location |Where {$_.psIsContainer -eq $true}

#This Function collects the permissions for a specific user
Function get-craccess{
param($user)
FOREACH ($folder in $folders){

$acl = get-acl $folder.fullname

 $perms=$acl.access|?{$_.identityreference -like "*$user*"}

FOREACH($perm in $perms){
 $permarray= "" |select-object -property $permprop
 $permarray.Folder=$folder.fullname
 $permarray.user=$user
 $permarray.access=$perm.AccessControlType
 [string]$per=$perm.filesystemrights

$permarray.Permissions= "$per"
 $permarray

 }
}}

FOREACH ($folder in $folders){

#Delete Any Current Access the NewUser Might have
 $acl = get-acl $folder.fullname
 # $account=new-object system.security.principal.ntaccount("$newuser")
 # $acl.purgeaccessrules($newuser)
 # set-acl -aclobject $acl -path $folder.fullname

$access=(get-acl $folder.fullname).access
 IF(($acl.access|?{$_.identityreference -like "*$newuser*"}) -ne $null)
 {

 Write-Verbose "Deleting Existing permission of $newuser on $($folder.fullname)"
 $deleteexisting=$acl.access |?{$_.identityreference -like "*$newuser*"}|%{$_.identityreference}|Get-Unique
 $acl.purgeaccessrules($deleteexisting)
 $acl|set-acl

 }
}
$collection+=get-craccess -user $refid

#Takes access from the $refid and uses it to produce the proper access for the new user
FOREACH($item in $collection)
{
 [string]$permissions=$item.permissions
 $local=$item.folder
 $accesstype=$item.access
 $colRights = [System.Security.AccessControl.FileSystemRights] "$permissions"
 $InheritanceFlag = [System.Security.AccessControl.InheritanceFlags]::ContainerInherit -bor [System.Security.AccessControl.InheritanceFlags]::ObjectInherit
 $PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None
 $objType =[System.Security.AccessControl.AccessControlType]::$accesstype

$objUser = New-Object System.Security.Principal.NTAccount("$newuser")

$objACE = New-Object System.Security.AccessControl.FileSystemAccessRule ($objUser, $colRights, $InheritanceFlag, $PropagationFlag, $objType)

 $objACL = Get-ACL $local
 $objACL.AddAccessRule($objACE)

Set-ACL $local $objACL
}

$collection+=get-craccess -user $newuser

$collection

}

So lets do an example!

Let’s Say a user “Langer” already has access to a group of folders, and we want to copy those permissions to another user “Atwell”

So what we see here, are the permissions that Langer has on the folders that are contained within C:\Power\Test. Immediately following that are the permissions that Atwell are given on these same folders…Cool Huh?

Let’s look at the actual permissions in windows.

Look at that exactly the same.

At this point I should mention that these user accounts were not created to have any similarity to anyone living or dead, they are just random letters I put together to create a name. They don’t represent anyone.

Ok, for the next example let’s say we have started liking Atwell less and he shouldn’t have as much permissions as he currently does. Maybe he posted one too many #scottlowefacts, or maybe he upsets you because has red hair, or maybe he just doesn’t have a soul. Regardless he needs to be given less permissions than what he currently has. Again, these usernames are not suppose to represent anyone…they are just a random collection of letters.

Fortunately, we already have someone that doesn’t have very many permissions…Coen. So we are now going to give Atwell the same permissions as Coen.

Sweet, now Atwell has less permissions as he should.

A couple things to note, on Folders 1 and 2, Atwell’s permissions  were erased and then recreated because Coen had permissions on those folders. Since Coen did not have permissions Folder 3, it made no change to Atwells permissions that were there.

Hope this helps

CopyFolderPerms
CopyFolderPerms
copy-folderperm.ps1
Version: 1.0
2.5 KiB
28 Downloads
Details...

References:

#http://technet.microsoft.com/en-us/library/ff730951.aspx
#http://stackoverflow.com/questions/3282656/setting-inheritance-and-propagation-flags-with-set-acl-and-powershell
#http://developers.de/blogs/damir_dobric/archive/2007/06/18/directory-security-and-access-rules.aspx
#http://social.technet.microsoft.com/Forums/en-US/winserverpowershell/thread/4e6d0554-1b76-4219-84de-52d86dad6d4b/

A Couple Quick Scripts for Manipulating Local Admins

0

As a sysadmin, or more specifically in my current position as a sysadmin, I have always felt that I am constantly needing to manipulate the local admins group on different servers. Maybe a dev broke something in dev/test and they need higher rights temporarily to troubleshoot their code or the error.  There are just too many reasons to count as to why someone may want to change the local admins on a server.

This first script is just a Get of who belongs to the local admin group on a server/computer


Function get-localadmin{
param(
[string]$server=$(Read-Host "What server?"))
$output=@()

$computer = [ADSI]("WinNT://" + $server + ",computer")
$Group = $computer.psbase.children.find("Administrators")
$members= $Group.psbase.invoke("Members") | %{$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}

Write-Output "Local Admin Group of $server :"
foreach($user in $members)
{
 $output+= $user }

 $output
 }

Even if you don’t type in the server you want to grab the admins from, it will prompt you for the server name with read host. This also allowed me to give it to my boss so even he could use it :P

Oh Look! The list of admins on a server are not what you expected we need to add someone!


Function add-localadmin{
 param(
 [string]$server=$(Read-Host "What server?"),
 [string]$group= $(Read-Host "What group? domain/group")
 )
 ([ADSI]"WinNT://$server/Administrators,group").add("WinNT://$group,group")

}

As with the previous script you don’t need to define the parameters as it will prompt you for both the server and the user/group you would like to add.

Can you guess what is come next? Yep! A script to remove an admin… you may even be able to guess how it is different from the Add script


Function remove-localadmin{

param(
 [string]$server=$(Read-Host "What server?"),
 [string]$group= $(Read-Host "What group? domain/group")
 )

([ADSI]"WinNT://$server/Administrators,group").remove("WinNT://$group,group")

}

You guessed it… I substituted “add” for “remove” and now we have a script to remove a local admin.

These were a few a scripts I wrote when I first started powershell, so they are pretty basic, however they have been a huge timesaver for me…Especially just checking the Admins group of a specified computer.

Hope you enjoy! And always let me know if you have any questions or comments

Using Powershell Functions and Filters to find online computers

0

Alright, so when I run script and am doing just general mayhem in my powershell session I always find a need to know which computers are online before running a script against them. Mainly because it is faster and I get less errors from my script not being able to reach a computer.

So yes, one could use Test-Connection, which is a native powershell cmdlet which will test if computers are online for you. However, I hate Test-Connection. I understand some people like it and use it all the time and whatnot, and I don’t mean any offense….but I don’t like Test-Connection. I have always felt it is very clunky and takes forever to run. With that thought mind I decided to write my own function which would do this testing of online computers for me.


Function Filter-Online{
<#
.Description

This is just a quick little script, but it does some cool things. Mainly I just created it in order to be able to quickly check whether computers are "online" or not.

It does this through a simple ping...so if a computer is On and Not responding to pings, it will not be listed as online.

This script can accept input either from the pipeline OR through the -parameter command

The great thing is that most things you would want to check their online status use the Name property so this works great for most things!

.Parameter Name

The only parameter that matters. Accepts just one or multiple objects

.Parameter NotOn

Used for if you would rather the returned objects be the ones that did Not respond to pings
.Example

get-adcomputer * |filter-online

Will take all of the computers listed in AD and return only the ones which are determined to be online
.Example

Filter-Online -name (get-vm)
Will take all of the computers listed in vCenter and return only the ones which are determined to be online. Yes, VMs have a PoweredOn Property, but that doesnt mean they have network connectivity

.Link
 www.vnoob.com

 .Notes

====================================================================
 Author:
 Conrad Ramos <conrad@vnoob.com> http://www.vnoob.com/

Date: 2012-3-14
 Revision: 1.0

====================================================================
#>

[CmdletBinding()]
param([Parameter(Mandatory=$True, ValueFromPipeline=$True)]$servers,[switch]$noton)

Begin{
$online=@()
$offline=@()

}
Process{
Foreach($server in $servers){
$reply=$null
 $ping = new-object System.Net.NetworkInformation.Ping
 $servername=$server.name
 Write-Verbose "Testing $servername"
try{
 $Reply = $ping.send($servername)
 }
Catch {}
if ($Reply.status –eq “Success”)
{
$online+=$server}
else
{$offline+=$server}
}

}

End{
IF($noton -eq $false){
Write-Verbose "---------------------------------"
Write-Verbose "The following are online"
$online
}
Else{
Write-Verbose "---------------------------------"
Write-Verbose "The following are offline"
$offline
}
}

}

This is an advanced function, or atleast I think it is, I can never remember the criteria for an advanced function. Anyway this will take object given to it by either the pipeline or through parameters, and after it is done it spits back out the objects instead of just the property name. For instance

get-adcomputer * | Filter-online

Will give you all the adcomputer objects that are currently online, or can be pinged.  And

Filter-Online (get-vm)

Will give you all the VM objects that can currently be pinged.

This is great, however it does utilize the Name property so if you have VMs that have different DNS names than their VM names, then it will think those computers are not online.

Sweet HUH!

Also Recently I found out about Filters from Boe sending me this discussion on them . No I am Not talking about a filter like the parameter -filter { }, I am talking about it as a function. So instead of doing

Function verb-noun{

You do

Filter verb-noun{

Crazy huh!

So these kind of filters operate in a very similar way to Functions, except instead of Begin, Process, and End blocks, Filters just have the Process block. In other words they are kind of a light-weight function. Also because of only being a Process block, they automatically accept pipeline input. After finding out about this sweet new (atleast to me) kind of fuction. I had to then do my script above a second time but just as Filter.


filter filtering-online{
$reply=$null
 $ping = new-object System.Net.NetworkInformation.Ping
 $servername=$_.name
 Write-Verbose "Testing $servername"
try{
 $Reply = $ping.send($servername)
 }
Catch {}
if ($Reply.status –eq “Success”)
{$_}
}

As you can see right out of the gate, it can do a $_ since it is already accepting pipeline input. Pretty sweet huh!

So after doing all this, and because I kind of hate Test-Connection, I decided to see how my function and filter stands up to  Test-Connection

image

Sweet SOOO Much faster. Yes, I understand using the Where-Object with the pipeline is possibly slowing down the test connection process. But is it making it like 7 times slower….I doubt it.

So in an effort to give Test-Connection a Chance

image

Still Fail for Test-Connection

Hope this is helpful! Let me know what you think!!!

Also as a side-note…..

TODAY IS MY BIRTHDAY!!!!!!! Hooray! I turn the big 27!!!! I am getting to be an old man!!! :(

FIlter-Online
FIlter-Online
filter-online.ps1
Version: 1.0
2.2 KiB
45 Downloads
Details...

Changing VMware Update Manager Plugin Credentials

0

 

So let’s say you want to change the credentials that the VUM Plugin has been registered with VMware with….

Why would you want to do this one might ask. Well lets say your company is restructuring the service accounts that are used for various programs and apps that they run. That’s one reason. A second reason might be that the IP address of vCenter has changed. A third reason might be you used personal admin account to register the plugin with vCenter….not that anyone would do that….. and now your password has changed.

I have read that once the VUM plugin is registered with vCenter that it no longer uses or needs those original credentials. I am not saying that is false, I am just saying I have a “friend” that once his AD user account password changed, he started having issues with VUM talking with vCenter, and doing this fixed it.

Fortunately this is something that is pretty easy to fix, although it might not be obvious how to fix it at first.

First thing one might do is RDP into the VUM server and take a look around, it is certainly where I would start. However if you are looking for some sort of a client in Start-Programs, you are looking in the wrong spot… And the right spot might be hard to find.

Try here

 

vumUtility

Yep that is the application you need. The VMware Update Manager Utility. Go Ahead and Launch That!

On launch you will be prompted to login

 

VUMUtilityLogin

Once logged in Select “Re-Register to vCenter Server”… Enter the info and Hit Apply!

 

ReRegisterPlugin

 

That’s pretty much it.

Afterward you need to restart the Update Manager service on the VUM Server, and then you are done. Pretty straightforward when you know where to look.

My FINAL Experience with Powershell Month of Lunches Pt 8

0

Chapter 24 Additional tips, tricks, and techniques

This is just one of those all-around chapters. It talks about profiles, customizing the console, a little bit of regex stufff, and some working with dates.

This isn’t one of those big “learning” chapters, however it is a great reference chapter that I know I will return to from time to time!

Chapter 25 Final exam: tackling an administrative task from scratch

Pretty to the point chapter title. It is what it says. You are given a task, with a few hints, and asked to write a function which will meet the requirements of that task.

This is a chapter where you will find out very quickly if you have been learning and following along with the labs. Fortunately the book is one big reference guide.

If you could only do one lab in this book(and you really should do all of them) it should be this lab. I say that because being the “final exam” you have to combine all or atleast most of the skills this book has taught you in order to complete the assignment.

Great Exam!

Chapter 26 Beyond the operating system, taking powershell further

This was a very different chapter than the others, as Don walks us through how he would learn a new snappin or module on the fly.

All of us have our comfort zone and area where we are the experts, but a very important part about being an IT professional is being able to adapt and to learn quickly. Being able to quickly assess and adapt to new powershell cmdlets and modules is a skill I consciously try to work on personally, so this both a fun and a learning chapter for me.

Don also only uses techniques in this chapter which he has taught in this book. As he references in this chapter, you can give a man a fish, or teach him how to fish. He, I thought, was definitely able to demonstrate that he has taught how me to fish in this book!!

Chapter 27 and Chapter 28

Chapter 27: Never the end deals with, “K, I am done with the book, what now?”. This short chapter briefly describes some common tasks the reader can start on to get their powershell life started! Even better in this chapter is a great resource list of where one can find additional powershell related resources and training. I, for one, am always looking for more powershell knowledge so this was awesome for me.

Chapter 28: Powershell cheat sheet  is a bit more than a glossary of a ton of common things in powershell. Listed here is common logic operators like -gt -le  as well as how and when to use $_ and a ton of other just great reference material. Definitely worth a look, but will more than likely be used mostly as a reference chapter.

Final Thoughts

It is slightly difficult to give a review on a whole book, when I have essentially been giving my thoughts on every individual chapter.

Overall I thought this was an awesome book, no questions asked. Yes there were a couple things I would have liked to be slightly different but that’s me. I am sure others found those sections perfect.  No book can be perfect for everyone, however I definitely think this has the widest range of use for the most people. Which, in all honesty, might be the best thing one can say about a book for learning a technology.

There are definitely two things personally took away from this book. The first is just how to figure powershell out on my own. I no longer immediately go to google every time I need to accomplish a new posh task, I still might end up there, but I am far more independent and likely to figure it out on my own….WHICH IS AWESOME! It is such a great feeling knowing you were completely new at something not too long ago, and then feeling that you can handle your own with it. This book with Don is a Huge help in that.

The second thing I will take away from this book is hashtables. Previously, any time I would need to do a hashtable I would have to do a couple searches to find the syntax, because I could never remember it. Now I am a hashtable Machine! Hashtables, in my opinion, are used as much or more than just about anything else in powershell. So for me immediately know how to construct them is a big time saver, and allows me to do more with my scripts!

Finally, I thought this book is pretty much necessary for anyone who wants to learn powershell. It has step by step directions that take you through each part of the process, and doesn’t assume you already know how to do anything, which is great :) ! The short chapters are perfect to keep some from getting discouraged at the thought of starting a really long chapter…none of that here!

The short chapters also provide another important function. Because the chapters are short, it also makes referencing much easier than it would be in most technical books. This also makes the book relevant to those who are already knowledgeable with powershell as it provides both a great and quick reference source.

So seriously, just go buy the book. You will love it and find it useful!!!! To check out all my experiences check here

Equallogic Appliance for VMware VASA

2

I don’t normally have a post like this but this time I just can’t help myself.

Last week I had decided that I was finally going to setup VMware VASA for my Equallogic, so I started doing research to find out more. Previously I just haven’t had anytime to work on this at all.

After a little digging I found that Equallogic doesn’t just have a plug-in which enables/allows VASA, they have a whole appliance. This appliance is called the “Host Integration Tools for VMware” or HIT-VE.

It didn’t take me long to decide I was going to dedicate a post to how to set this up. It was going to be an epic post, with pictures, instructions, and examples. It was also going to be brilliantly formatted and just look gorgeous. In all honesty I had my mind set on trying to make unicorns cry with how awesome it would be.

After one more google search to see if I could find anymore info on HIT-VE, I found one.

A post from Mike Laverick, which was everything I wanted my post to be, and it also happens to be from the guy who kind of wrote the book on this sort of thing. Well maybe not on this thing specifically but close enough to where I can count it.

Anyway after all that rambling I guess what I am trying to say is for all the info you could want to know about HIT-VE……

You should definitely go check out his HIT-VE Page.

High Co-Stop Stats and Snapshots?!

0

So was running into an interesting issue this past week that I thought I would write up a post about.

I randomly and for no reason(seemingly at least) started seeing high cpu ready times at random times which was greatly affecting performance for one of my environments. This particular environment had a lot of VMs that were rocking 2(and a few with more) CPUs. So being the good admin I am I started reducing VMs to just one CPU.

BUT, it didn’t fix the issue. Which I was kind of worried about anyway since nothing had really “changed” in my environment so I couldn’t figure out why there would be suddenly High CPU Ready Times.

So I started digging looking at all the other stats I could to try and find something else that made sense, then I came across CPU Co-Stop.

Co-Stop is defined in vCenter as “Time the VM is ready to run, but is unable to due to co-scheduling constraints.” Huh! That sounds an awful lot like cpu ready, except for multiple vCPUs. Alright lets look at a Co-Stop graph in vCenter…

costoptime1

costoptime2

This is stacked graph of the VMs and I know it’s hard to read, but some of the biggest offenders had a maximum CPU Co-Stop time of 638521 ms. For those playing at home, that is 638 seconds!!!!!! Ridiculous!!!

The other thing to notice about the graphs is that they are from two DIFFERENT hosts, over the same amount of time. Looks eerily similar huh?!?

By this point my curiousity was WAY PEAKED. I mean for two hosts to be having CPU issues at the exact same times…something is seriously going on here.

Then I found this VMware article which says snapshots can be the culprit for Co-Stop Times:

Snapshots introduce complexity to storage I/O. Due to the nature of snapshots, every read operation must traverse every snapshot disk and then the base disk in order to verify the appropriate disk block to return. Because these extended read operations are required, snapshots are the most performance-intensive disk format for virtual disks (as opposed to thin-provisioned, thick-provisioned, or eager-zeroed thick-provisioned virtual disks).

It makes a lot of sense, but is something I haven’t really thought of before…..wait, when was the last time I Snapshotspacechecked on my snapshots. Let’s look at the Storage View….

Oh Nice…7 Snapshots over 10GBs in size and one with 36GB!!!! Oh dear… must have been the upgrade from Server2008 to Server 2008 R2.

This obviously needs to be remedied.

As it turns out, after I removed and consolidated some VM Snapshots my hosts are much happier than they had been previously, and I am no longer see the Co-Stop issues!

Reference:

High co-stop (%CSTP) values seen during virtual machine snapshot activities

vNoob Turns One Year Old!!

6

Oh man this has been a crazy year! The site actually turned 1 on Feb 15, so I am slightly behind the ball, but I have been crazy busy!

Looking at the picture on the right… if nothing else the site atleast looks better and slicker than what it used to.
It is very interesting how a project like this one becomes something very different than what your original intentions were.

At the core, my original intentions were simply, help others with VMware as I am fumbling around figuring stuff out myself. There are so many great blogs out there for VMware, and some of them the topics can get really advanced and really confusing after the 3rd word. And that’s awesome because those need to exist, but there is also a need for blogs that try to focus on the Introductory VMware user/admin and that is what I try to do here. However some topics are by nature very advanced, so they cannot always be explained in a way that is accessible to everyone, but I have tried and will continue to try to make as much of content accessible to as many people as possible. Besides being able to explain things well I believe helps us understand the topics better ourselves.

So with that primary goal in mind, my site has sort of also become something else as well….a powershell/powercli scripting site. There is no other way around this as I have fallen deeply, deeplly in love with powershell. I am not ashamed to admit it and I will scream it from the top of the mountains if I have to!

Scripting is something again I will try to make accessible to all, however in some cases this might be a harder endeavour.

Still being new to both the VMware and the Powershell community, with only doing VMware for about 1.5years and Powershell for a little less than a year,  I have been very lucky to connect with so many awesome people. Both of these communities have been great and there are SO many helpful people out there who just want everyone to learn and to have fun with these great technologies. Which is something I want to do as well. I want to help people and hopefully get people excited about VMware and Powershell, because both of them are so freakin Awesome!

There was also a recent vote for the Best Blogs in VMware, check out the results here. This site was ranked #167, but I am very happy and proud that it was #8 on the Best New VMware Blogs. Thank you thank you to everyone who voted. It is always nice to know that you are doing something right with one of these things called a blog. I hope I can continue to be helpful and that this blog will become an even better resource for VMware and Powershell.

In the next year I really hope I can produce more content, and more importantly better content. It is something I think about a lot and something I strive hard to accomplish.

Get-Person Conrad | Stop-Ramble

Anyway, THANKS to EVERYONE for the first Year and I can’t wait to see what this next one brings!

Go to Top