# encoding: ascii
# api: powershell
# title: Set-PowerGUIWelcomePage
# description: This script customizes the welcome screen which PowerGUI admin console displays on start-up or when a folder is selected in the left-hand tree.
# version: 1.8
# type: script
# author: Dmitry Sotnikov
# license: CC0
# x-poshcode-id: 1129
# x-archived: 2016-03-05T17:49:11
# x-published: 2010-05-26T14:59:00
#
# You can use it to introduce branding to the PowerGUI consoles used in your company or to provide your employees with additional information.
# Create the MHT file by saving it from Internet Explorer, Microsoft Word or another editor, then run this script to set a reference to the file from PowerGUI configuration.
# Version 1.3 makes the script compatible with PowerGUI 1.8
# See http://dmitrysotnikov.wordpress.com/2009/02/11/rebranding-powergui-console/ for details
#
########################################################
# Modifies the default PowerGUI admin console
# welcome screen to the mht file you supply
# Details available at:
# http://dmitrysotnikov.wordpress.com/2009/02/11/rebranding-powergui-console/
########################################################
# Usage:
# To change the homepage:
# & .\Set-PowerGUIWelcomePage.ps1 \\server\share\my.mht
# To rollback the change:
# & .\Set-PowerGUIWelcomePage.ps1 -ResetToDefault $true
########################################################
# (c) Dmitry Sotnikov, Oleg Shevnin
# 1.3 - May 27: made it compatible with PowerGUI 1.8
# 1.2 - Mar 30:
# added parameter to reset home page to default
# fixed the issue which aroused when path was supplied interactively
# 1.1 - Mar 17: added exception if PowerGUI Admin Console is running
# v1, Feb 11, 2009
#
########################################################
param ([string] $mhtpath, [bool] $ResetToDefault = $false)
# this should be path (local or UNC) to the new welcome page
# make sure that the admin console is closed
if (( get-process Quest.PowerGUI -ErrorAction SilentlyContinue ) -ne $null) {
throw "Please close the PowerGUI administrative console before running this script"
}
# Locate PowerGUI configuration for current user on this computer
$cfgpath = "$($env:APPDATA)\Quest Software\PowerGUI\quest.powergui.xml"
# If quest.powergui.xml not found - try new name of the file (PowerGUI 1.8 and later)
if ( -not (Test-Path $cfgpath) ) {
$cfgpath = "$($env:APPDATA)\Quest Software\PowerGUI\config.xml"
if ( -not (Test-Path $cfgpath) ) {
throw "ERROR: PowerGUI configuration file not found"
}
}
# Create backup
Copy-Item $cfgpath "$cfgpath.backupconfig"
# Read the file
$xml = [xml]$(Get-Content $cfgpath)
# check if this is run to roll back the changes or to introduced them
if ( $ResetToDefault ) {
# Locate the custom homepage section
$node = $xml.SelectSingleNode("//container[@id='4b510268-a4eb-42e0-9276-06223660291d']")
if ($node -eq $null) {
"Configuration is already using default homepage. No rollback required."
} else {
$xml.SelectSingleNode("/configuration/items").RemoveChild($node) | Out-Null
$xml.Save($cfgpath)
"SUCCESS: Successfully rolled PowerGUI back to default welcome page."
}
} else {
# change the welcome screen to the mht supplied as parameter
# verify that the new file exists and is mht
if ( $mhtpath -eq $null ) {
$mhtpath = Read-Host "Please provide path to the MHT file"
}
$mhtfile = Get-ChildItem $mhtpath
if ( $mhtfile -eq $null) {
throw "MHT file $mhtpath not found. Please verify the script parameter."
}
if ( $mhtfile.Extension -ne ".mht" ) {
throw "File $mhtpath is not an MHT file. Only MHT files are supported."
}
# If the section for custom welcome page does not exist - create it
$node = $xml.SelectSingleNode("//container[@id='4b510268-a4eb-42e0-9276-06223660291d']")
if ($node -eq $null) {
$node = $xml.CreateElement("container")
$node.SetAttribute("id", "4b510268-a4eb-42e0-9276-06223660291d")
$node.SetAttribute("name", "Home Page")
$node.AppendChild($xml.CreateElement("value")) | Out-Null
$xml.SelectSingleNode("/configuration/items").AppendChild($node) | Out-Null
}
# Set the new value and save the file
$node.Value = [String] $mhtpath
$xml.Save($cfgpath)
"SUCCESS: $mhtpath is now set as your custom welcome screen."
}