My PowerShell Profile

For this month’s meeting of the Atlanta PowerShell User Group I demoed my Windows PowerShell profile and I promised I would post it online. So here it is.


 

 

<#=============================================================================
Script Name:     Universal Profile
Created On:      05/22/2009
Author:          Mark E. Schill
File:            profile.ps1
Usage:           PS> . profile.ps1
Version:         1.2
Purpose:         Serves as a PowerShell Profile that can be used on multiple systems
Requirements:    <NONE>
Last Updated:    06/05/2010
History:
         1.2 06/05/2010 - Many Numerous changes.
                 1.1 10/11/2009 - Converted to strictly 2.0 and updated layout
              1.0 05/22/2009 - Initial Revision

         ** Licensed under a Creative Commons Attribution 3.0 License **
=============================================================================#>

<# This must be configured on systems where this script is run
 New-PSDrive -name Scripts -psprovider FileSystem -root <Location of Scripts Folder> -Description "Scripts Folder"
 . Scripts:Profilesprofile.ps1
#>

# Main Function is just like the C# Main function. I use it to be be able to put functions last.
function Main
{

  # Grab some system Information to be displayed
  $PSVersion = [System.Diagnostics.FileVersionInfo]::GetVersionInfo("$PSHomePowershell.exe").FileVersion
  $IPAddress = @( Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.DefaultIpGateway } )[0].IPAddress[0]
  $Cert = Get-ChildItem -Path Cert:CurrentUsermy -CodeSigningCert

    # Set up general aliases
  New-Alias -Name "Edit" -Value "edit-file" -force

  # Add to Module path so I can just do "ipmo Module"
  if ( !($Env:PSModulepath.Contains($(Convert-Path Scripts:CoreModulesManual)) ))
  {    $env:PSMODULEPATH += ";" + $(Convert-Path Scripts:CoreModulesManual) }

  # Import my auto modules.
  Get-ChildItem $(Convert-Path Scripts:CoreModulesAuto) | Where-Object {$_.PsIsContainer} | %{ Import-Module $($_.FullName) -Force }

  ## We also want to add our scripts directory to the path
  $ENV:PATH += Get-Item Scripts:CoreFunctions | ? { $_.PsIsContainer } | % {";$($_.FullName)" }
  $ENV:PATH += Get-ChildItem Scripts:CoreFunctions* | ? { $_.PsIsContainer } | % {";$($_.FullName)" }

  # Machine Based Rules
  switch -regex ( $env:COMPUTERNAME)
  {
    ".+"
    {    }
    "L186404"
    {      Add-PSSnapin VMware.VimAutomation.Core -ErrorAction SilentlyContinue }
    "EINSTEIN"
    {
      Add-PSSnapin "NetCmdlets" -ErrorAction SilentlyContinue
      Add-PSSnapin "PowerGadgets" -ErrorAction SilentlyContinue
    }
  }

  # Host based rules
  switch ( $Host.Name )
  {
    "PowerShellPlus Host"
    {
      $Color_Label = "Cyan"
      $Color_Value_1 = "Green"
      $Color_Value_2 = "Yellow"
      $HostWidth = $Host.UI.RawUI.WindowSize.Width
    }
    'Windows PowerShell ISE Host'
    {
      $Color_Label = "DarkCyan"
      $Color_Value_1 = "Magenta"
      $Color_Value_2 = "DarkGreen"
      $HostWidth = 80

            Import-Module ISEPack 

            $PSISE.options.FontName = "Consolas"

      # watch for changes to the Files collection of the current Tab
      register-objectevent $psise.CurrentPowerShellTab.Files collectionchanged -action {
        # iterate ISEFile objects
        $event.sender | % {
          # set private field which holds default encoding to ASCII
          $_.gettype().getfield("encoding","nonpublic,instance").setvalue($_, [text.encoding]::ascii)
        }
      } | Out-null
    }
    default
    {
      $Color_Label = "Cyan"
      $Color_Value_1 = "Green"
      $Color_Value_2 = "Yellow"
      $HostWidth = $Host.UI.RawUI.WindowSize.Width

      if ( $env:PROCESSOR_ARCHITECTURE -eq 'AMD64')
      {        $NPP = "${env:ProgramFiles(x86)}Notepad++Notepad++.exe" }
      else
      {        $NPP = "$env:ProgramFilesNotepad++Notepad++.exe" }
      if (Test-Path $NPP) { Set-Alias -Name Edit-File -Value $NPP -Force } 

      # Initialize PowerTab
      & $(Convert-Path scripts:CoreIncludesPowerTabInit-TabExpansion.ps1) -ConfigurationLocation $(Convert-Path scripts:CoreIncludesPowerTab)
    }

  }

  Record-Session # Start Session Recording
  Clear-Host

    $PreviousColor = $Host.UI.RawUI.ForegroundColor

  # Display relevant information
  Write-Host "ComputerName:`t`t" -ForegroundColor $Color_Label -nonewline
  Write-Host "$($env:COMPUTERNAME)" -ForegroundColor $Color_Value_2
  Write-Host "IP Address:`t`t" -ForeGroundColor $Color_Label -nonewline
  Write-Host $IPAddress -ForeGroundColor $Color_Value_2
  Write-Host "UserName:`t`t" -ForegroundColor $Color_Label -nonewline
  Write-Host "$env:UserDomain$env:UserName" -ForegroundColor $Color_Value_2
  Write-Host "PowerShell Version:`t" -ForegroundColor $Color_Label -nonewline
  Write-Host $PSVersion -ForegroundColor $Color_Value_2
  Write-Host "Code Signing Cert:`t" -ForegroundColor $Color_Label -nonewline
  Write-Host $Cert.FriendlyName -ForegroundColor $Color_Value_2

  Write-Host "Snapins:`t`t" -ForegroundColor $Color_Label -NoNewline
  $StartingPosition = $Host.UI.RawUI.CursorPosition.X
  Write-Host "".PadRight(30,"-") -ForegroundColor $Color_Label
  Get-PSSnapin | Format-Wide -autosize | Out-String -Width $( $HostWidth -$StartingPosition -1 ) -stream | Where-Object {$_} | %{ Write-Host $($(" "*$StartingPosition) + $_) -foregroundColor $Color_Value_1} 

  Write-Host "Modules:`t`t" -foregroundcolor $Color_Label -noNewLine
  $StartingPosition = $Host.UI.RawUI.CursorPosition.X
  Write-Host "".PadRight(30,"-") -ForegroundColor $Color_Label

  Get-Module | Format-Wide -AutoSize | Out-String -Width $( $HostWidth -$StartingPosition -1 ) -stream | Where-Object {$_} |  %{ Write-Host $($(" "*$StartingPosition) + $_) -foregroundColor $Color_Value_1}
  Get-Module -ListAvailable | Format-Wide -Column 3 | Out-String -Width $( $HostWidth -$StartingPosition -1 ) -stream | Where-Object {$_} |  %{ Write-Host $($(" "*$StartingPosition) + $_) -foregroundColor $Color_Value_2} 

  Write-Host "Functions:`t`t" -foregroundcolor $Color_Label -noNewLine
  $StartingPosition = $Host.UI.RawUI.CursorPosition.X
  Write-Host "".PadRight(30,"-") -ForegroundColor $Color_Label
  Get-ChildItem Scripts:CoreFunctions* -Recurse | Select-Object Name | Format-Wide -AutoSize | Out-String -Width $( $HostWidth -$StartingPosition -1 ) -stream | Where-Object {$_} |  %{ Write-Host $($(" "*$StartingPosition) + $_) -foregroundColor $Color_Value_1}  

  $Host.UI.RawUI.ForegroundColor =$PreviousColor
  Write-Host ""
  Write-Host ""

  # This should go OUTSIDE the prompt function, it doesn't need re-evaluation
    # We're going to calculate a prefix for the window title
  if(!$global:WindowTitlePrefix) {
    $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
    $p = New-Object System.Security.Principal.WindowsPrincipal($id)
    if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))
    {
      $global:WindowTitlePrefix = "PoSh (ADMIN) -"
    } else {
      $global:WindowTitlePrefix = "PoSh - "
    }
  }

  $LogicalDisk = @()
  gwmi Win32_LogicalDisk -filter "DriveType='3'" | % {
    $LogicalDisk += @($_ | Select @{n="Name";e={$_.Caption}},
    @{n="Volume Label";e={$_.VolumeName}},
    @{n="Used (GB)";e={"{0:N2}" -f ( ($_.Size/1GB) - ($_.FreeSpace/1GB) )}},
    @{n="Free (GB)";e={"{0:N2}" -f ($_.FreeSpace/1GB)}},
    @{n="Size (GB)";e={"{0:N2}" -f ($_.Size/1GB)}},
    @{n="Free (%)";e={if($_.Size) { "{0:N2}" -f ( ($_.FreeSpace/1GB) / ($_.Size/1GB) * 100 )}else{"NAN"} }} )
  } 

  $Host.UI.RawUI.ForegroundColor = $Color_Value_2
  $LogicalDisk | format-table -AutoSize | out-string
  $Host.UI.RawUI.ForegroundColor = $PreviousColor

  Get-SystemUptime
  Write-Host

  cd scripts:

}

#Record all Powershell activities
function Record-Session
 {
  $MyPath = "$((Get-PSDrive Scripts).Root)_Transcripts"
  if ( ! (Test-Path $MyPath ) ) { mkdir $MyPath > $null }
  $ComputerName = $env:ComputerName
  $Date = Get-Date -Format "yyyy-MM-dd"
  switch ( $Host.Name )
  {
    "PowerShellPlus Host"
    {      Start-Transcript -path "$MyPath$ComputerName-$Date.log" -ea silentlycontinue }
    'Windows PowerShell ISE Host'
        {
            # PowerShell ISE does not support transcription
        }
        default
    {      Start-Transcript -path "$MyPath$ComputerName-$Date.log" -append -ea silentlycontinue }

  }
}

function prompt
{

  Write-Host "$([char]0x0A7) " -NoNewline -ForegroundColor $Color_Label
  Write-Host ([net.Dns]::GetHostName()) -NoNewline -ForegroundColor $Color_Value_1
  Write-Host ' {' -NoNewline -ForegroundColor "Red"
  Write-Host (shorten-path (pwd).path) -NoNewline -ForegroundColor $Color_Label
  Write-Host '}' -NoNewline -ForegroundColor "Red"
  return ' '
}


function shorten-path([string] $path) {
  $loc = $path.Replace($HOME, '~')
  # remove prefix for UNC paths
  $loc = $loc -replace '^[^:]+::', ''
  # make path shorter like tabs in Vim,
    # handle paths starting with  and . correctly
  return ($loc -replace '(.?)([^]{3})[^]*(?=)','$1$2')
} 

function Get-SystemUptime ($computer = "$env:computername") {
  $lastboot = [System.Management.ManagementDateTimeconverter]::ToDateTime("$((gwmi  Win32_OperatingSystem -computername $computer).LastBootUpTime)")
  $uptime = (Get-Date) - $lastboot
  Write-Host "System Uptime for $computer is: " -NoNewline -ForegroundColor $Color_Value_2
  Write-Host $uptime.days -NoNewline -ForegroundColor $Color_Label
  Write-Host " days " -NoNewline -ForegroundColor $Color_Value_2
  Write-Host $uptime.hours -NoNewline -ForegroundColor $Color_Label
  Write-Host " hours " -NoNewline -ForegroundColor $Color_Value_2
  Write-Host $uptime.minutes -NoNewline -ForegroundColor $Color_Label
  Write-Host " minutes " -NoNewline -ForegroundColor $Color_Value_2
  Write-Host $uptime.seconds -NoNewline -ForegroundColor $Color_Label
  Write-Host " seconds" -ForegroundColor $Color_Value_2
}

# Call "Main" Function
. Main

# SIG # Begin signature block
# MIISBgYJKoZIhvcNAQcCoIIR9zCCEfMCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQU3C9SbvolyquBkZm/ktAb3cfd
# pMiggg47MIIGcDCCBFigAwIBAgIBJDANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQG
# EwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERp
# Z2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2Vy
# dGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDcxMDI0MjIwMTQ2WhcNMTcxMDI0MjIw
# MTQ2WjCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzAp
# BgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNV
# BAMTL1N0YXJ0Q29tIENsYXNzIDIgUHJpbWFyeSBJbnRlcm1lZGlhdGUgT2JqZWN0
# IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyiOLIjUemqAbPJ1J
# 0D8MlzgWKbr4fYlbRVjvhHDtfhFN6RQxq0PjTQxRgWzwFQNKJCdU5ftKoM5N4YSj
# Id6ZNavcSa6/McVnhDAQm+8H3HWoD030NVOxbjgD/Ih3HaV3/z9159nnvyxQEckR
# ZfpJB2Kfk6aHqW3JnSvRe+XVZSufDVCe/vtxGSEwKCaNrsLc9pboUoYIC3oyzWoU
# TZ65+c0H4paR8c8eK/mC914mBo6N0dQ512/bkSdaeY9YaQpGtW/h/W/FkbQRT3sC
# pttLVlIjnkuY4r9+zvqhToPjxcfDYEf+XD8VGkAqle8Aa8hQ+M1qGdQjAye8OzbV
# uUOw7wIDAQABo4IB6TCCAeUwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
# AQYwHQYDVR0OBBYEFNBOD0CZbLhLGW87KLjg44gHNKq3MB8GA1UdIwQYMBaAFE4L
# 7xqkQFulF2mHMMo0aEPQQa7yMD0GCCsGAQUFBwEBBDEwLzAtBggrBgEFBQcwAoYh
# aHR0cDovL3d3dy5zdGFydHNzbC5jb20vc2ZzY2EuY3J0MFsGA1UdHwRUMFIwJ6Al
# oCOGIWh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3Nmc2NhLmNybDAnoCWgI4YhaHR0
# cDovL2NybC5zdGFydHNzbC5jb20vc2ZzY2EuY3JsMIGABgNVHSAEeTB3MHUGCysG
# AQQBgbU3AQIBMGYwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
# L3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
# L2ludGVybWVkaWF0ZS5wZGYwEQYJYIZIAYb4QgEBBAQDAgABMFAGCWCGSAGG+EIB
# DQRDFkFTdGFydENvbSBDbGFzcyAyIFByaW1hcnkgSW50ZXJtZWRpYXRlIE9iamVj
# dCBTaWduaW5nIENlcnRpZmljYXRlczANBgkqhkiG9w0BAQUFAAOCAgEAcnMLA3Va
# N4OIE9l4QT5OEtZy5PByBit3oHiqQpgVEQo7DHRsjXD5H/IyTivpMikaaeRxIv95
# baRd4hoUcMwDj4JIjC3WA9FoNFV31SMljEZa66G8RQECdMSSufgfDYu1XQ+cUKxh
# D3EtLGGcFGjjML7EQv2Iol741rEsycXwIXcryxeiMbU2TPi7X3elbwQMc4JFlJ4B
# y9FhBzuZB1DV2sN2irGVbC3G/1+S2doPDjL1CaElwRa/T0qkq2vvPxUgryAoCppU
# FKViw5yoGYC+z1GaesWWiP1eFKAL0wI7IgSvLzU3y1Vp7vsYaxOVBqZtebFTWRHt
# XjCsFrrQBngt0d33QbQRI5mwgzEp7XJ9xu5d6RVWM4TPRUsd+DDZpBHm9mszvi9g
# VFb2ZG7qRRXCSqys4+u/NLBPbXi/m/lU00cODQTlC/euwjk9HQtRrXQ/zqsBJS6U
# J+eLGw1qOfj+HVBl/ZQpfoLk7IoWlRQvRL1s7oirEaqPZUIWY/grXq9r6jDKAp3L
# ZdKQpPOnnogtqlU4f7/kLjEJhrrc98mrOWmVMK/BuFRAfQ5oDUMnVmCzAzLMjKfG
# cVW/iMew41yfhgKbwpfzm3LBr1Zv+pEBgcgW6onRLSAn3XHM0eNtz+AkxH6rRf6B
# 2mYhLEEGLapH8R1AMAo4BbVFOZR5kXcMCwowggfDMIIGq6ADAgECAgIBSzANBgkq
# hkiG9w0BAQUFADCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0
# ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcx
# ODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDIgUHJpbWFyeSBJbnRlcm1lZGlhdGUg
# T2JqZWN0IENBMB4XDTEwMDUyMzAwNTIwMVoXDTEyMDUyMjE0NTA0NFowgcAxIDAe
# BgNVBA0TFzIwMDMzNi1wSlgyYzcxSDNNODAwaHhaMQswCQYDVQQGEwJVUzEQMA4G
# A1UECBMHR2VvcmdpYTEPMA0GA1UEBxMGRHVsdXRoMS0wKwYDVQQLEyRTdGFydENv
# bSBWZXJpZmllZCBDZXJ0aWZpY2F0ZSBNZW1iZXIxFDASBgNVBAMTC01hcmsgU2No
# aWxsMScwJQYJKoZIhvcNAQkBFhhNYXJrLlNjaGlsbEBjbXNjaGlsbC5uZXQwggIi
# MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC0Elw41CA/h1CDPhnokCKKrqmY
# PuqHNTniBcRHJBmmvo4DdFvInuUEiV7e5BLsm3sjzcDsFtRr2vBohy9TsG2dyUVI
# cBoePTRIthq9pp8+0DwRdaFftpsSNcS2jn7/OnyXfxyYEosi0FlWHi9LzDcopnFL
# t0XzlexddnHpb2vrfiuibpdgNOEmiNeOgu15VlF8UlSSqAaUr9Dp8rjCFBiKWwP0
# x04PBlLDflQvv2epL2ZF1oUD6KslznN/wJZ1o11qIEe+N4x3r/JSN5I9abiWylqk
# bvsO+NozImNArYuDGp4NsxMsF8npARi4b1xAxqII2VrDOkM2Ha7Mp8UPAEm2Ts08
# EnCqgOScB8E37PMyFD4ShX9cpLs0zQgWv8Ons6syNct1ZMorA8VpKlEha+t6o7TW
# f6x9lgBqzzTRkXLi5/EJyVnNeEYN3u3pN7FEOYo3wetychk+LKTV9OWL3Wb8Pdzp
# 8fleKJHcYhfErxMvv5vSJpUeWdbGP27pL5Niw87fskj4rOdv36yKCxJ+OXpCnsDw
# fTqF21Wzq219WfapmPdkhSl7Io/+Vx10QlfokfoLoZ3ZijoXQeRwlVqq8CiJPD2C
# n3uDw54y5JEcDmEfSdVV5ZsI5wiC501w2TWuGmw2wdcxJqX2qnrIYDRJwmxIp6EK
# De4qzaa4/Cx5npY7kQIDAQABo4IC9zCCAvMwCQYDVR0TBAIwADAOBgNVHQ8BAf8E
# BAMCB4AwOgYDVR0lAQH/BDAwLgYIKwYBBQUHAwMGCisGAQQBgjcCARUGCisGAQQB
# gjcCARYGCisGAQQBgjcKAw0wHQYDVR0OBBYEFKoz7/O/Kqbe739wknVtcdz88rEU
# MB8GA1UdIwQYMBaAFNBOD0CZbLhLGW87KLjg44gHNKq3MIIBQgYDVR0gBIIBOTCC
# ATUwggExBgsrBgEEAYG1NwECATCCASAwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cu
# c3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu
# c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgbcGCCsGAQUFBwICMIGqMBQW
# DVN0YXJ0Q29tIEx0ZC4wAwIBARqBkUxpbWl0ZWQgTGlhYmlsaXR5LCBzZWUgc2Vj
# dGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZp
# Y2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cu
# c3RhcnRzc2wuY29tL3BvbGljeS5wZGYwYwYDVR0fBFwwWjAroCmgJ4YlaHR0cDov
# L3d3dy5zdGFydHNzbC5jb20vY3J0YzItY3JsLmNybDAroCmgJ4YlaHR0cDovL2Ny
# bC5zdGFydHNzbC5jb20vY3J0YzItY3JsLmNybDCBiQYIKwYBBQUHAQEEfTB7MDcG
# CCsGAQUFBzABhitodHRwOi8vb2NzcC5zdGFydHNzbC5jb20vc3ViL2NsYXNzMi9j
# b2RlL2NhMEAGCCsGAQUFBzAChjRodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9jZXJ0
# cy9zdWIuY2xhc3MyLmNvZGUuY2EuY3J0MCMGA1UdEgQcMBqGGGh0dHA6Ly93d3cu
# c3RhcnRzc2wuY29tLzANBgkqhkiG9w0BAQUFAAOCAQEAEWD4Nlq3SFWlbKiuM4Hd
# gDslvfb+xEIMhAxyWTz6he4/IwQUTP3Rr7Ef5CRmZLMRsgxq2+bB8EumkHIIrO/2
# dyuP42svD4NX3lJVTnXCGmJkPbgZuuE4Q9lCP5iQi9BzRcS79dFgMvxT4ztRvVBV
# NDvv8fhkNdkByMCSa1ldGlN88xyazT6xTPD9JXl5dr1FmSLaesL5acxWfANgdOTE
# C/tu3TDUBVeibtnnox0ifc449Tkdcui38HMmxY4n1ExH8c4DtAusCvdDU3CS8Knt
# ukt+KuMcLI+kSmNgAtzJydWzDeEqTHn9pppAZiTqcbAAFWphkbQbg+J6Fslw3Eq/
# oDGCAzUwggMxAgEBMIGTMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRD
# b20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2ln
# bmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMiBQcmltYXJ5IEludGVybWVk
# aWF0ZSBPYmplY3QgQ0ECAgFLMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEMMQow
# CKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcC
# AQsxDjAMBgorBgEEAYI3AgEWMCMGCSqGSIb3DQEJBDEWBBTENjuc9oIG5MhJ4eyJ
# qiHgILA3KzANBgkqhkiG9w0BAQEFAASCAgAgghC7ISokY6Z/AfLAcMEstbuuA9wk
# b4lG7UKi/q9iFVbiBsSEN8eMbTjMScBzicb/CR9M46qFjEr7lgcUHNgcCikszrXT
# +stOHnF1UoaXWRkMYllY6sbExqyPGsJNjEOwqgOcD+FnEntacbqTTvA8pAw5V45i
# 9jDGHjZJv/XWFkhzxZxqTCXz44ZjhHvjJtNHlT5cbE0CxvE2WW9cnWw/S5zw+s1Y
# WbNn2W9gRqQJtwZXxCCakxRN2bzHHVAY1HHj6c7JkF1Pehx5rMIiMVWVDmCgNjgd
# VsOE7KhPY1hFMqfBEA44qGrW7NOWhaqeOjslaeMdv4u8qXrk1vOnOnDOUJUSSEgQ
# sj/qCxNPhFt1rKPw62yPmz4drUGDwhpMiNFu/8TgYY4DVWA8KIsQYHbM69KJo+i7
# Vt/p0SoMTCDL6EDnwvia4cwuKlVaxmYJ9wiIlE+5xoPn1x6QjoTVELaJTSNre3pB
# 05dCGUAS2h8Xc+DOBLCe24K3mD3HdBTkpFPe13ojeOkFqJScYLr4998lcCFk/U8j
# /Fl9CorlpWwgoVCCxHW757dv7THLviuK1t2oI6jpfgQzwTurXkGeiziEWYBiPnUM
# KXmD0ADxQehIEOF6m3PANy1sxlt5rG/Mg4YhB7MbfjBGrfsh7Vtgsgdk+oaqRao3
# OCh/9C4/oNBKpw==
# SIG # End signature block


2 Comments

  1. Mike

    Great profile script. Just learning here so I have a q or 2.

    This script assumes some custom directory setups \core\functions\ and the like.
    Would you have the time to fill me in on what goes into each dir and where it deviates form “Default”? I am guessing it is to move it out of you profile and make it as portable as possible. But no matter what modules and such I load into each \core\whatever i still get load errors.

    If no time I understand. Thangks for the great script and somewhere to start!!!

    MIke

Comments are closed.