Category: Lync 2010


So as you can guess i am on a journey about learning powershell and i am trying to do things which might be useful.

This is a straight forward piece of script to help you baseline you lync installation.

My next edits to this script will output to files for comparison later and also i am going to section things into functions and also create a little menu system but here it the bones of a working script as it is… enjoy!

 

write-host “Welcome to the resource utilization baseline test” -Foregroundcolor Green -Backgroundcolor Black
write-host “Please confirm how long you want these tests to run for” -Foregroundcolor Green -Backgroundcolor Black
write-host “For exampe you may want to sample every 1 second for a max samples of 1000” -Foregroundcolor Green -Backgroundcolor Black
write-host “This will give you 1000seconds of samples… you may want this longer” -Foregroundcolor Green -Backgroundcolor Black
write-host “depending on the environmnet” -Foregroundcolor Green -Backgroundcolor Black
write-host “Comments and Suggestions to johm@microsoft.com or on Twitter: @mccabej” -foregroundcolor Yellow -backgrouncolor red
write-host “Please be kind i am still learning powershell :)” -foregroundcolor Yellow -backgrouncolor red
write-host
$sampleinttime = Read-host (“Please enter how often you want to sample in secs and press enter:”)
$maxsamp = Read-host (“Please enter the amount of samples you want to take and press enter:”)

write-host “Performing Resource Utilization Baseline Tests…….” -Foregroundcolor Green -Backgroundcolor Blue
write-host
write-host
write-host
$result = get-counter -counter “\Processor(_total)\% Processor Time” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$proctimetotal = $avg.average
write-host “Baseline Processor Time Overall” $proctimetotal -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\Process(RTCSRV)\% Processor Time” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$proctimertcsrv = $avg.average
write-host “Baseline Processor Time for RTCSRV” $proctimertcsrv -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\Process(IMMcuSvc)\% Processor Time” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$proctimeimmcusvc = $avg.average
write-host “Baseline Processor Time IMMcuSvc” $proctimeimmcusvc -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\Memory\Pages/sec” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$mempages = $avg.average
write-host “Baseline for Memory Pages/sec” $mempages -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\Network Interface(*)\Bytes Total/sec” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$netint = $avg.average
write-host “Baseline For Network Interfces Bytes Total/sec” $netint -Foregroundcolor Green -Backgroundcolor Blue

write-host
write-host
write-host
write-host “Performing User Load Baseline Tests…….” -Foregroundcolor Green -Backgroundcolor Blue
write-host
write-host

write-host

$result = get-counter -counter “\LS:SIP – 01 – Peers(*)\SIP – 001 – TLS Connections Active” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$tlsconnectionsactive = $avg.average
write-host “Baseline SIP – 001 – TLS Connections Active” $tlsconnectionsactive -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\LS:SIP – 01 – Peers(*)\SIP – 000 – Connections Active” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$connectionsactive = $avg.average
write-host “Baseline SIP – 000 – Connections Active” $connectionsactive -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\LS:SIP – 02 – Protocol\SIP – 001 – Incoming Messages/sec” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$incomingmsgpersec = $avg.average
write-host “Baseline SIP – 001 – Incoming Messages/sec” $incomingmsgpersec -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\LS:ImMcu – 00 – IMMcu Conferences\IMMCU – 000 – Active Conferences” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$immcuactiveconf = $avg.average
write-host “Baseline ImMCU Active Conferences” $immcuactiveconf -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\LS:ImMcu – 00 – IMMcu Conferences\IMMCU – 001 – Connected Users” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$immcuconusers = $avg.average
write-host “Baseline ImMCU Connected Users” $imccuconusers -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\LS:USrv – 00 – REGDBStore\USrv – 002 – Queue Latency (msec)” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$queuelatency = $avg.average
write-host “Baseline USrv – Queue Latency” $queuelatency -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\LS:USrv – 00 – REGDBStore\USrv – 004 – Sproc Latency (msec)” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$sproclatency = $avg.average
write-host “Baseline USrv – Sproc Latency” $sproclatency -Foregroundcolor Green -Backgroundcolor Blue

 

write-host
write-host
write-host
write-host “Performing Multipoint Conferencing Unit Resource Baseline Tests…….” -Foregroundcolor Green -Backgroundcolor Blue
write-host
write-host

write-host

$result = get-counter -counter “\Memory\Pages/sec” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$mempages = $avg.average
write-host “Baseline for Memory Pages/sec” $mempages -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\Network Interface(*)\Bytes Total/sec” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$netint = $avg.average
write-host “Baseline For Network Interfces Bytes Total/sec” $netint -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\Processor(_total)\% Processor Time” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$proctimetotal = $avg.average
write-host “Baseline Processor Time Overall” $proctimetotal -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\Process(ASMCUSVC)\% Processor Time” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$asmcusvc = $avg.average
write-host “Baseline Processor Time for ASMCUSVC” $asmcusvc -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\Process(AVMCUSVC)\% Processor Time” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$avmcusvc = $avg.average
write-host “Baseline Processor Time for AVMCUSVC” $avmcusvc -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\Process(DataMCUsvc)\% Processor Time” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$datamcusvc = $avg.average
write-host “Baseline Processor Time for Datamcusvc” $datamcusvc -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\Process(meetingmcusvc)\% Processor Time” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$meetingmcusvc = $avg.average
write-host “Baseline Processor Time for meetingmcusvc” $meetingmcusvc -Foregroundcolor Green -Backgroundcolor Blue

 

$result = get-counter -counter “\Process(ASMCUSVC)\Private Bytes” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$asmcusvcpb = $avg.average
write-host “Baseline Private Bytes for ASMCUSVC” $asmcusvcpb -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\Process(AVMCUSVC)\Private Bytes” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$avmcusvcpb = $avg.average
write-host “Baseline Private Bytes for AVMCUSVC” $avmcusvc -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\Process(DataMCUsvc)\Private Bytes” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$datamcusvcpb = $avg.average
write-host “Baseline Private Bytes for Datamcusvc” $datamcusvc -Foregroundcolor Green -Backgroundcolor Blue

$result = get-counter -counter “\Process(meetingmcusvc)\Private Bytes” -sampleinterval $sampleinttime -maxsample $maxsamp
$avg = $Result | Foreach-object {$_.CounterSamples}| Measure-object -Property CookedValue -Average
$meetingmcusvcpb = $avg.average
write-host “Baseline Private Bytes for meetingmcusvc” $meetingmcusvc -Foregroundcolor Green -Backgroundcolor Blue

Virtualizing Lync

its a topic i talked about a while back… and i think needs to be emphasised to the end user / customer / whoever you are!

lets take a look at this very simply  and i think the point will be made….

if you look at the hardware specs for Lync you are will see that you will require 2 x Quad core proc’s and around 8 gb ram….

No problem i hear you see… but hey hang on hyper-v on supports 4 vCPU

and there in lies the problem… (i am not bashing hyper-v by the way i know 8 vcpu will be on the way soon enough)

straight away you are limiting the amount of resources you can giving to a production environment!

so again i will say before you do it, please consider it….

Lync is designed as a pbx replacement and if this is going to be your MAIN production pbx consider that point….

and by the way i am all for virtualizing lync it does make sense just be aware of the potential issues…

Its a question that is asked a lot by customers and one i have definitely found clouded due to the reputation of the previous product OCS 2007 R1 / R2. In my personal opinion, Lync is enterprise ready but i am only one person Smile So i did some research and came across a very interesting link which have tested and tried to stress the Lync system. Here is the link to the post

http://blogs.technet.com/b/ucedsg/archive/2011/01/21/but-does-lync-server-2010-really-have-pbx-voice-reliability-or-call-scalability.aspx

Now as i said in my opinion yes it is enterprise ready and is a real alternative to the a traditional pbx or ip pbx. I noticed this on the beta builds, the voice quality alone had improved so much i would not have none i was on a lync system if i had not been told and that was in BETA! now its in rtm with the bugs worked out (well as much as you can!)

What also is interesting to drive this product into the enterprise pbx space, is that telephony more often than not is falling into the responsibility of the it team to maintain. if you still lucky to have facilities doing it than well done but at the end of the day, they are maintain separate systems, maintenance contracts etc… to keep this up which at the end of the day is an extra cost. Lync can sit on the IT infrastructure can be managed and monitored by the IT Team, users can be provisioned during the process of creation reducing specialist costs. No special handsets are required as they can use their laptop / pc (and why not as most people are used to using skype/msn/google chat nowadays even exec’s) and finally you have the scalability and flexibility or the platform.

If it is your time to replace the companies PBX, Lync certainly should be on your list to review as a SERIOUS competitor.  Imagine being able to virtualize your PBX hardware and provider EASY disaster recovery for it, with very simple tools to drive it and no specialists required.

Its been a couple of weeks now since Lync RTM’d and i cant help but think how the face of things are going to change.

 

i read a blog post the other day from www.aidanfinn.com about Millennials and it got me thinking.

 

it is true most senior IT Pros are aware of the new social media engines and web 2.0 which drive the life style of the “Millennials” and of course many of us to Smile

 

but we still like to keep control and in an enterprise environment control is definitely key to ensure we dont have nasty litigations etc… on our hands!

So…. when you look at a business now look at the age profile of the people in charge and think…. do they have children and what age would they be!

Most of them will be in the age bracket that going away for long weeks and traveling for a year will be common place and how do they keep in touch with back home…….. you got it SKYPE/ FACEBOOK / MSN etc…

The true days of the desk jockey who wants a keypad to punch are numbered in my opinion and this is were i think Lync will gain adoption in the enterprise, it’s feel is very similar to the Social media engines and can also federate to some of these services as well and integrate in various other ways… and not to mention most “execs” are used to driving this experience in a slightly different setting on there home PC (trust me if my dad can do it!)

And best of all we get to keep control of the system because Lync is an enterprise ready technology with all those security features / auditing capabilities all there to keep the it admin at peace.

and finally not to mention it is a kick ass enterprise voice solution Smile with tongue out with the ability to connect directly to sip trunk providers and give you massive call cost saving and line rental saving

but dont take my word for it try it out www.microsoft.com/lync

so i did promise to do more Lync stuff Smile and i meant it

but unfortunately a new job means upskilling and loads of different work and loads of time spent getting to know the system!

 

however we are getting back on track now and the first bits i have done is publish a video on installing Lync 2010 Standard Edition…

 

Handy i think for starting an internal POC and this just part one Smile

 

keep an eye out for part 2

its an mp4 video…. hope it helps some people out

 

Download Link –> http://tinyurl.com/2f6u3wj

Ok we all know about virtualization at this stage and if you dont where have you been!! Smile

 

Lync 2010 is microsofts next generation voice platform with integration IM and Video Conferencing, combine this with exchange and you got your self a full phone system with voicemail and more so a unified approach (hence the unified communications piece! Smile with tongue out

now here is were it gets interesting in my view… traditionally when it comes to voice systems and especially the previous generation of the products and the current generation of exchange 2010 unified messaging they tend not to like to be virtualized. Not that they wont work in an environment that is virtualized just that the associated overhead that you naturally inherit when you virtualize a system starts to become an issue.

Also when you consider legacy PBX vendors were all hardware based, you have to stand and consider the approach of virtualizing what is considered the most important system in a company in many cases. if your phones go down it usually means bad for business, even more than if an email system goes down (there is a little tolerance for that as well but more than what is for if you phone system goes down!)

So you begin to ask yourself does it make sense and really do you want to do…..

First of all yes you can and here is a link to the best practice document from Microsoft around lync

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=842F2426-AB3C-4510-9283-BFBF9D1B4438&displaylang=en

HOWEVER it should really only be considered in certain scenarios and ALWAYS ALWAYS make sure it is a very well spec’d host with plenty of overhead and very low latency components. This is simply to ensure the best user experience possible.

Now in my personal consideration it should only be used when it comes to Proof of Concept or even as a backup registrar which would make sense as if your main box goes down at least you can still work even if it is in a degraded capacity (obviously with this scenario i havent considered this to be a full enterprise deployment Smile )

if you do decide to virtualize, please ensure you perform follow all virtualization guidelines as listed in the document and review the general best practices around virtualizing SQL and Windows 2008 R2, as every point in the chain matters. Ensure your storage system is not bottle necked and that you have sufficient cpu and memory capacity to carry this load and any projected load when you design the system.

In short every company is different and some will want to ensure the system is virtualized, but ensure expectations are set, guidelines are followed and properly capacity planning is done…

As previous mentioned to numerous colleagues and various chats i have had with people, i am certainly an advocate of a virtualized world and if it can be done i generally will, but there are some workload’s out there you have to stand back from and just consider… is it really a good idea.

We all know user experience is key to adoption and provide bad user experience… well you know the answer… Open-mouthed smile

Lync

As we all know by now today was global lync launch day 🙂 and personally I think it’s such an amazing the technology has come on so much in just over the two years that I have played with it, it’s incredible.
Some of the things right out of the box that are very impressive for me are

The interface from a client and server perspective are completely different and for the better I think! Let’s just say silverlight

The second big thing for me is the virtualization standpoint. Virtualization equals less physical hardware which equals better chance of deploying lync 🙂 and let’s face it as excellent as it is lync still requires servers ( virtual/physical) one way or another and the more complex your design the more servers that are needed but I stress that it is for good reason but since you have now got good virtualization support it’s becomes easier to deploy! Just make sure you have the head room to virtualized and more so it makes sense for your deployment

The next part of lync that is just brilliant is the colocation of the mediation role on the front end server.

Media bypass, sip trunks, powershell etc… There is so much more that makes it worth looking at but the final thing I think is worth mentioning is the audio quality is at least 10 times better than OCs and with the right headsets / handsets better than traditional Pbx PERIOD

Moving Lync Eval to RTM

taken from nathans blog…. but yes it can be done…

http://nathanwinters.co.uk/2010/11/11/moving-from-lync-eval-to-real-rtm-volume-licensed/

 

Hi,

This has been coming up a few times in recent days on forums and distribution lists.

The question is can I install Lync Eval now, and then transfer to full Volume Licensed RTM code when it is available.

Well yes you can and it is supported.

Here’s how:

After you get access to volume bits  through a normal sources like the volume license site:

On every machine which has EVAL version of Server.MSI installed: 

1. run "msiexec.exe /fvomus server.msi EVALTOFULL=1 /qb (Note: the server.msi is from Volume media)

2. run PS cmdlet "enable-cscomputer"

Hope that helps

Cheers

Nathan

over the past few days i have done a few migrations from beta to rc

and other bits in between….

the move-csmanagementstore cmdlet kept failing saying the sql server was not accessible but it was and no firewall was enabled and i could create an odbc connection to the DB and all was great HOWEVER i still could not move the CMS database master! (remember all servers host a copy of the database) anyway a quick ADSI edit os MS-RTCSIP-backendserver value in AD changing it to the server i want and off we go! refresh the topology builder and all done

one of the coolest commands i have come across when decommissioning a server is the bootstrapper.exe /scorch command

other commands i have had to use are

install-csdatabase –centralmanagementdata –clean –sqlserverfqdn server.contoso.com –sqlinstance rtc (this creates the CMS database)

install-csdatabase –localdatabases –clean (this creates the local database store)

disable-cscomputer (removes roles from the server based on the published topology)

enable-cscomputer (enables roles from the server based on the published topology)

get-csconferencedirectory (see what conference directories are published in the entire topology)

remove-csconferencedirectory (deletes a specific directory based on the identity you specify)

logging is excellent in every part of it and you can isolate problems very quickly which is a massive change from the previous versions…

and of course RBAC this to me is a god send!

for now on with the playing! 🙂

 

see this post from the LCSKID http://blogs.technet.com/b/toml/archive/2010/09/16/upgrading-lync-server-2010-release-candidate-to-rtm-no.aspx?utm_source=twitterfeed&utm_medium=twitter

now microsoft have said stuff like this before and allowed it to happen in some format and i reckon we might see the same…

the beta to rc was a little bit mucky (you have to modify an AD attribute to move the CMS) but it was possible…

so lets watch this space!