Guy recommends :
Free Solarwinds
VM Console

Solarwinds VM Console Free Download

Find out which of your VMs are a waste of space and which VMs need more resources.



Windows PowerShell Restart-Computer

PowerShell Restart-Computer

PowerShell v 2.0's Restart-Computer is very similar to the operating system's built-in shutdown /r command.  A likely scenario is that you wish to automate the reboot of a local or remote server.  With a tiny substitution to the cmdlet's verb you could change the command so that it simply shutdown a named computer.

Topics for PowerShell Restart-Computer

 ♣

Introduction to Restart-Computer

I have conflicting emotions about PowerShell's Stop-Computer cmdlet.  On the one hand I want to use this simple command to encourage people to abandon old commands in favour of PowerShell; on the other hand I am disappointed that stop-Computer, and its sister cmdlet Restart-Computer, are not as versatile as shutdown.exe.  Just because I rarely use most of the extra switches in old shutdown does not alleviate my irritation that newer PowerShell commands are not both backward compatible and better.

Simple Example of Restart-Computer

For once it's not easy to test this command on the local computer, unless you add the -confirm switch.  As I will explain later, if you specify a network computer with Restart-Computer you are probably going to have to disable the firewalls.

# Use PowerShell to reboot a network machine
Restart-Computer -computerName LittleServer

Example of Restart-Computer on Multiple Servers

# PowerShell Reboot Multiple Servers
$Victims ="BigServer, LittleServer, GnomeServer"
Restart-Computer -computer $Victims -force

Note 1: This example reboots multiple computers, the names of which are stored in a variable called $Victims.  You could extend this idea and employ Get-Content to read the names of the servers stored in a text file.  Incidentally, I have shortened the parameter -computerName to -computer, in PowerShell you can shorten parameters so long as the truncated word is unique and unambiguous.

Problems with Restart-Computer

  • Error Message: The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
  • Cause:  Firewall blocking the WMI / RPC command.
  • Solution:  Turn off the firewall(s), alternatively, try to open just the RPC ports 135 and 445.

Guy Recommends: A Free Wake-On-LAN UtilitySolarwinds Wake-On-LAN

Encouraging computers to sleep when not in use is a great idea - until you are away from your desk and need a file on that remote sleeping machine!

Wake-On-LAN really will save you that long walk to awaken a hibernating machine; however my reason for encouraging you to download this utility is just because it's so much fun sending those 'Magic Packets'.  As Wake-On-LAN (WOL) is free, see if I am right, and you get a kick from arousing those sleeping machines.  WOL also has business uses for example, wakening machines so that they can have their patches applied. 

Download your free copy of Wake-On-LAN

Researching Restart-Computer

Before we create a working example, as with any new PowerShell cmdlet, it's worth calling for help so that we can check the syntax and examine the parameters for Restart-Computer.

# PowerShell Restart-Computer Cmdlet
Get-Help Restart-Computer -full

Note 1:  Because I like to inspect the examples, I rarely use Get-Help without appending the -full switch.  Two interesting parameters are -force and -credential.  It's also worth highlighting that Restart-Computer uses WMI, hence there are possible firewall restrictions on this command.

Note 2:  In the case of Restart-Computer, I can see many opportunities to add the -confirm switch.  Admittedly I reached this conclusion only after I had shot myself in the foot, and downed my local machine instead of the network server I was aiming at.  See more about PowerShell -confirm

Restart-Computer and Stop-Computer

Restart-Computer is handy for situations where you wish to reboot not just one server, but a whole bunch.  However, let us investigate which other PowerShell cmdlets contain the noun 'computer'.  This may also remind us that we need PowerShell v 2.0 to see the cmdlet Restart-Computer.

# Results should include, restart, stop and add.
# Else, try $Host to check you have PowerShell v 2.0.
Get-Command -noun computer

Summary of Windows PowerShell Restart-Computer

Restart-Computer is very similar to the old shutdown command which is built-in to generations of Windows operating systems.  The advantage of PowerShell's Restart-Computer is that it's simpler than shutdown, yet offers the ability to reboot a list of servers.  My other reason for featuring this simple technique is to give people more reasons for abandoning DOS and at least experimenting with PowerShell cmdlets.

If you like this page then please share it with your friends

 


See more PowerShell examples for Shutdown commands

PowerShell Home   • Syntax   • Stop-Computer   • Restart Computer 

Get-Credential   • Windows PowerShell

Please email me if you have a better example script. Also please report any factual mistakes, grammatical errors or broken links, I will be happy to correct the fault.

Download my ebook:Getting Started with PowerShell
Getting Started with PowerShell - only $9.25

You get 36 topics organized into these 3 sections:
   1) Getting Started
   2) Real-life tasks
   3) Examples of Syntax.

In addition to the ebook, you get a PDF version of this  Introduction to PowerShell ebook  It runs to 120 pages of A4.

 *


Custom Search

Guy Recommends: WMI Monitor and It's Free!Solarwinds WMI Monitor

Windows Management Instrumentation (WMI) is one of the hidden treasures of Microsoft operating systems.

Fortunately, Solarwinds have created the Free WMI Monitor so that you can actually see and understand these gems of performance information.  Take the guess work out of which WMI counters to use for applications like Microsoft Active Directory, SQL or Exchange Server.

Download your free copy of WMI Monitor

 

Home Copyright © 1999-2012 Computer Performance LTD All rights reserved

Please report a broken link, or an error.