Wednesday, 13 February 2013

Reboot and Resume and RunOnce PowerShell Script

Overview:  It is fairly common to need a reboot and you want to automatically run some PowerShell once the server is back up.

This package contains 2 PS 1 files (download):
  • Restart-VM.ps1 (Contains all the code to reboot the server and lainch the function from here)
  • Restart-VM-Custom.ps1  (2 functions to add your custom logic.  You can add either to the Pre-shut down code to execute or the PS to run once the server has restarted)
  1. Extract both PS1 files into the same folder on your machine;
  2. Edit the file "Restart-VM-Custom.ps1", noteably create your custom scripting logic within the "CustomRestartActions" function; and
  3. Run "Restart-VM.ps1" as the administrator.
PS to reboot remote machines:
PS> Restart-Computer -computer -force

RunOnce Example (Download)

1 PS files: 
1st file changes the registry to autologgon and run the runonce.

2nd ps file creates a folder, removes the autologin and reboots

Remote RunOnce using PS, useful for remote builds (Download)

Run on build server to setup RunOnce on the remote server
 Run on the target Remote Machine

Remote PS using Invoke-Remote
Updated 10 June 2013: I am using a REG_EXPAND_SZ Registry key type and I have discovered that the value needs to be less than 255 characters.  Mine was 270 odd characters as it had multiple attributes.  E.g.
RunOnce>c:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -noexit -command " .'C:\Windows\Temp\SQLInstall\Start-ServerCustomisation-SQL-All.ps1' 'k:\SQLInstallerInput-Test.xml' 'k:\\\c$\LocationNotingDeployment\vSphere\Test /user:xxxxxxxxxxxxxxxxxxxxxxx P@aassssss'"</RunOnce>

My runonce was not firing, however the RunOnce registry key was saved correctly (270 chars).  The command could be executed from the cmd prompt with the longer length but to automate the Reg-Expand_SZ key value needs to be less than 255 characters long.


Post a Comment