Skip to content

Instantly share code, notes, and snippets.

Avatar

Dave Green davegreen

View GitHub Profile
@davegreen
davegreen / UPN.ps1
Created May 29, 2014
Quick one-liner for setting UPNs for users to match their email address (useful for working with Azure, O365, etc.)
View UPN.ps1
#Set UPN for all users with mobile phone numbers to email address
Get-ADuser -Filter * -Properties mobilephone, mail | where {$_.mobilephone -and $_.mail -ne $_.userPrincipalName} | ForEach-Object {Set-ADuser -Identity $_.ObjectGUID -UserPrincipalName $_.mail}
#Set UPN for all users to email address
Get-ADuser -Filter * -Properties mail | where {$_.mail -ne $_.userPrincipalName} | ForEach-Object {Set-ADuser -Identity $_.ObjectGUID -UserPrincipalName $_.mail}
@davegreen
davegreen / sharedsettings.cs
Last active Aug 29, 2015
A basic class for shared settings, allowing a key/value based settings file to be created or loaded, Lines starting with a # are used as comment lines and are ignored as settings. As an example, the class can be instantiated with: private SharedSettings sharedsettings = new SharedSettings("Contoso", "Test.cfg");
View sharedsettings.cs
/// <summary>
/// The shared settings class, responsible for reading and writing machine-wide shared settings.
/// </summary>
public class SharedSettings
{
/// <summary>
/// The file path to the shared settings file, computed using the common application data folder for wider OS support.
/// </summary>
private string sharedSettingsPath;
@davegreen
davegreen / ProBook6x70bConfig.cmd
Last active Aug 29, 2015
BIOS configuration command file for running the correct copy of HPs BiosConfigUtility with a hardcoded configuration file. This will be changed to support params..
View ProBook6x70bConfig.cmd
pushd %~dp0
set _bcu=BiosConfigUtility.exe
if /I "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" set _bcu=BiosConfigUtility64.exe
"%_bcu%" /nspwdfile:"%~dp0BIOSPW.bin" /set:"%~dp0ProBook6470bConfig.cfg"
IF %ERRORLEVEL% NEQ 0 "%_bcu%" /cspwdfile:"%~dp0BIOSPW.bin" /set:"%~dp0ProBook6470bConfig.cfg"
popd
@davegreen
davegreen / Timezone.ps1
Last active Sep 26, 2015
Get and set the computer timezone.
View Timezone.ps1
#Requires -Version 3
Function Get-TimezoneFromOffset()
{
<#
.Synopsis
A function that gets the timezones that match a particular offset from UTC
.Parameter UTCOffset
A string containing offset time you require. This must match the form +NN:NN or -NN:NN.
View Custom.SQLQueries.xml
<?xml version="1.0" encoding="utf-8"?><ManagementPack ContentReadable="true" SchemaVersion="2.0" OriginalSchemaVersion="1.1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<Manifest>
<Identity>
<ID>Custom.SQLQueries</ID>
<Version>1.0.0.1</Version>
</Identity>
<Name>Custom - SQLQueries</Name>
<References>
<Reference Alias="MicrosoftWindowsLibrary7585010">
<ID>Microsoft.Windows.Library</ID>
View CollectionUpdateTime.vbs
Set objArgs = Wscript.Arguments
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
Dim ConnString
ConnString = "DRIVER={SQL Server};Server=" & objArgs(0) & ";Database=" & objArgs(1) & ";"
objConnection.Open ConnString
objRecordSet.Open "SELECT TOP(1) CC.CollectionID, CN.CollectionName, CC.TimeUpdated FROM Collection_MemberChg_Notif CC JOIN Collections CN ON CC.CollectionID = CN.SiteID WHERE CN.CollectionName = 'Test Collection' AND CC.TimeUpdated < DATEADD(mi, -20, GETDATE())", objConnection, 3, 3
@davegreen
davegreen / Get-Membership.ps1
Last active Dec 18, 2015
A quick function to get groups that the current user is a member of.
View Get-Membership.ps1
# Gets a list of groups that the user is a member of from the current Windows identity token.
# Param1: $domain - Boolean value. Return group names with domain or not.
# e.g. true = "BUILTIN\Authenticated Users", false = "Authenticated Users".
Function Get-Membership($domain)
{
$groups = @()
foreach ($group in [System.Security.Principal.WindowsIdentity]::GetCurrent().Groups)
{
$grp = $group.Translate([System.Security.Principal.NTAccount]).ToString()
@davegreen
davegreen / Get-ADDate.ps1
Last active Dec 19, 2015
A function that can be passed a date from AD, such as the lastlogon attribute and returns a string of the date, or the string 'Never'.
View Get-ADDate.ps1
# Returns a date string based on an AD attribute (like lastlogon, or accountexpires).
# Param1: $addate - AD attribute date value.
Function Get-ADDate($addate)
{
Try
{
$formatteddate = [datetime]::FromFileTime($addate).Date.ToString()
}
Catch
View CheckAttribWritable.cs
/// <summary>
/// Gets the DirectoryEntry object of the LDAP distinguishedname passed in, using the current user credentials.
/// </summary>
/// <param name="path">A distinguishedname of the object you wish to get the DirectoryEntry for.</param>
/// <returns></returns>
private static DirectoryEntry GetDirectoryEntry(string path)
{
DirectoryEntry de = new DirectoryEntry();
de.Path = path;
de.AuthenticationType = AuthenticationTypes.Secure;
@davegreen
davegreen / CheckFirewall.ps1
Created Jan 27, 2016
SCOM monitor script for checking firewall status. Requires something like the PowerShell script monitor MP by Wei Lim: https://gallery.technet.microsoft.com/Sample-Management-Pack-17b76379
View CheckFirewall.ps1
$API = New-Object -ComObject "MOM.ScriptAPI" -ErrorAction Stop
$PropertyBag = $API.CreatePropertyBag()
$Profiles = @{'Domain' = '0'; 'Standard' = '0'; 'Public' = '0'}
$Profiles.Domain = (Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile' -Name EnableFirewall).EnableFirewall
$Profiles.Standard = (Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile' -Name EnableFirewall).EnableFirewall
$Profiles.Public = (Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\PublicProfile' -Name EnableFirewall).EnableFirewall
if ($Profiles.Values -contains 0)
{
You can’t perform that action at this time.