#Manage-Messenger.ps1 #Jeffery Hicks #SAPIEN Technologies #jhicks@sapien.com #Last updated 12/5/2007 $MISTATUS_UNKNOWN=0 $MISTATUS_OFFLINE=1 $MISTATUS_ONLINE=2 $MISTATUS_INVISIBLE=6 $MISTATUS_BUSY=10 $MISTATUS_BE_RIGHT_BACK=14 $MISTATUS_IDLE=18 $MISTATUS_AWAY=34 $MISTATUS_ON_THE_PHONE=50 $MISTATUS_OUT_TO_LUNCH=66 Function Get-MessengerStatus { $messenger=New-Object -com "Messenger.UIAutomation" Switch ($messenger.Mystatus) { $MISTATUS_UNKNOWN {$status = "in an unknown status"} $MISTATUS_OFFLINE {$status = "offline"} $MISTATUS_ONLINE {$status = "online"} $MISTATUS_INVISIBLE {$status = "invisible"} $MISTATUS_BUSY {$status = "busy"} $MISTATUS_BE_RIGHT_BACK {$status = "busy and will be right back"} $MISTATUS_IDLE {$status = "idle"} $MISTATUS_AWAY {$status = "away"} $MISTATUS_ON_THE_PHONE {$status = "on the phone"} $MISTATUS_OUT_TO_LUNCH {$status = "out to lunch"} Default {$status = " lost"} } write "I am $status" } Function Set-MessengerStatus { Param ([int]$Status=2) $messenger=New-Object -com "Messenger.UIAutomation" $messenger.myStatus=$status #give the app a chance to change before checking sleep 2 Get-MessengerStatus } Function Get-MessengerConstants { Get-Variable mistatus* | sort Value } Function SignIn-Messenger { Param ([string]$user,[string]$password) $messenger=New-Object -com "Messenger.UIAutomation" $messenger.Signin(0,$user,$password) } Function Decode-MessengerStatus { Param([int]$status=0) Switch ($status) { $MISTATUS_UNKNOWN {Return "Unknown"} $MISTATUS_OFFLINE {Return "Offline"} $MISTATUS_ONLINE {Return "Online"} $MISTATUS_INVISIBLE {Return "Invisible"} $MISTATUS_BUSY {Return "Busy"} $MISTATUS_BE_RIGHT_BACK {Return "Busy/BRB"} $MISTATUS_IDLE {Return "Idle"} $MISTATUS_AWAY {Return "Away"} $MISTATUS_ON_THE_PHONE {Return "On the phone"} $MISTATUS_OUT_TO_LUNCH {Return "Out to lunch"} Default {Return "Undefined"} } } Function Get-OnlineContacts { $messenger=New-Object -com "Messenger.UIAutomation" $messenger.mycontacts | Where {$_.status -ne $MISTATUS_OFFLINE} | ` select FriendlyName,SignInName,@{Name="Status";Expression={Decode-MessengerStatus $_.Status}} } Function Get-AllContacts { $messenger=New-Object -com "Messenger.UIAutomation" $messenger.mycontacts | select FriendlyName,SignInName,@{Name="Status";Expression={Decode-MessengerStatus $_.Status}} } #create aliases New-Alias sim Sign-InMessenger New-Alias gmc Get-MessengerConstants New-Alias sms Set-MessengerStatus New-Alias gms Get-MessengerStatus New-Alias dms Decode-MessengerStatus New-Alias goc Get-OnlineContacts New-Alias gac Get-AllContacts