Function: New-BalloonTip – PowerShell Function to Show Balloon Tips

February 21st, 2012 5 comments

Description

Sometimes, we run scripts that may take quite a while to process. Rather than sit idly and watch the script process, we can trigger balloon tips to let us know when it’s done. Something like:

Balloon Tip

Balloon Tip

These are the same type of balloon tips that alert us to outdated or disabled security settings, pending updates, etc.

Windows Update balloon tip

Windows Update balloon tip

This handy little function makes it very easy to use this useful feature. I took the info from PS1 at http://powershell.com/cs/blogs/tips/archive/2011/09/27/displaying-balloon-tip.aspx and put it into a function and optimized it a little. You can specify the icon (none, info, warning, error), the title text, and the tip text.

function New-BalloonTip  {
<#
.SYNOPSIS
  Displays a balloon tip in the lower right corner of the screen.

.DESCRIPTION
  Displays a balloon tip in the lower right corner of the screen. Icon, title, and text can be customized.

.NOTES
  Version                 : 1.3
  Wish List               :
  Rights Required         : Local admin on server
                          : If script is not signed, ExecutionPolicy of RemoteSigned (recommended) or Unrestricted (not recommended)
                          : If script is signed, ExecutionPolicy of AllSigned (recommended), RemoteSigned, 
                            or Unrestricted (not recommended)
  Sched Task Required     : No
  Lync/Skype4B Version    : N/A
  Author/Copyright        : © Pat Richard, Skype for Business MVP - All Rights Reserved
  Email/Blog/Twitter      : pat@innervation.com   https://www.ucunleashed.com @patrichard
  Dedicated Post          : https://www.ucunleashed.com/1038
  Disclaimer              : You running this script means you won't blame me if this breaks your stuff. This script is
                            provided AS IS without warranty of any kind. I disclaim all implied warranties including, 
                            without limitation, any implied warranties of merchantability or of fitness for a particular
                            purpose. The entire risk arising out of the use or performance of the sample scripts and 
                            documentation remains with you. In no event shall I be liable for any damages whatsoever 
                            (including, without limitation, damages for loss of business profits, business interruption,
                            loss of business information, or other pecuniary loss) arising out of the use of or inability
                            to use the script or documentation. 
  Acknowledgements        : 
  Assumptions             : ExecutionPolicy of AllSigned (recommended), RemoteSigned or Unrestricted (not recommended)
  Limitations             : 
  Known issues            : None yet, but I'm sure you'll find some!                        

.LINK
  
Function: New-BalloonTip – PowerShell Function to Show Balloon Tips
.EXAMPLE New-BalloonTip -icon [none|info|warning|error] -title [title text] -text [text] Description ----------- Creates a balloon tip in the lower right corner. .INPUTS This function does support pipeline input. #> #Requires -Version 2.0 [CmdletBinding(SupportsShouldProcess = $true)] param( # Specifies the type of icon shown in the balloon tip [parameter(Position = 0, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [ValidateSet("None", "Info", "Warning", "Error")] [ValidateNotNullOrEmpty()] [string] $Icon = "Info", # Defines the actual text shown in the balloon tip [parameter(Position = 1, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, Mandatory = $true, HelpMessage = "No text specified!")] [ValidateNotNullOrEmpty()] [string] $Text, # Defines the title of the balloon tip [parameter(Position = 2, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, Mandatory = $true, HelpMessage = "No title specified!")] [ValidateNotNullOrEmpty()] [string] $Title, # Specifies how long to display the balloon tip [parameter(Position = 3, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [ValidateNotNullOrEmpty()] [ValidatePattern("[0-9]")] [int] $Timeout = 10000 ) PROCESS{ [system.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | Out-Null # Add-Type -AssemblyName System.Windows.Forms #if (! $script:balloon) { #$script:balloon = New-Object System.Windows.Forms.NotifyIcon $balloon = New-Object System.Windows.Forms.NotifyIcon #} $path = Get-Process -Id $pid | Select-Object -ExpandProperty Path $balloon.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($path) $balloon.BalloonTipIcon = $Icon $balloon.BalloonTipText = $Text $balloon.BalloonTipTitle = $Title $balloon.Visible = $true $balloon.ShowBalloonTip($Timeout) $balloon.Dispose() } # end PROCESS } # end function New-BalloonTip

And you can call it by either supplying the parameter names:

New-BalloonTip -icon info -text 'PowerShell script has finished processing' -title 'Completed'

or not:

New-BalloonTip info 'PowerShell script has finished processing' 'Completed'

Donations

I’ve never been one to really solicit donations for my work. My offerings are created because *I* need to solve a problem, and once I do, it makes sense to offer the results of my work to the public. I mean, let’s face it: I can’t be the only one with that particular issue, right? Quite often, to my surprise, I’m asked why I don’t have a “donate” button so people can donate a few bucks. I’ve never really put much thought into it. But those inquiries are coming more often now, so I’m yielding to them. If you’d like to donate, you can send a few bucks via PayPal at https://www.paypal.me/PatRichard. Money collected from that will go to the costs of my website (hosting and domain names), as well as to my home lab.

Categories: PowerShell Tags: ,

Functions: Get-UACStatus Set-UACStatus – PowerShell Functions for Getting and Setting UAC Status

February 20th, 2012 7 comments

Windows-logo-128x128User Account Control, also known as UAC, was designed to reduce vulnerability by requiring confirmation when system settings are being changed. Some people hate it, some don’t mind it. But most understand it’s intent.

In any case, when deploying servers, it’s key to know what state the UAC settings are in, so that we can script accordingly. Normally, I just set the registry value to whatever I need it to be, using a one-liner such as:

To disable UAC:

Set-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\policies\system -Name EnableLUA -Value 0

To enable UAC:

Set-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\policies\system -Name EnableLUA -Value 1

UAC changes how a token is assembled when you log on. If we’re making changes to this, remember that a reboot is required before the new setting takes effect.

But what if we just need to programmatically peek at what UAC is set to, so that we can act accordingly? Well, this handy little function should help:

function Get-UACStatus {
	<#
	.SYNOPSIS
	   	Gets the current status of User Account Control (UAC) on a computer.

	.DESCRIPTION
	    Gets the current status of User Account Control (UAC) on a computer. $true indicates UAC is enabled, $false that it is disabled.

	.NOTES
	    Version      			: 1.0
	    Rights Required			: Local admin on server
	    					: ExecutionPolicy of RemoteSigned or Unrestricted
	    Author(s)    			: Pat Richard (pat@innervation.com)
	    Dedicated Post			: https://www.ucunleashed.com/1026
	    Disclaimer   			: You running this script means you won't blame me if this breaks your stuff.

	.EXAMPLE
		Get-UACStatus

		Description
		-----------
		Returns the status of UAC for the local computer. $true if UAC is enabled, $false if disabled.

	.EXAMPLE
		Get-UACStatus -Computer [computer name]

		Description
		-----------
		Returns the status of UAC for the computer specified via -Computer. $true if UAC is enabled, $false if disabled.

	.LINK
	  
Functions: Get-UACStatus Set-UACStatus – PowerShell Functions for Getting and Setting UAC Status
.INPUTS None. You cannot pipe objects to this script. #Requires -Version 2.0 #> [cmdletBinding(SupportsShouldProcess = $true)] param( [parameter(ValueFromPipeline = $false, ValueFromPipelineByPropertyName = $true, Mandatory = $false)] [string]$Computer ) [string]$RegistryValue = "EnableLUA" [string]$RegistryPath = "Software\Microsoft\Windows\CurrentVersion\Policies\System" [bool]$UACStatus = $false $OpenRegistry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine,$Computer) $Subkey = $OpenRegistry.OpenSubKey($RegistryPath,$false) $Subkey.ToString() | Out-Null $UACStatus = ($Subkey.GetValue($RegistryValue) -eq 1) write-host $Subkey.GetValue($RegistryValue) return $UACStatus } # end function Get-UACStatus

You can call it via

Get-UACStatus

to see the status for the local machine, and

Get-UACStatus -Computer [computer name]

to see the status of a remote machine. Full help is available via

Get-Help Get-UACStatus

And if we need a little function to deal with enabling or disabling, for building into deployment scripts, we have this one, which includes functionality for rebooting:

function Set-UACStatus {
	<#
	.SYNOPSIS
		Enables or disables User Account Control (UAC) on a computer.

	.DESCRIPTION
		Enables or disables User Account Control (UAC) on a computer.

	.NOTES
		Version      			: 1.0
		Rights Required			: Local admin on server
						: ExecutionPolicy of RemoteSigned or Unrestricted
		Author(s)    			: Pat Richard (pat@innervation.com)
		Dedicated Post			: https://www.ucunleashed.com/1026
		Disclaimer   			: You running this script means you won't blame me if this breaks your stuff.

	.EXAMPLE
		Set-UACStatus -Enabled [$true|$false]

		Description
		-----------
		Enables or disables UAC for the local computer.

	.EXAMPLE
		Set-UACStatus -Computer [computer name] -Enabled [$true|$false]

		Description
		-----------
		Enables or disables UAC for the computer specified via -Computer.

	.LINK
	  
Functions: Get-UACStatus Set-UACStatus – PowerShell Functions for Getting and Setting UAC Status
.INPUTS None. You cannot pipe objects to this script. #Requires -Version 2.0 #> param( [cmdletbinding()] [parameter(ValueFromPipeline = $false, ValueFromPipelineByPropertyName = $true, Mandatory = $false)] [string]$Computer = $env:ComputerName, [parameter(ValueFromPipeline = $false, ValueFromPipelineByPropertyName = $true, Mandatory = $true)] [bool]$enabled ) [string]$RegistryValue = "EnableLUA" [string]$RegistryPath = "Software\Microsoft\Windows\CurrentVersion\Policies\System" $OpenRegistry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine,$Computer) $Subkey = $OpenRegistry.OpenSubKey($RegistryPath,$true) $Subkey.ToString() | Out-Null if ($enabled -eq $true){ $Subkey.SetValue($RegistryValue, 1) }else{ $Subkey.SetValue($RegistryValue, 0) } $UACStatus = $Subkey.GetValue($RegistryValue) $UACStatus $Restart = Read-Host "`nSetting this requires a reboot of $Computer. Would you like to reboot $Computer [y/n]?" if ($Restart -eq "y"){ Restart-Computer $Computer -force Write-Host "Rebooting $Computer" }else{ Write-Host "Please restart $Computer when convenient" } } # end function Set-UACStatus

Call it via

Set-UACStatus -Computer [computer name] -Enabled [$true|$false]

And, like Get-UACStatus, full help is available via

Get-Help Set-UACStatus

Donations

I’ve never been one to really solicit donations for my work. My offerings are created because *I* need to solve a problem, and once I do, it makes sense to offer the results of my work to the public. I mean, let’s face it: I can’t be the only one with that particular issue, right? Quite often, to my surprise, I’m asked why I don’t have a “donate” button so people can donate a few bucks. I’ve never really put much thought into it. But those inquiries are coming more often now, so I’m yielding to them. If you’d like to donate, you can send a few bucks via PayPal at https://www.paypal.me/PatRichard. Money collected from that will go to the costs of my website (hosting and domain names), as well as to my home lab.

Update Rollup 1 (UR1) for Exchange Server 2010 SP2 Released

February 13th, 2012 No comments

Microsoft has released the following update rollup for Exchange Server 2010:

  • Update Rollup 1 for Exchange Server 2010 SP2 (2645995)

If you’re running Exchange Server 2010 SP2, you need to apply Update Rollup 1 for Exchange 2010 to address the issues listed below.

Remember, you only need to download the latest update for the version of Exchange that you’re running.

Here is a list of the fixes included in update rollup 1:

  1. 2465015 You cannot view or download an image on a Windows Mobile-based device that is synchronized with an Exchange Server 2010 mailbox
  2. 2492066 An automatic reply message is still sent after you clear the “Allow automatic replies” check box for a remote domain on an Exchange Server 2010 server
  3. 2492082 An Outlook 2003 user cannot view the free/busy information of a resource mailbox in a mixed Exchange Server 2010 and Exchange Server 2007 environment
  4. 2543850 A GAL related client-only message rule does not take effect in Outlook in an Exchange Server 2010 environment
  5. 2545231 Users in a source forest cannot view the free/busy information of mailboxes in a target forest in an Exchange Server 2010 environment
  6. 2549255 A meeting item displays incorrectly as multiple all-day events when you synchronize a mobile device on an Exchange Server 2010 mailbox
  7. 2549286 Inline contents disposition is removed when you send a “Content-Disposition: inline” email message in an Exchange Server 2010 environment
  8. 2556113 It takes a long time for a user to download an OAB in an Exchange Server 2010 organization
  9. 2557323 Problems when viewing an Exchange Server 2003 user’s free/busy information in a mixed Exchange Server 2003 and Exchange Server 2010 environment
  10. 2563245 A user who has a linked mailbox cannot use a new profile to access another linked mailbox in an Exchange Server 2010 environment
  11. 2579051 You cannot move certain mailboxes from an Exchange Server 2003 server to an Exchange Server 2010 server
  12. 2579982 You cannot view the message delivery report of a signed email message by using Outlook or OWA in an Exchange Server 2010 environment
  13. 2585649 The StartDagServerMaintenance.ps1 script fails in an Exchange Server 2010 environment
  14. 2588121 You cannot manage a mail-enabled public folder in a mixed Exchange Server 2003 and Exchange Server 2010 environment
  15. 2589982 The cmdlet extension agent cannot process multiple objects in a pipeline in an Exchange Server 2010 environment
  16. 2591572 “Junk e-mail validation error” error message when you manage the junk email rule for a user’s mailbox in an Exchange Server 2010 environment
  17. 2593011 Warning 2074 and Error 2153 are logged on DAG member servers in an Exchange Server 2010 environment
  18. 2598985 You cannot move a mailbox from a remote legacy Exchange forest to an Exchange Server 2010 forest
  19. 2599434 A Public Folder Calendar folder is missing in the Public Folder Favorites list of an Exchange Server 2010 mailbox
  20. 2599663 The Exchange RPC Client Access service crashes when you send an email message in an Exchange Server 2010 environment
  21. 2600034 A user can still open an IRM-protected email message after you remove the user from the associated AD RMS rights policy template in an Exchange Server 2010 environment
  22. 2600289 A user in an exclusive scope cannot manage his mailbox in an Exchange Server 2010 environment
  23. 2600943 EMC takes a long time to return results when you manage full access permissions in an Exchange Server 2010 organization that has many users
  24. 2601483 “Can’t open this item” error message when you use Outlook 2003 in online mode in an Exchange Server 2010 environment
  25. 2604039 The MSExchangeMailboxAssistants.exe process crashes frequently after you move mailboxes that contain IRM-protected email messages to an Exchange Server 2010 SP1 mailbox server
  26. 2604713 ECP crashes when a RBAC role assignee tries to manage another user’s mailbox by using ECP in an Exchange Server 2010 environment
  27. 2614698 A display name that contains DBCS characters is corrupted in the “Sent Items” folder in an Exchange Server 2010 environment
  28. 2616124 Empty message body when replying to a saved message file in an Exchange Server 2010 SP1 environment
  29. 2616230 IMAP4 clients cannot log on to Exchange Server 2003 servers when the Exchange Server 2010 Client Access server is used to handle proxy requests
  30. 2616361 Multi-Mailbox Search fails if the MemberOfGroup property is used for the management scope in an Exchange Server 2010 environment
  31. 2616365 Event ID 4999 when the Store.exe process crashes on an Exchange Server 2010 mailbox server
  32. 2619237 Event ID 4999 when the Exchange Mailbox Assistants service crashes in Exchange 2010
  33. 2620361 An encrypted or digitally-signed message cannot be printed when S/MIME control is installed in OWA in an Exchange Server 2010 SP1 environment
  34. 2620441 Stop-DatabaseAvailabilityGroup or Start-DatabaseAvailabilityGroup cmdlet fails when run together with the DomainController parameter in an Exchange Server 2010 environment
  35. 2621266 An Exchange Server 2010 database store grows unexpectedly large
  36. 2621403 “None” recipient status in Outlook when a recipient responds to a meeting request in a short period of time in an Exchange Server 2010 environment
  37. 2628154 “The action couldn’t be completed. Please try again.” error message when you use OWA to perform an AQS search that contains “Sent” or “Received” in an Exchange Server 2010 SP1 environment
  38. 2628622 The Microsoft Exchange Information Store service crashes in an Exchange Server 2010 environment
  39. 2628693 Multi-Mailbox Search fails if you specify multiple users in the “Message To or From Specific E-Mail Addresses” option in an Exchange Server 2010 environment
  40. 2629713 Incorrect number of items for each keyword when you search for multiple keywords in mailboxes in an Exchange Server 2010 environment
  41. 2629777 The Microsoft Exchange Replication service crashes on Exchange Server 2010 DAG members
  42. 2630708 A UM auto attendant times out and generates an invalid extension number error message in an Exchange Server 2010 environment
  43. 2630967 A journal report is not sent to a journaling mailbox when you use journaling rules on distribution groups in an Exchange Server 2010 environment
  44. 2632206 Message items rescanned in the background in an Exchange Server 2010 environment
  45. 2633044 The Number of Items in Retry Table counter displays an incorrect value that causes SCOM alerts in an Exchange Server 2010 SP1 organization
  46. 2639150 The MSExchangeSyncAppPool application pool crashes in a mixed Exchange Server 2003 and Exchange Server 2010 environment
  47. 2640218 The hierarchy of a new public folder database does not replicate on an Exchange Server 2010 SP1 server
  48. 2641077 The hierarchy of a new public folder database does not replicate on an Exchange Server 2010 SP1 server
  49. 2642189 The RPC Client Access service may crash when you import a .pst file by using the New-MailboxImportRequest cmdlet in an Exchange Server 2010 environment
  50. 2643950 A seed operation might not succeed when the source mailbox database has many log files in a Microsoft Exchange Server 2010 DAG
  51. 2644047 Active Directory schema attributes are cleared after you disable a user’s mailbox in an Exchange Server 2010 environment
  52. 2644264 Disabling or removing a mailbox fails in an Exchange Server 2010 environment that has Office Communications Server 2007, Office Communications Server 2007 R2 or Lync Server 2010 deployed
  53. 2648682 An email message body is garbled when you save or send the email message in an Exchange Server 2010 environment
  54. 2649727 Client Access servers cannot serve other Mailbox servers when a Mailbox server encounters a problem in an Exchange Server 2010 environment
  55. 2649734 Mailbox replication latency may occur when users perform a Multi-Mailbox Search function against a DAG in an Exchange Server 2010 environment
  56. 2649735 Warning of undefined recipient type of a user after the linked mailbox is moved from an Exchange Server 2007 forest to an Exchange Server 2010 forest
  57. 2652849 The MailboxCountQuota policy is not enforced correctly in an Exchange Server 2010 hosting mode
  58. 2665115 Event ID 4999 is logged on an Exchange Server 2010 Client Access server (CAS)

Download the rollup here.

Installation Notes:

If you haven’t installed Exchange Server yet, you can use the info at Quicker Exchange installs complete with service packs and rollups to save you some time.

Microsoft Update can’t detect rollups for Exchange 2010 servers that are members of a Database Availability Group (DAG). See the post Installing Exchange 2010 Rollups on DAG Servers for info, and a script, for installing update rollups.

Update Rollups should be applied to Internet facing Client Access Servers before being installed on non-Internet facing Client Access Servers.

If you’re installing the update rollup on Exchange servers that don’t have Internet access, see “Installing Exchange 2007 & 2010 rollups on servers that don’t have Internet access” for some additional steps.

Also, the installer and Add/Remove Programs text is only in English – even when being installed on non-English systems.

Note to Forefront users:

If you don’t disable Forefront before installing a rollup or service pack, and enable afterwards, you run the risk of Exchange related services not starting. You can disable Forefront by going to a command prompt and navigating to the Forefront directory and running FSCUtility /disable. To enable Forefront after installation of a UR or SP, run FSCUtility /enable.

February 2012 Technical Rollup: Unified Communications

February 6th, 2012 No comments

News

Premier

OpsVault – Operate and Optimize IT http://www.opsvault.com/

Microsoft Premier Support UK – Site Home – TechNet Blogs http://blogs.technet.com/b/mspremuk/

Antigen & Forefront

http://blogs.technet.com/forefront

http://blogs.technet.com/fssnerds

Exchange

http://msexchangeteam.com/

http://blogs.technet.com/msukucc

http://blogs.technet.com/b/msonline/

http://blogs.technet.com/b/msonline/

Hosted Messaging Collaboration

None

Lync, Office Communication Server & LiveMeeting

NextHop – Site Home – TechNet Blogs http://blogs.technet.com/b/nexthop/

http://communicatorteam.com

Outlook

http://blogs.msdn.com/outlook/

Other

http://technet.microsoft.com/en-us/office/ocs/ee465814.aspx

http://blogs.technet.com/themasterblog

Documents

Antigen & Forefront

None

Exchange

  1. Microsoft Exchange Server 2010 Install Guide Templates You can use these templates as a starting point for formally documenting your organization’s server build procedures for servers that will have Microsoft Exchange Server 2010 server roles installed on them. http://www.microsoft.com/download/en/details.aspx?id=17206
  2. Migrating Exchange from HMC 4.5 to Exchange Server 2010 SP2 This file contains a white paper and PowerShell scripts to provide the recommended and supported migration path from HMC 4.5 to Microsoft Exchange Server 2010 SP2. The steps in this guide may also be helpful when migrating from non-HMC environments that have configured some form of multi-tenancy. http://www.microsoft.com/download/en/details.aspx?id=28714

Hosted Messaging Collaboration

None

Lync, Office Communication Server & LiveMeeting

  1. Microsoft Office 365 Service Descriptions and Service Level Agreements for Dedicated Subscription Plans Microsoft Office 365 for enterprises provides powerful cloud-based solutions for e-mail, collaboration, instant messaging and web conferencing. The Office 365 dedicated plans deliver these services from a highly reliable network of Microsoft data centers on servers systems dedicated to individual customer-enabling customers to use the latest productivity applications while reducing IT overhead. http://www.microsoft.com/download/en/details.aspx?id=18128
  2. Unified Communications Phones and Peripherals Datasheets These datasheets list the phones and peripheral devices that are qualified to display the “Optimized for Microsoft Lync” logo. http://www.microsoft.com/download/en/details.aspx?id=16857
  3. Microsoft Lync Server 2010 Multitenant Pack for Partner Hosting Deployment Guide Microsoft Lync Server 2010 Multitenant Pack for Partner Hosting Deployment Guide. The Microsoft Lync Server 2010 Multitenant Pack for Partner Hosting is an extension of Microsoft Lync Server 2010 software that is designed to allow service providers and system integrators to customize a Lync Server 2010 deployment and offer it as a service to their customers. This guide describes how to deploy and configure a basic architecture. http://www.microsoft.com/download/en/details.aspx?id=28587
  4. Live Meeting-To-Lync Transition Resources Resources included in this download package are designed to support your organization’s Live Meeting Service to Lync (Server or Online) transition planning. This download will be updated with additional resources as available. http://www.microsoft.com/download/en/details.aspx?id=26494

Outlook

  1. Microsoft Office for Mac 2011: Training Tutorials and Videos The Office for Mac 2011 training downloads include Portable Document Format (.pdf) and PowerPoint (.pptx) versions of all Office 2011 tutorials and videos. To access the same training online, visit www.microsoft.com/mac/how-to. http://www.microsoft.com/download/en/details.aspx?id=19790
  2. Microsoft Exchange and Microsoft Outlook Standards Documentation The Microsoft Exchange and Microsoft Outlook standards documentation describes how Exchange and Outlook support industry messaging standards and Requests for Comments (RFCs) documents about iCalendar, Internet Message Access Protocol – Version 4 (IMAP4), and Post Office Protocol – Version 3 (POP3). http://www.microsoft.com/download/en/details.aspx?id=13800

Other

None

Downloads

Antigen & Forefront

None

Exchange

  1. Update Rollup 6 for Exchange Server 2007 Service Pack 3 (KB2608656) http://www.microsoft.com/download/en/details.aspx?id=28751
  2. Microsoft Online Services Migration Tools (64 bit) Use this tool to support migration of Microsoft Exchange to Microsoft Online Services. http://www.microsoft.com/download/en/details.aspx?id=7013
  3. Microsoft Online Services Migration Tools (32 bit) Use this tool to support migration of Microsoft Exchange to Microsoft Online Services. http://www.microsoft.com/download/en/details.aspx?id=5015
  4. Microsoft Exchange PST Capture Microsoft Exchange PST Capture is used to discover and import .pst files into Exchange Server or Exchange Online http://www.microsoft.com/download/en/details.aspx?id=28767

Hosted Messaging Collaboration

None

Lync, Office Communication Server & LiveMeeting

  1. Lync 2010 Hotfix KB 2670498 (64 bit) http://www.microsoft.com/download/en/details.aspx?id=14490
  2. Lync 2010 Hotfix KB 2670498 (32 bit) http://www.microsoft.com/download/en/details.aspx?id=25055
  3. VHD Test Drive – Lync Server 2010 VHD (Dev) This download comes as a pre-configured set of VHD’s. This download enables you to fully evaluate the Microsoft Lync 2010 and Microsoft Exchange 2010 developer platform including the Microsoft Lync 2010 SDK, the Exchange Web Services Managed API 1.1 as well as the Microsoft Lync Server 2010 SDK and the Microsoft Unified Communications Managed API 3.0. http://www.microsoft.com/download/en/details.aspx?id=28350
  4. Microsoft Office Communications Server 2007 R2 Hotfix KB 968802 http://www.microsoft.com/download/en/details.aspx?id=19178
  5. Microsoft Office Communications Server 2007 R2 Group Chat Hotfix KB 2647090 http://www.microsoft.com/download/en/details.aspx?id=12180
  6. Microsoft Office Communicator 2007 R2 Hotfix KB 2647093 http://www.microsoft.com/download/en/details.aspx?id=21547

Outlook

  1. Microsoft Outlook Social Connector Provider for Facebook Connect your Facebook account to the Outlook Social Connector and stay up to the minute with the people in your network by accessing everything from e-mail threads to status updates in one single, centralized view. http://www.microsoft.com/download/en/details.aspx?id=5039
  2. Microsoft Dynamics CRM 2011 for Microsoft Office Outlook (Outlook Client) Install Microsoft Dynamics CRM for Outlook, also known as the CRM 2011 Outlook client. Microsoft Dynamics CRM for Outlook enables access to your Microsoft Dynamics CRM data through Outlook. http://www.microsoft.com/download/en/details.aspx?id=27821
  3. Update for Microsoft Office Outlook 2003 Junk Email Filter (KB2597098) This update provides the Junk E-mail Filter in Microsoft Office Outlook 2003 with a more current definition of which e-mail messages should be considered junk e-mail. http://www.microsoft.com/download/en/details.aspx?id=28602

Other

Events/Webcasts

  1. Exchange 2010 Microsoft Certified Masters (MCM) Training & Certification Overview 15 February 2012 09:00 Time zone: (GMT-08:00) Pacific Time (US & Canada) Communication drives business. Whether onsite or in the cloud, Microsoft Exchange Server 2010 is a critical infrastructure to ensure availability and security of an organization’s email, calendar, and contacts. Microsoft Certified Masters (MCMs) who are certified on Exchange Server 2010 are specialists in the design, migration, implementation, and optimization of the mail experience across multiple devices-which in turn helps lower messaging costs and helps ensure availability and security. All Microsoft Certified Masters on Exchange Server 2010 become an immediate part of an exclusive community of experts that includes fellow graduates and members of the Exchange Server product group as well as valuable resources to which they can contribute and from which they can draw the collective knowledge of that community at any time. At this event, MCM Program Management will provide a detailed overview for potential candidates and their sponsors. https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032504857&culture=en-GB

New KBs

Antigen & Forefront

None

Microsoft Forefront Online Protection for Exchange

  1. How to troubleshoot Higher Risk Delivery Pool email delivery issues in Forefront Online Protection for Exchange http://support.microsoft.com/kb/2655834

Exchange

Microsoft Exchange Server 2003 Enterprise Edition

  1. Event 1005 or 1013 is logged when you try to start an HTTP resource in an Exchange Server 2003 cluster http://support.microsoft.com/kb/2667815

Microsoft Exchange Server 2003 Service Pack 2

  1. The Information Store service does not start as expected in Exchange Server 2003 SP2 http://support.microsoft.com/kb/2667794

Microsoft Exchange Server 2003 Standard Edition

  1. How to troubleshoot public folder replication problems in Exchange 2000 Server and in Exchange Server 2003 http://support.microsoft.com/kb/842273
  2. Stop error code 0x000000D1 when Windows Server 2003 is under a heavy network load http://support.microsoft.com/kb/842840

Microsoft Exchange Server 2007 Enterprise Edition

  1. A SCOM 2007 SP1 server does not send out alerts when certain issues occur in an Exchange Server 2007 organization http://support.microsoft.com/kb/2633801
  2. A meeting reminder is set unexpectedly when you send an email message to an Exchange Server user http://support.microsoft.com/kb/945854

Microsoft Exchange Server 2007 Service Pack 3

  1. The week numbers displayed in OWA do not match the week numbers displayed in Outlook for English users and French users in an Exchange Server 2007 environment http://support.microsoft.com/kb/2289607
  2. “0x80041606” error message when you perform a prefix search by using Outlook in online mode in an Exchange Server 2007 environment http://support.microsoft.com/kb/2498852
  3. An arrow icon does not appear after you change the email message subject by using OWA in an Exchange Server 2007 SP3 environment http://support.microsoft.com/kb/2499841
  4. A “System.ArgumentOutOfRangeException” exception occurs when you click the “Scheduling Assistant” tab in Exchange Server 2007 OWA http://support.microsoft.com/kb/2523695
  5. Users in a source forest cannot view the free/busy information of mailboxes in a target forest when the cross-forest Availability service is configured between two Exchange Server 2007 forests http://support.microsoft.com/kb/2545080
  6. Applications or services that depend on the Remote Registry service may stop working in an Exchange Server 2007 environment http://support.microsoft.com/kb/2571391
  7. The Microsoft Exchange Information Store service may crash after you run the Test-ExchangeSearch cmdlet in an Exchange Server 2007 environment http://support.microsoft.com/kb/2572010
  8. A journaling report remains in the submission queue when an email message is delivered successfully in an Exchange Server 2007 environment http://support.microsoft.com/kb/2591655
  9. The PidLidClipEnd property of a recurring meeting request has an incorrect value in an Exchange Server 2007 environment http://support.microsoft.com/kb/2598980
  10. An Outlook Anywhere client loses connection when a GC server restarts in an Exchange Server 2007 environment http://support.microsoft.com/kb/2616427
  11. Journal reports are expired or lost when the Microsoft Exchange Transport service is restarted in an Exchange Server 2007 environment http://support.microsoft.com/kb/2617784
  12. Certain changes to address lists may not be updated in an Exchange Server 2007 environment http://support.microsoft.com/kb/2626217
  13. The Exchange IMAP4 service may stop responding on an Exchange Server 2007 Client Access server when users access mailboxes that are hosted on Exchange Server 2003 servers http://support.microsoft.com/kb/2629790
  14. The update tracking information option does not work in an Exchange Server 2007 environment http://support.microsoft.com/kb/2641312
  15. The reseed process is unsuccessful on the SCR passive node when the circular logging feature is enabled in an Exchange Server 2007 environment http://support.microsoft.com/kb/2653334
  16. An Exchange Server 2007 Client Access server responds slowly or stops responding when users try to synchronize Exchange ActiveSync devices with their mailboxes http://support.microsoft.com/kb/2656040
  17. The “PidLidClipEnd” property of a no ending recurring meeting request is set to an incorrect value in an Exchange Server 2007 environment http://support.microsoft.com/kb/2658613
  18. The Microsoft Exchange Information Store service may stop responding on an Exchange Server 2007 server http://support.microsoft.com/kb/914533
  19. The scroll bar does not work in OWA when there are more than 22 all-day event calendar items in an Exchange Server 2007 user’s calendar http://support.microsoft.com/kb/976977

Microsoft Exchange Server 2010 Coexistence

  1. How to extend the Active Directory schema for the Hierarchical Address Book (HAB) on an Exchange Server 2010 server http://support.microsoft.com/kb/973788

Microsoft Exchange Server 2010 Enterprise

  1. The Seniority Index feature in the Hierarchical Address Book does not work as expected in Exchange Server 2010 http://support.microsoft.com/kb/2448288

Microsoft Exchange Server 2010 Standard

  1. Exchange Server 2010 databases grow very large when the Calendar Snapshot feature is enabled http://support.microsoft.com/kb/2661071
  2. Error message when you try to install Exchange Server 2010 SP2: “AuthorizationManager check failed” http://support.microsoft.com/kb/2668686

Lync, Office Communication Server & LiveMeeting

Microsoft Office Communications Server 2007 R2 Group Chat client

  1. Description of the update for the Office Communications Server 2007 R2 Group Chat client: January, 2012 http://support.microsoft.com/kb/2647089
  2. The “Send an Instant Message” menu does not start Office Communicator on a terminal server in an Office Communications Server 2007 R2, Group Chat client http://support.microsoft.com/kb/2653953

Microsoft Office Communications Server 2007 R2 Group Chat server

  1. Description of the cumulative update for Office Communications Server 2007 R2 Group Chat server: January, 2012 http://support.microsoft.com/kb/2647090
  2. The Channel service stops when a user signs in to a Group Chat client in Office Communications Server 2007 R2 Group Chat http://support.microsoft.com/kb/2647095

Microsoft Office Communications Server 2007 R2 Standard Edition

  1. Description of the cumulative update for Office Communications Server 2007 R2, Unified Communications Managed API 2.0 Core Redist 64-bit: January, 2012 http://support.microsoft.com/kb/2647091

Microsoft Office Communicator 2007 R2

  1. Description of the cumulative update package for Communicator 2007 R2: January 2012 http://support.microsoft.com/kb/2647093
  2. The file name and icon do not display when you send files in Office Communicator 2007 R2 http://support.microsoft.com/kb/2653950

Outlook

Microsoft Office Outlook 2003

  1. Description of the Outlook 2003 Junk Email Filter update: January 10, 2012 http://support.microsoft.com/kb/2597098
  2. Search Folders created in Outlook do not appear in Outlook Web Access http://support.microsoft.com/kb/831400

Microsoft Outlook 2010

  1. Outlook 2010: How to troubleshoot crashes in Outlook http://support.microsoft.com/kb/2632425
  2. An email message is stuck in the Microsoft Outlook 2010 Outbox. http://support.microsoft.com/kb/2663435
  3. “Unsupported folder class” error when Outlook starts http://support.microsoft.com/kb/2668932

January 2012 Technical Rollup: Unified Communications

January 14th, 2012 No comments

News

Premier

OpsVault — Operate and Optimize IT
http://www.opsvault.com

Microsoft Premier Support UK – Site Home – TechNet Blogs
http://blogs.technet.com/b/mspremuk/

Antigen & Forefront

Forefront Team Blog – Site Home – TechNet Blogs
http://blogs.technet.com/b/forefront

Forefront Server Security Support Blog – Site Home – TechNet Blogs
http://blogs.technet.com/b/fssnerds

Exchange

Exchange Team Blog – Site Home – TechNet Blogs
http://blogs.technet.com/b/exchange/

MCS UK Unified Communications Blog – Site Home – TechNet Blogs
http://blogs.technet.com/b/msukucc

Hosted Messaging Collaboration

Lync, Office Communication Server & LiveMeeting

NextHop – Site Home – TechNet Blogs http://blogs.technet.com/b/nexthop/

Lync Team Blog – Site Home – TechNet Blogs http://blogs.technet.com/b/lync/

Outlook

http://blogs.msdn.com/b/outlook/default.aspx

Other

NextHop – Site Home – TechNet Blogs http://blogs.technet.com/b/nexthop/

The Master Blog – Site Home – TechNet Blogs http://blogs.technet.com/b/themasterblog

Events/Webcasts

Unleash Your Productivity – Delivering a Great First Impression with Exchange 2010

January 27, 2012 2:00PM Eastern / 11:00AM Pacific

Are you interested in Microsoft productivity solutions and would like to hear more about the technology directly from Microsoft? Join us for 60 minutes to hear Microsoft technology experts deliver information on the latest Microsoft technologies, solution demos and product tips and tricks!

Microsoft Office System Webcast: Outlook 2010: Use Contacts as More Than Just an Address Book (Level 200)

Tuesday, January 31, 2012 9:00 AM Time zone: (GMT-08:00) Pacific Time (US & Canada)

See how contacts in Microsoft Outlook 2010 can be more than just an email address book. Use your Contacts folder to store email addresses, street addresses, multiple phone numbers, pictures, logos, and any other information that relates to a contact. Create and share distribution lists, and learn how Outlook 2010 also supports vCards (virtual business cards). Additionally, see how tasks can simplify your life by helping you create and manage easy to-do lists in Outlook 2010. This webcast covers the following topics:

  • Creating and managing contacts and distribution lists
  • Working with contacts as electronic business cards
  • Sharing contacts and distribution lists
  • Setting your default address book
  • Creating tasks from email messages
  • Keeping track of your to-do lists with tasks
  • Advanced calendar options

New KBs

Antigen & Forefront

  1. Microsoft Forefront Online Protection for Exchange: How Exchange Hosted Archive handles blind carbon copy (Bcc) recipients http://support.microsoft.com/kb/2653006

Exchange

Microsoft Exchange Server 2003 Enterprise Edition:

  1. Exchange ActiveSync and Outlook Mobile Access errors occur when SSL or forms-based authentication is required for Exchange Server 2003 http://support.microsoft.com/kb/817379

Microsoft Exchange Server 2003 Standard Edition:

  1. How to troubleshoot public folder replication problems in Exchange 2000 Server and in Exchange Server 2003 http://support.microsoft.com/kb/842273

Microsoft Exchange Server 2007 Enterprise Edition:

  1. A meeting reminder is set unexpectedly when you send an email message to an Exchange Server user http://support.microsoft.com/kb/945854

Microsoft Exchange Server 2010 Coexistence:

How to extend the Active Directory schema for the Hierarchical Address Book (HAB) on an Exchange Server 2010 server http://support.microsoft.com/kb/973788

Microsoft Exchange Server 2010 Enterprise:

  1. The Seniority Index feature in the Hierarchical Address Book does not work as expected in Exchange Server 2010 http://support.microsoft.com/kb/2448288
  2. The Exchange Server is not a member of Exchange Trusted Subsystem http://support.microsoft.com/kb/2655050
  3. Some e-mail messages become stuck in an Exchange Server environment http://support.microsoft.com/kb/979175

Microsoft Exchange Server 2010 Standard:

  1. Exchange Server 2010 databases grow very large when the Calendar Snapshot feature is enabled http://support.microsoft.com/kb/2661071

Outlook

Microsoft Office Outlook 2003:

  1. Description of the Outlook 2003 Junk Email Filter update: December 13, 2011 http://support.microsoft.com/kb/2597035

Microsoft Office Outlook 2007:

  1. Description of the Outlook 2007 hotfix package (Outlook-x-none.msp, Outlook-en-us.msp): December 13, 2011 http://support.microsoft.com/kb/2596985
  2. The sort order may be incorrect for e-mail messages that you sort by size in Outlook 2007 http://support.microsoft.com/kb/919200

Microsoft Outlook 2010:

  1. No prompt for credentials when you start Outlook 2010 as an initial application in RDP or as a published application in Citrix Zen http://support.microsoft.com/kb/2596960
  2. Description of the Outlook 2010 hotfix package (x86 Outlookintl-de-de.msp, x64 Outlookintl-de-de.msp): December 13, 2011 http://support.microsoft.com/kb/2597001
  3. Description of the Outlook 2010 hotfix package (x86 Outlookintl-xx-xx.msp, x64 Outlookintl-xx-xx.msp): December 13, 2011 http://support.microsoft.com/kb/2597012
  4. “Could not connect to server” error message in the Outlook Social Connector http://support.microsoft.com/kb/2597026
  5. Smart cards are not supported in Outlook 2010 when you access your mailbox by using Outlook Anywhere (RPC/HTTP) http://support.microsoft.com/kb/2597028
  6. “The operation failed” error message when you try to book a resource mailbox from a shared calendar by using Outlook 2010 http://support.microsoft.com/kb/2597037
  7. Description of the Outlook 2010 hotfix package (x86 Outlook-x-none.msp, x64 Outlook-x-none.msp, Outlookintl-xx-xx.msp): December 13, 2011 http://support.microsoft.com/kb/2597061
  8. You receive unexpected results when you search lots of subfolders in Outlook 2010 http://support.microsoft.com/kb/2654234
  9. Certain appointments that are scheduled to occur on Saturdays disappear from the Calendar view in Outlook 2010 http://support.microsoft.com/kb/2655312
  10. An email message is stuck in the Microsoft Outlook 2010 Outbox. http://support.microsoft.com/kb/2663435

 

What to Expect at Your First MVP Summit

January 2nd, 2012 24 comments

Every year, there is a flurry of questions from newly minted MVPs about the annual MVP Summit. This year, more than 1,400 MVPs from 70+ countries will attend more than 700 sessions behind closed doors. As a veteran of nearly a dozen Summits, I’ve created this post to answer the commonly asked questions. Hopefully, it should provide a good bit of info on what to expect. Feel free to ask questions and/or post suggestions and ideas in the comments below. This is a living post.

Keep your MVP profile updated!

I can’t recommend enough about having your MVP profile up to date, especially the “Expertise and Interests” section. This section dictates what session areas you may attend at the Summit. Update it NOW! Also, other MVPs can use your profile to contact you. The first year I attended, I viewed the profiles of other MVPs in my expertise (Exchange, at the time) to learn more about my colleagues. I’ve also had some recruiters and potential customers call after viewing my profile. The MVP profile can be quite beneficial.

What to bring

Here is a list of things of the minimum items you should consider bringing:

  1. Camera – You’ll be meeting a lot of people, putting faces to names. There are a lot of social events and social networking opportunities in which to record the moment. Plus, there are some nice places to visit, or take pictures of, such as Mt. Rainier, Pike’s Place Market, etc.
  2. Business cards – As mentioned above, you’ll be meeting lots of people. If you’re in sales, tread lightly on the marketing push. Stick your cards (and any you receive from others) in the back of your Summit ID holder for easy access throughout the Summit. Don’t have business cards? Places like VistaPrint will print cards for you for as little as $10 USD.
  3. Cold weather clothing – Seattle weather during the Summit time frame can be predictable (rain), and unpredictable (snow). It can be fairly cold during the time of the Summit. Dress in layers to survive. Here is the weather forecast for the area.
  4. A tip from @NikitaP: Wear comfortable shoes. I agree. You’ll do a fair amount of walking, and LOTS of socializing while standing at the various events and venues.
  5. A suitcase with extra space. You’ll get a Summit shirt, you’ll go to the company store, and some product groups give out gifts. There is also the public Microsoft Store at the Bellevue Square, a nice mall near the Summit hotels.
  6. Laptop or iPad for taking notes during technical sessions and keynotes. I recommend Microsoft OneNote, which is available on both the PC and iOS platforms, and runs great on tablets.
  7. If you’re coming from another country, bring a suitable power adapter to use for your gear in the U.S. If you run a Mac, check out the Plug Bug World. It converts your stock Apple MagSafe power adapter to be world-wide compatible. Plus, it adds a USB charging port. I love mine.
  8. Your MVP number. If Microsoft hasn’t received your signed NDA form yet, you may be required to sign one before you’re allowed into the event. The form requires your MVP number.
  9. If you’re from outside the country, check your cell phone’s data plan and roaming limitations. Don’t get caught with an unexpected costly mobile bill.

Arrive early, stay late – dinners, parties and extra events

I recommend padding the summit time frame by a day on each end to allow for extra sight-seeing, additional events, and shopping. Some product groups will have extra sessions, and those take place before or after the regular summit days. If your product group is doing this, you’ll know in advance.

There is a Welcome Reception, a product group event (usually a dinner event), and generally some third-party events like Party with Palermo (a developer based event). In previous years, there was also an Attendee Party. Many of the various groups informally meet at local establishments during the evenings, as well. You’ll stay busy at this event, I guarantee!

Increasingly over the past few years, Twitter has been a busy tool for keeping track of your friends and colleagues at Summit. It’s a great tool for figuring out what trendy bar all of your mates are at.

See the list of official events at https://www.mvp.microsoft.com/en-us/Summit/Agenda.

Keynote speeches

Note: There are no scheduled keynotes for Summit 2016. This section is merely for reference.

There are Q&A sessions at the end of each keynote. Here are some guidelines that will avoid people throwing things at you (or at least letting out a groan):

  1. Introduce yourself with your name and MVP area. Avoid anything else.
  2. Make it quick – ask a single question. I’m reminded of the scene in “Back to School” with Rodney Dangerfield where the professor says he “has but one question – in 27 parts”. Don’t hog the time, others have questions, too.
  3. And I hate to say this, but the fact is, if your English isn’t very strong, consider having someone else ask your question, or don’t ask at all. Keynotes are always in English. Every year, someone will ask some questions that very few people can understand due to a language barrier. That leads to awkwardness and unanswered questions.
  4. Don’t ask deep technical questions. The people giving the keynote and answering questions aren’t likely going to know WHY Exchange isn’t running on SQL.
  5. Don’t ask for autographs or selfies.
  6. Don’t bring things to give to them. Those crazy Canadians started that and it got out of control one year (although they do look sharp in their red hockey jerseys).

Engaging the product group

There are some opportunities to engage the product group for your area of expertise. This includes during technical sessions, product group events like dinners, as well as unofficial events. Keep in mind that interaction with the product group should be handled professionally. While it’s important to discuss concerns, please respect their time and efforts. Remember, having access to the product group is a privilege, and you’d be surprised how quickly they stop answering your questions and requests for help if you’re constantly (or worse, publicly) berating of their accomplishments. Also keep in mind that not every person in the product group happens to be in the Redmond area during the Summit time frame. So don’t get angry if the person responsible for your favorite (or despised) feature isn’t there.

Company store

There is an opportunity to take a trip to the company store. It is located right where the hotel buses drop you off on campus. You’re generally given a voucher when you pick up your credentials that allows you to spend up to a specific amount ($120 USD) OF YOUR OWN MONEY on licensed materials such as hardware and software. These are regular consumer products available at employee pricing. You cannot exceed the amount on the voucher, so don’t think you’re gonna get an Xbox console on the cheap. The voucher is generally valid to purchase from a special site online as well (for a limited time), and have the items shipped to you. In the past, if you use part of the amount on your voucher, they take the voucher, and you can’t use “what’s left” of it. Choose accordingly.

You can purchase as much as you want of the other items, including clothing, bags, books, novelties, and other swag. As mentioned above, plan accordingly. Make sure you have room in your suitcase to take the stuff home. Nothing worse than getting a killer deal on something, then having to pay to check another bag on your flight home.

For more information, see the official FAQ section on the company store.

Internet access

Here’s the bad part. The WiFi inside the Microsoft buildings can be sporadic due to the sheer demand, although it has been getting better in recent years. If you can tether via cell phone, or you have an air card/MiFi, keep those handy. Don’t plan on streaming videos, and even doing VPN connections can be very problematic over the guest WiFi. The hotels provide complimentary WiFi in the guest rooms and common areas.

Dress code

There isn’t one. Casual is generally what people wear, with the majority wearing jeans & button down shirts, or golf/polo shirts. Many people wear shirts and jerseys from previous Summits. See my comments above about dressing warm.

Car rentals

Don’t bother. It’s too expensive, and, unless you plan on doing a bunch of tourist stuff, you won’t use it. Keep in mind that hotels will charge you a horrendous fee to park each night. Shuttle buses will take you from official Summit hotels to official Summit events, such as sessions on campus, the Welcome Reception, etc. In the Seattle, Redmond, and Bellevue areas, Uber is very well established. If you’ve never used Uber before, there is one thing to remember. You can’t tip from within the Uber app. Some people don’t tip, others tip in cash.

Transportation

From the airport, take a taxi or shuttle bus. Many people will coordinate with others and split the bill. Some people recommend the Gray Line, and I’ve used Shuttle Express which typically makes stops at all of the hotels used by Summit attendees. I believe one-way trips are in the $20 range for both. It can easily take 30 minutes (with average traffic) to get from the airport to the hotels.

As mentioned previously, transportation to/from hotels and official Summit locations, including the Attendee Party, is provided by Microsoft. I believe information about that is listed on the Summit website. Many of the “hangouts” in the Bellevue area are all within walking distance from the hotels.

For more information, see the official FAQ section on transportation.

Social networking, NDAs, and such

It’s generally acceptable to mention where you are (check-in). But you are under NDA during the technical sessions, so don’t even THINK about posting ANYTHING you see or hear during official events such as keynotes, sessions, official events, etc. Microsoft monitors social networks during the event, and people have lost their MVP status in the past for tweeting/posting info that was covered by NDA. I would recommend not discussing technical information in public areas, either. Even product code names and internal reference names are taboo in public. I mentioned near the top about bringing cameras. Tread lightly here.

Previously, I’ve seen people win items simply by checking in via Foursquare when going to the public Microsoft Store. There is also a downtown Seattle badge on Foursquare.

Also, the MVP program has Facebook and Twitter feeds to follow (including the #MVP18 hashtag for the Summit, and #MVPBuzz for the program in general). The MVP program also has a blog.

Hotels

If you’re rooming with someone you haven’t roomed with before, and you snore, buy your roomie some drinks. Someone suggested bringing tennis balls they can lob at you to help stir you a little. Interesting suggestion.

Places of interest

Space Needle – Part of the Seattle skyline, visit the Space Needle and see forever from the observation deck.

Puget Sound Tour – This water based tour goes around Puget Sound and shows the visitor many interesting points of history, including the residence of Mr. Bill Gates.

The Museum of Flight – One of the MVP Summit events was held here a few years ago. Very fun and interesting. See a lot of airplanes from various generations and purposes.

Underground Tour – The Bill Speidel Undeground Tour is a leisurely, guided walking tour beneath Seattle’s sidewalks and streets. As you roam the subterranean passages that once were the main roadways and first-floor storefronts of old downtown Seattle, our guides regale you with the stories our pioneers didn’t want you to hear. It’s history with a twist!

Pike Place Market – See the fish throwing, visit the various markets, and have some food with a great view.

Misc

A great tip from @callkathy – Connect with people outside your expertise. Sit with other people on the bus and at meals.

Another great tip, this one from @AlvinAshcraft – Use FourSquare to find other MVPs.

Microsoft has a pretty decent FAQ page that answers many questions. Check it out.

Have fun!

You will meet new friends, technical contacts, and people who will help you succeed. You’ll finally be able to put faces to the names of people whose blog and Twitter feeds you follow.

If you have any questions about the Summit, please feel free to contact me on Twitter (@PatRichard). Have fun!

Categories: Personal Tags: ,

Function: New-LocalExchangeConnection – Ensure Your PowerShell Script is Connected to Exchange 2010

December 28th, 2011 11 comments

Description

When writing scripts that execute commands on an Exchange server, for Exchange 2010, it’s important to ensure that you’re running within a session connected to an Exchange server, and that all Exchange cmdlets are available. In Exchange 2007, we could load the Exchange snapins. But 2010 doesn’t use snapins. Some people would say that you can simply load the modules, but loading the modules bypasses RBAC, and is thus, not recommended. Mike Pfeiffer wrote a great article Managing Exchange 2010 with Remote PowerShell that sheds some light. It’s worth a read.

A solution around this is to run a PowerShell script that comes built into Exchange 2010. This makes available the Connect-ExchangeServer cmdlet, which will connect via remote PowerShell to Exchange. We can specify a server, or let the -auto option connect to the best server via autodiscover. New-LocalExchangeConnection is a function I wrote to connect:

function New-LocalExchangeConnection	{ 
	[cmdletBinding(SupportsShouldProcess = $true)]
	param(
	)
	Write-Verbose "Checking for Exchange Management Shell"
	$Sessions = Get-PSSession | Where-Object {$_.ConfigurationName -eq "Microsoft.Exchange"}
	if (!($Sessions)){
		if (Test-Path "$env:ExchangeInstallPath\bin\RemoteExchange.ps1"){
			Write-Verbose "Exchange Management Shell not found - Loading..."
			. "$env:ExchangeInstallPath\bin\RemoteExchange.ps1"
			Write-Verbose "Exchange Management Shell loaded"
			Write-Verbose "Connecting to Exchange server"
			Connect-ExchangeServer -auto
			if (Get-PSSession | Where-Object {$_.ConfigurationName -eq "Microsoft.Exchange"}){
				Write-Verbose "Connected to Exchange Server"
			}else{
				Write-Host "An error has occurred" -ForegroundColor red
			}
		}else{
			Write-Warning "Exchange Management Shell is not available on this computer"
		}
	}else{
		Write-Verbose "Exchange Management Shell already loaded"
	}
} # end function New-LocalExchangeConnection

Calling this within your script will make ensuring that your script is running with access to Exchange cmdlets much simpler.

Donations

I’ve never been one to really solicit donations for my work. My offerings are created because *I* need to solve a problem, and once I do, it makes sense to offer the results of my work to the public. I mean, let’s face it: I can’t be the only one with that particular issue, right? Quite often, to my surprise, I’m asked why I don’t have a “donate” button so people can donate a few bucks. I’ve never really put much thought into it. But those inquiries are coming more often now, so I’m yielding to them. If you’d like to donate, you can send a few bucks via PayPal at https://www.paypal.me/PatRichard. Money collected from that will go to the costs of my website (hosting and domain names), as well as to my home lab.

Function: Set-ModuleStatus – PowerShell Function for Loading and Verifying Modules

December 27th, 2011 14 comments

PowerShell-logo-128x84Description

Often in my PowerShell scripts, I need to either load a specific module, or verify it’s loaded. Manually, of course, we can use Get-Module, Import-Module, etc. But in automation scripts, we need to programmatically make sure the module is loaded or load it if it’s not. I wrote this function and it’s worked well for me. introducing Get-ModuleStatus:

function Set-ModuleStatus { 
	[CmdletBinding(SupportsShouldProcess = $True)]
	param	(
		[parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, Mandatory = $true, HelpMessage = "No module name specified!")] 
		[ValidateNotNullOrEmpty()]
		[string] $name
	)
	PROCESS{
		# Executes once for each pipeline object
		# the $_ variable represents the current input object		
		if (!(Get-Module -name "$name")) { 
			if (Get-Module -ListAvailable | Where-Object Name -eq "$name") { 
				Import-Module -Name "$name"
				# module was imported
				# return $true
			} else {
				# module was not available
				# return $false
			}
		} else {
			# Write-Output "$_ module already imported"
			# return $true
		} 
	} # end PROCESS
} # end function Set-ModuleStatus

Call it supplying the module name, such as

Set-ModuleStatus Lync

You can use logic such as

if (Set-ModuleStatus Lync){Write-Host "Lync module is loaded"}else{Write-Host "Lync module is NOT loaded" -ForegroundColor red}

Simple and effective. You can also pipe module names to it, such as:

“lync”,”activedirectory” | Set-ModuleStatus

Donations

I’ve never been one to really solicit donations for my work. My offerings are created because *I* need to solve a problem, and once I do, it makes sense to offer the results of my work to the public. I mean, let’s face it: I can’t be the only one with that particular issue, right? Quite often, to my surprise, I’m asked why I don’t have a “donate” button so people can donate a few bucks. I’ve never really put much thought into it. But those inquiries are coming more often now, so I’m yielding to them. If you’d like to donate, you can send a few bucks via PayPal at https://www.paypal.me/PatRichard. Money collected from that will go to the costs of my website (hosting and domain names), as well as to my home lab.

Download

v1.2 – 02-07-2014 – Set-ModuleStatus.v1.2.zip

v1.1 – 09-17-2012 - Set-ModuleStatus.v1.1.zip

v1.0 Get-ModuleStatus.ps1

Categories: PowerShell Tags: ,

Function: New-Password – Creating Passwords with PowerShell

December 26th, 2011 2 comments

Description

When creating new accounts, an admin needs to assign a password. We often then check the box to force a user to change their password when they logon for the first time. Some organizations will use a ‘default’ password for all new accounts. That’s fraught with security implications, and I’ve never recommended it. The downside is that you, as an admin, need to think up a password for each new account. I know how it is – you look around at things on your desk, items on the wall, looking for ideas. Then you have to make sure your super password meets your organizations password requirements, including length and complexity. Well, no more!

Enter New-Password. This function takes one simple input – length. It then spits out a password of said length, using upper and lower case letters, numbers, and punctuation, as well as a phonetic version. If you choose not to use some of the punctuation characters, feel free to just put a ‘#’ in front of that particular line.

function New-Password	{
<#
.SYNOPSIS
  Displays a complex password.

.DESCRIPTION
  Displays a complex password. Output includes password, and phonetic breakdown of the password.

.NOTES
  Version                 : 1.3
  Wish List               :
  Rights Required         : No special rights required
                          : If script is not signed, ExecutionPolicy of RemoteSigned (recommended) or Unrestricted (not recommended)
                          : If script is signed, ExecutionPolicy of AllSigned (recommended), RemoteSigned, 
                            or Unrestricted (not recommended)
  Sched Task Required     : No
  Lync/Skype4B Version    : N/A
  Author/Copyright        : © Pat Richard, Skype for Business MVP - All Rights Reserved
  Email/Blog/Twitter      : pat@innervation.com   https://www.ucunleashed.com @patrichard
  Dedicated Post          : https://www.ucunleashed.com/915
  Disclaimer              : You running this script means you won't blame me if this breaks your stuff. This script is
                            provided AS IS without warranty of any kind. I disclaim all implied warranties including, 
                            without limitation, any implied warranties of merchantability or of fitness for a particular
                            purpose. The entire risk arising out of the use or performance of the sample scripts and 
                            documentation remains with you. In no event shall I be liable for any damages whatsoever 
                            (including, without limitation, damages for loss of business profits, business interruption,
                            loss of business information, or other pecuniary loss) arising out of the use of or inability
                            to use the script or documentation. 
  Acknowledgements        : 
  Assumptions             : ExecutionPolicy of AllSigned (recommended), RemoteSigned or Unrestricted (not recommended)
  Limitations             : 
  Known issues            : None yet, but I'm sure you'll find some!                        

.LINK
  
Function: New-Password – Creating Passwords with PowerShell
.EXAMPLE New-Password -Length <integer> Description ----------- Creates a password of the defined length .EXAMPLE New-Password -Length <integer> -ExcludeSymbols Description ----------- Creates a password of the defined length, but does not utilize the following characters: !$%^-_:;{}<># &@]~ .INPUTS This function does support pipeline input. #> #Requires -Version 3.0 [CmdletBinding(SupportsShouldProcess = $true)] param( #Defines the length of the desired password [Parameter(ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] [ValidateNotNullOrEmpty()] [ValidatePattern("[0-9]")] [int] $Length = 12, #When specified, only uses alphanumeric characters for the password [Parameter(ValueFromPipeline = $False, ValueFromPipelineByPropertyName = $True)] [switch] $ExcludeSymbols ) PROCESS { $pw = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" if (!$ExcludeSymbols) { $pw += "!$%^-_:;{}<># &@]~" } $password = -join ([Char[]]$pw | Get-Random -count $length) Write-Output "`nPassword: $password`n" ForEach ($character in [char[]]"$password"){ [string]$ThisLetter = $character switch ($ThisLetter) { a {$ThisWord = "alpha"} b {$ThisWord = "bravo"} c {$ThisWord = "charlie"} d {$ThisWord = "delta"} e {$ThisWord = "echo"} f {$ThisWord = "foxtrot"} g {$ThisWord = "golf"} h {$ThisWord = "hotel"} i {$ThisWord = "india"} j {$ThisWord = "juliett"} k {$ThisWord = "kilo"} l {$ThisWord = "lima"} m {$ThisWord = "mike"} n {$ThisWord = "november"} o {$ThisWord = "oscar"} p {$ThisWord = "papa"} q {$ThisWord = "quebec"} r {$ThisWord = "romeo"} s {$ThisWord = "sierra"} t {$ThisWord = "tango"} u {$ThisWord = "uniform"} v {$ThisWord = "victor"} w {$ThisWord = "whiskey"} x {$ThisWord = "xray"} y {$ThisWord = "yankee"} z {$ThisWord = "zulu"} 1 {$ThisWord = "one"} 2 {$ThisWord = "two"} 3 {$ThisWord = "three"} 4 {$ThisWord = "four"} 5 {$ThisWord = "five"} 6 {$ThisWord = "six"} 7 {$ThisWord = "seven"} 8 {$ThisWord = "eight"} 9 {$ThisWord = "nine"} 0 {$ThisWord = "zero"} ! {$ThisWord = "exclamation"} $ {$ThisWord = "dollar"} % {$ThisWord = "percent"} ^ {$ThisWord = "carat"} - {$ThisWord = "hyphen"} _ {$ThisWord = "underscore"} : {$ThisWord = "colon"} `; {$ThisWord = "semicolon"} `{ {$ThisWord = "left-brace"} `} {$ThisWord = "right-brace"} `/ {$ThisWord = "backslash"} `< {$ThisWord = "less-than"} `> {$ThisWord = "greater-than"} `# {$ThisWord = "pound"} `& {$ThisWord = "ampersand"} `@ {$ThisWord = "at"} `] {$ThisWord = "right-bracket"} `~ {$ThisWord = "tilde"} default {$ThisWord = "space"} } if ($ThisLetter -cmatch $ThisLetter.ToUpper()){ $ThisWord = $ThisWord.ToUpper() } $phonetic = $phonetic+" " +$ThisWord } $phonetic = $phonetic.trim() Write-Output "Phonetic: $phonetic" "Password: $password`nPhonetic: $phonetic" | clip Write-Output "`n`nThis information has been sent to the clipboard" } END{ Remove-Variable ThisWord Remove-Variable ThisLetter Remove-Variable Password Remove-Variable Phonetic Remove-Variable Pw } } # end function New-Password

Now, stick that function in your PowerShell profile. Each time you need a new password, use

New-Password -Length [number]

such as

New-Password -Length 12

And you now have a password to use.

12 character password

You can also specify -ExcludeSymbols to return only an alphanumeric password, bypassing the added complexity of using non-alphanumeric symbols.

New-Password -Length 12 -ExcludeSymbols


12 character alphanumeric password

Donations

I’ve never been one to really solicit donations for my work. My offerings are created because *I* need to solve a problem, and once I do, it makes sense to offer the results of my work to the public. I mean, let’s face it: I can’t be the only one with that particular issue, right? Quite often, to my surprise, I’m asked why I don’t have a “donate” button so people can donate a few bucks. I’ve never really put much thought into it. But those inquiries are coming more often now, so I’m yielding to them. If you’d like to donate, you can send a few bucks via PayPal at https://www.paypal.me/PatRichard. Money collected from that will go to the costs of my website (hosting and domain names), as well as to my home lab.

Functions: Get-LocalAdminGroupMembership and Set-LocalAdminGroupMembership – Local Admin Group Membership on Remote Machines

December 22nd, 2011 No comments

PowerShell-logo-128x84While writing some PowerShell scripts to automate the installation of Exchange on over 100 servers, I needed to set and then verify that a group (in this case, “Exchange Trusted Subsystem”) was a member of the local admins group on some remote servers.

We start with Get-LocalAdminGroupMembership. This function merely checks the local admins group on a remote server to see if the group to be added is already a member. If it is, it returns $true, if not, $false. We need to pass it two variables: $ComputerName, and $Member. We don’t need to run this function. It’s called from the second function.

function Get-LocalAdminGroupMembership	{
	[CmdletBinding()]
	Param(
		[Parameter(Position=0, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
		$ComputerName = ".",
		[Parameter(Position=1, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
		$Member
	)
	if($ComputerName -eq "."){$ComputerName = (get-WmiObject win32_computersystem).Name}
	$computer = [ADSI]("WinNT://" + $ComputerName + ",computer")
	$Group = $computer.psbase.children.find("Administrators")
	$members= $Group.psbase.invoke("Members") | % {$_.GetType().InvokeMember("Name", "GetProperty", $null, $_, $null)}
	if ($members -match $member){return $true}else{return $false}
} # end function Get-LocalAdminGroupMembership

 

The second function does all the heavy lifting.

function Set-LocalAdminGroupMembership {
	[CmdletBinding()]
	Param(
		[Parameter(Position=0, Mandatory=$false, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
		[string]$ComputerName = ".",
		[Parameter(Position=1, Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
		[string]$Member,
		[Parameter(Position=2, Mandatory=$false, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
		[string]$Domain = $env:USERDNSDOMAIN
	)

	Process{
		if (!(Get-LocalAdminGroupMembership -ComputerName "$ComputerName" -Member "$Member")){
			if($ComputerName -eq "."){$ComputerName = $env:ComputerName.ToUpper()}    

			if($Domain){
  			$adsi = [ADSI]"WinNT://$ComputerName/administrators,group"
    		$adsi.Add("WinNT://$Domain/$Member,group")
			}else{
	  		Write-Host "Not connected to a domain." -ForegroundColor "red"
			}
		} else {
			Write-Host "`"$Account`" is already a local admin on $ComputerName" -ForegroundColor yellow
		}
		Get-LocalAdminGroupMembership -ComputerComputer "$ComputerName" -Member "$Member"
	}# Process
} # end function Set-LocalAdminGroupMembership

We call Set-LocalAdminGroupMembership and pass it the same parameters, $ComputerName and $Member

Set-LocalAdminGroupMembership -ComputerName mycomputer -Member "Exchange Trusted Subsystem"

The function will add the group to the local admins group, and then do a Get-LocalAdminGroupMembership for that same group and dump the results to the screen.