I, Computer

Disclaimer: http://geekswithblogs.net/marcde/archive/2011/07/01/disclaimer.aspx


News

My Stats

  • Posts - 60
  • Comments - 43
  • Trackbacks - 0

Tag Cloud


Recent Comments


Recent Posts


Article Categories


Archives


Post Categories


Blogs


Exchange


Forums


Storage


Tools


Travel


Virtualization


Web comics


 

I’m a lazy bastard and am constantly looking for ways to deploy my lab machines faster and with less effort. I’m interested in learning and testing as much as I can but I just don’t want to be installing machines constantly! The first step for me was experimenting with MDT, which was brilliant! But it still took to long to install a VM and still too much effort (told you I’m lazy : ))! So the second step for me was to create a number of VHDX files and use those to deploy the virtual machines resulting ......

 

Something I need to keep for usage in the future:$hostname=hostnameIf (get-exchangeserver $hostname | where {$_.isClientAccessServer -eq $true}) { } else { } If (get-exchangeserver $hostname | where {$_.isHubTransportServer -eq $true}) { } else { }If (get-exchangeserver $hostname | where {$_.isMailboxServer -eq $true}) { } else { }If (get-exchangeserver $hostname | where {$_.isUnifiedMessagingServer -eq $true}) { } else { }If (get-exchangeserver $hostname | where {$_.isEdgeServer -eq $true}) { } ......

 

Connecting to Exchange powershell is, for normal operations, as simple as opening the shortcut on you start menu :).However, if you have the need to have some scripts perform actions against your Exchange you can use the below code to make that happen!$s = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://YourCASServerFQDN/Po... -Authentication Kerberos Import-PSSession $s Add-PSSnapin Microsoft.Exchange.Manageme... . $env:ExchangeInstallPath\bi... ......

 

This function will download and install ,NET 4.0. It uses the Get-Framework-Versions function to determine if the installation is necessary or not. Internet Connectivity will be required as the script auto downloads the setup file (and sleeps for 360 seconds... I had a function in there to monitor for install completion at first, turns out the setup file spawns so many childprocesses the function just got confused and locked up -_-)Alternatively you could drop the installation file in the folder ......

 

This function will use the test-key function posted earlier. It will check which .NET frameworks are installed (currently only checking for .NET 4.0) but can be easily adapted and/or expanded. function Get-Framework-Versions(){ $installedFrameworks = @() if(Test-Key "HKLM:\Software\Microsoft\NET Framework Setup\NDP\v4\Client" "Install") { $installedFrameworks += "4.0c" } if(Test-Key "HKLM:\Software\Microsoft\NET Framework Setup\NDP\v4\Full" "Install") { $installedFrameworks += "4.0" } return $installedFrameworks} ......

 

Disclaimer: Code is not mine but forgot where I got it. Ping me if this is yours and you will receive full kudos to it :)

function Test-Key([string]$path, [string]$key)
{
    if(!(Test-Path $path)) { return $false }
    if ((Get-ItemProperty $path).$key -eq $null) { return $false }
    return $true
}


 

Disclaimer: This script is not of my own making. I found it on a share somewhere and it is so handy I started using in a bunch of scripts. To the writer: If you're out there, somewhere, when you see this, thank you! Check if script is running as Adminstrator and if not use RunAs # Use Check Switch to check if admin param([Switch]$Check) $IsAdmin = ([Security.Principal.Window... [Security.Principal.Windows... ).IsInRole([Security.Princi... "Administrator") ......