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.
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.
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
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.
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.
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.
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 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
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.
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.