Skip to content

Instantly share code, notes, and snippets.

View davegreen's full-sized avatar

Dave Green davegreen

View GitHub Profile
@davegreen
davegreen / CheckIEESC.ps1
Created January 27, 2016 17:07
SCOM monitor script for checking Internet Explorer ESC status. Requires something like the PowerShell script monitor MP by Wei Lim: https://gallery.technet.microsoft.com/Sample-Management-Pack-17b76379
$API = New-Object -ComObject "MOM.ScriptAPI" -ErrorAction Stop
$PropertyBag = $API.CreatePropertyBag()
$Profiles = @{'Admin' = 0; 'User' = 0}
$Profiles.Admin = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}' -Name IsInstalled).IsInstalled
$Profiles.User = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components\{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}' -Name IsInstalled).IsInstalled
if ($Profiles.Values -contains 0)
{
$PropertyBag.AddValue('State', 1)
@davegreen
davegreen / Build-CustomWIMImage.ps1
Created February 1, 2016 21:48
This function mounts and customises a given WIM image by removing pre-provisioned Appx packages and slipstreaming updates. Defaults provided for Appx package removal are based around Windows 10.
Function Build-CustomWIMImage
{
[CmdletBinding(SupportsShouldProcess)]
Param(
[parameter(Mandatory=$true, Position=1)][ValidateScript({ Test-Path $_ })][string]$ImagePath,
[parameter()][ValidateScript({ Test-Path $_ })][string]$UpdatesPath,
[parameter()][ValidateNotNullOrEmpty()][string[]]$RemoveAppxPackages = {
'Microsoft.3DBuilder',
'Microsoft.BingFinance',
'Microsoft.BingNews',
@davegreen
davegreen / Get-ComputerADSite.ps1
Last active February 2, 2016 08:30
A function that will return the AD site the local computer is currently connected to. Useful for PowerShell login scripts that need to target specific sites.
Function Get-ComputerADSite()
{
<#
.Synopsis
Get the computers current AD site from the computer Netlogon information.
.Example
Get-ComputerADSite
.Notes
#Requires -Module DHCPServer
Function Get-UnmatchedDhcpServerv4Reservation {
<#
.Synopsis
A function gets DHCP IPv4 reservations from a single scope stretched over two DHCP servers.
.Description
A function gets DHCP IPv4 reservations from a single scope stretched over two DHCP servers
@davegreen
davegreen / ConfigureUEFI.cmd
Last active September 8, 2016 19:33
For use with HP machines for deploying UEFI/BIOS configurations.
PUSHD %~dp0
SET _bcu=BiosConfigUtility.exe
SET config=%1
IF /I "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" (
SET _bcu=BiosConfigUtility64.exe
)
"%_bcu%" /nspwdfile:"%~dp0BIOSPW.bin" /set:"%~dp0%config%" /l
@davegreen
davegreen / UpdateUEFI.cmd
Created September 8, 2016 19:34
For use with HP machines for deploying updated UEFI firmware.
PUSHD %~dp0
SET _upd=HPBIOSUPDREC.exe
SET bios=%1
IF /I "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" (
SET _upd=HPBIOSUPDREC64.exe
)
"%_upd%" -pBIOSPW.bin -f%bios% -s -r
@davegreen
davegreen / UpdateBIOS.cmd
Created September 8, 2016 19:38
For use with HP machines for deploying updated UEFI firmware using HPqflash.
PUSHD %~dp0
SET _upd=hpqFlash.exe
SET bios=%1
IF /I "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" (
SET _upd=hpqFlash64.exe
)
"%_upd%" -pBIOSPW.bin -f%bios% -s
# Requires -RunAsAdministrator
[CmdletBinding(
SupportsShouldProcess = $True,
ConfirmImpact = 'High'
)]
Param(
[parameter(
Mandatory = $true
)]
[ValidateScript({
Register-ArgumentCompleter -CommandName Set-MsolUser -ParameterName UsageLocation -ScriptBlock {
Param(
$commandName, #The command calling this argument completer.
$parameterName, #The parameter currently active for the argument completer.
$currentContent, #The current data in the prompt for the parameter specified above.
$commandAst, #The full AST for the current command.
$fakeBoundParameters #A hashtable of the current parameters on the prompt.
)
$UsageLocations = @{
Function TestMsolConnection {
<#
.Synopsis
A function that tests the Microsoft Online connection.
.Description
A function that tests the Microsoft Online connection.
.Example
TestMsolConnection