You are here

MSDN Blogs

Subscribe to MSDN Blogs feed
from ideas to solutions
Updated: 1 hour 36 min ago

C#: The C# Language Specification and Hello World

Wed, 07/02/2014 - 11:04
If you download and install Visual Studio Professional or Ultimate you get the specification installed on your system at the directory: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC#\Specifications\1033\ If you are using Visual Studio Express 2013, then you will need to search for ECMA-334 The no-cost ISO standard can be found at: And really it is an interesting read.  Really.  Ok, maybe...(read more)

Lync と Exchange の統合 EWS part1

Wed, 07/02/2014 - 11:00

こんばんは。Lync サポートの久保です。


Lync 2010 以降、Lync クライアントと Exchange サーバーが直接やり取りを行うことで様々なサービスを提供する機能がより一層強化されています。

Lync という製品に限らずですが複数の製品間でデータのやり取りを行い連携してサービスを提供する流れは益々加速しています。

IT エンジニアにとって特定のアプリケーションだけを理解していれば良い時代は既に終焉を迎えました。

特に Lync という製品の特性上、ネットワーク パケットを解析できるのは当たり前のスキルで、

そこに SQL/Office Web App Server/Exchange/SharePoint/Voice Gateway などの周辺製品についても一定以上のスキルが求められます。


そこで数日に分けて Exchange との連携について、基本動作+トラブルシュートについて解説をしたいとおもいます。


まず、最初に Lync と Exchange との連携で実際に提供されている機能については以下の URL を参照ください。


Lync 2010 の統合

(Lync 2010 と記載されておりますが、Lync 2013 で統合される機能は基本的に同様です。)


ここで注意していただきたいのは、Lync クライアントが Outlook と通信することはないという事です。

Lync と Exchange が直接通信を行います。

その際に使用する通信インターフェースが EWS と MAPI になります。

つまり、同一端末に Outlook がインストールされていなくても Exchange と連携可能です。


では、どのように Lync クライアントと Exchange が EWS 接続を実現するか順を追ってみていきましょう。


0. 現状確認 


[構成情報] を見ていただくことが最も簡単な確認方法です。



1. タスクトレイの Lync アイコンを [Ctrl] を押しながらクリックします。(赤丸の中が Lync のアイコン)

 2. [構成情報] をクリックします。

3. EWS 展開状況を確認します。


以上の方法により、現時点で EWS 接続が出来ているかどうか確認することが可能です。 


1. 名前解決

Lync と Exchange は TCP/IP の技術に則って接続されます。

そのため、当たり前のこととして、DNS 名前解決で、FQDN から IP アドレスを解決しネットワーク レイヤーでの接続を行います。

プロトコルとしては、HTTPS 接続となり、その接続試行順は以下の順番となります。

Autodiscover SRV record

 <smtpdomain> が環境によって変化するパラメータになります。

<smtpdomain> は、Active Directory のユーザー オブジェクトの proxyAddresses 属性の primarySMTP アドレスから情報を取得します。


管理者が Primary SMTP アドレスの値を確認する方法とユーザーが Primary SMTP を確認する方法を以下に紹介します。

管理者が Primary SMTP アドレスを確認する方法


管理者が Primary SMTP を確認するには、[Active Directory ユーザーとコンピューター] を使用するのが一般的です。


1.  [Active Directory ユーザーとコンピューター] を起動します。

2. [表示]-[拡張機能] にチェックを入れます。[拡張機能] にチェックをいれることで、プロパティから属性値を確認する事が可能です。

3. 該当のユーザーを右クリックし [プロパティ] を開きます。


4. [属性エディター] タブで [proxyAddresses] を選択し [編集] をクリックします。

5. 大文字で "SMTP" となっているのが Primary SMTP アドレスとなります。


ユーザーが Primary SMTP アドレスを確認する方法


ユーザーが Primary SMTP アドレスを確認するには、Outlook のアドレス帳をしようするのが一般的です。

1. Outlook で該当ユーザーの [プロパティ] を開きます。

2. [電子メール] タブで 大文字で "SMTP" となっているのが Primary SMTP アドレスとなります。


以上で、接続する際に必要となる情報である、 Primary SMTP のアドレスを確認する事ができました。



ひきつづき、快適な Lync ライフをお楽しみください。

Help us improve the Microsoft Remote Desktop app for Windows Phone 8.1

Wed, 07/02/2014 - 10:48

My name is David Bélanger, and I’m a program manager on the Remote Desktop team working on Remote Desktop apps for the different Windows platforms. The Microsoft Remote Desktop Preview app for Windows Phone 8.1 is currently available in the Windows Phone Store and we are adding new features over time to ensure the app meets your needs.

We’d love your help in finding out what feature set is really important to you to ensure you can accomplish the activities you leverage Remote Desktop for, whether that’s connecting back to your home PC, accessing your office PC while out to lunch or eventually being able to connect to the new Microsoft RemoteApp service or other remote resources made available to you by your admin.

To help you do so and help us prioritize, we’ve created a new feature request site. So go on over, take a look at what others have requested, vote on your favorites or add your own new feature requests. Note that posting does not guarantee that your request will make it into the product, but it is a good way to ensure we know what you really care about.

Update 3 Release Candidate for Visual Studio 2013

Wed, 07/02/2014 - 10:30

Today we’re announcing the Release Candidate for Visual Studio Update 3, which is now available for download; direct links for these downloads are at the bottom of this post. You can read more in the announcement on Brian Harry’s blog, as well as the Visual Studio 2013 Update 3 RC release notes. As with all VS updates, Update 3 offers new features as well as reliability fixes and bug fixes, with a particular focus on three areas: support for multi-device development with Apache Cordova™, improvements to our diagnostics experience, and general improvements to the user experience including a new setting that enables you to turn off the ALL CAPS menus – something many users have asked for.

Here’s some more information about the new features:

  • Multi-Device Hybrid Apps with Apache Cordova™. We announced support for multi-device development with Apache Cordova at TechEd earlier this year. Update 3 continues our investments in tooling for iOS, Android and Windows through HTML/JavaScript/CSS and Cordova including improvements to installation and management and diagnostics.
  • Application Insights. Application Insights, Microsoft’s service for monitoring production web sites and Windows Store and Phone apps, is now included in this update. Key enhancements in this release include polish to the account setup experience to create accounts directly in Azure without requiring a Visual Studio Online account as well as other enhancements from the Preview we published to the Visual Studio Gallery.

  • Visual Studio Graphics Analyzer. Diagnosing DirectX rendering and performance issues is tricky and the Visual Studio Graphics Diagnostics features help. In Update 3, we have enhanced the Graphics Analyzer to analyze graphics frames and to view the impact of shader code changes without re-running the app. You can easily configure capture options in Tools Options under Graphics Diagnostics.

  • Managed memory dump analysis. When analyzing managed memory dump files, you can now Go to Definition and Find All References of the selected type. To learn more, check out the blog post on .NET Memory Analysis.

  • CPU and Memory Usage tool. The CPU Usage tool in the Performance and Diagnostics hub now enables you to navigate from a function name in the Call Tree to the definition of that function in the editor so that you can easily see the code that is using CPU in your application. We have also made improvements to the Memory Usage tool such as support for Win32 and WPF applications (.NET 4.0 and up on Windows 8.1) and the ability to force garbage collections in managed apps.

  • Multi-Monitor configuration with Windows Store App. When debugging a Windows Store app with a multi-monitor configuration, Visual Studio now remembers which monitor your app was last run on. Here are some images to describe this experience.

  • CodeLens. CodeLens, an editor productivity feature available in Visual Studio Ultimate, is now available to show authors and changes to files in Git repositories. If you use Git for source control and TFS for work item tracking, CodeLens work item indicators now provide information about work items associated with a method, or class.

  • ALL CAPS. The change in our menus to use all capital letters was one of the areas about which we received a lot of feedback, so a while ago we added a registry key that disabled the ALL CAPS menus in Visual Studio 2012. To make the setting more discoverable and to enable it to remain set as you upgrade across Visual Studio versions, we have now added a Tools Options setting under the general Environment settings that lets you set your preferred menu bar styling. We also roam this setting so it’s available on all your devices.

You can learn more by reading the release notes and KB article, and then download the Update 3 RC bits on the download center. You can also install an integrated package of Visual Studio 2013 RTM and Update 3 RC for six Visual Studio products:

Many of the features and bug fixes in this release come from your feedback. Thank you for sharing these suggestions, thoughts and ideas with us on our UserVoice site and through the thousands of Send-a-Smile and Send-a-Frown actions you sent us from inside the IDE. If you find a bug please send it to us the Visual Studio Connect site.

John Montgomery, Director of Program Management, Visual Studio Platform

John has been at Microsoft for 15 years, working in developer technologies the whole time. Most recently before working on the Visual Studio core development environment, he was working on the tools for Windows 8 development.

CodeLens for Git improvements in Visual Studio 2013 Ultimate Update 3 RC

Wed, 07/02/2014 - 10:23

In Visual Studio 2013 Update 3 CTP1, we introduced some CodeLens for Git indicators. In this RC update we are completing the work by:

  • Automatically refreshing the CodeLens for git team indicators to reflect the current source control state
  • Improving the user experience in the case of big files with a lot of changes
  • Adding the "when last changed" information to the authors indicator
  • Adding work items indicators for TfGit
CodeLens for Git indicators now react to Git source control operations

In the CTP1, the authors and change indicators that we introduced did not refresh automatically when source control operations occurred. As a user, you had to manually refresh the indicators using the contextual command (or close and reopen the file)

In this RC, all the CodeLens for Git team indicators now refresh automatically when you:

  • Commit a change (the number of changes may be incremented, and the author may be changed)
  • Pull, or Sync your repository (you may get new changes)
  • Change the branch (the code and its history may be different)

The refresh occurs when performing these actions from Visual Studio or from any other tool, including the command line.

Improved experience for CodeLens for Git indicators used for big files with a lot of changes

In Visual Studio 2013 Update 3 CTP1, the authors and change indicators could take some time to appear, especially in the case of source files containing a lot of code elements or having a big change history. When that occurred, we received feedback that the users could not tell if something was broken, or that there were no change, or if it was just taking a lot of time. This was not an issue with the TfVc CodeLens team indicators, as they retrieve pre-computed data from the Tfs server. But since the processing occurs locally on the client for Git indicators, we had to let the user know that the computation was being done.

In this RC, the Git collaboration indicators shows dimmed placeholders while data is being computed, similar to the reference indicator:

Then, as things get computed, the numeric information appears and the color of the indicators get darker:

New "When last changed" indication

In addition to the latest author, and the number of additional people who have changed the code element, we now display how long ago the last change happened (31 days ago in this case)

New work item indicator When TFS work items are associated with commits

As was explained in the previous blog entry, the CodeLens for Git indicators work with any Git repository. In particular, they also work for Git repositories hosted in TfGit, either on premise, or in Visual Studio Online. In that case, you might be using Tfs to manage your work items.

When you are connected to a Team Project Collection (either from a TFS server or VS Online), and when we recognize that commits were associated with work items, we display another indicator, the Work item indicator telling you the number of work items associated with all the commits involving this code element.

When you click on the indicator, we go to the Tfs Server

And we get the work item details

As in the case of the CodeLens for TfVc indicators, you can navigate to the work items (this will open a tab in Visual Studio), or to the commit, which will appear in Team Explorer.

Of course, as in the case of TfVc CodeLens team indicators, we also changed the changes indicators popup to add the work items associated with commits:

As an aside, you might wonder in the image below some if the instances of the author have a green Lync presence indicator (meaning the author is currently available on Lync), and others show the same author as absent. This is because I did the commits with 2 different credentials (but the same display name). In one case I used my Microsoft Id, and when the organizational ids became available in VS Online, I started using my corporate ID, for which I show-up as available right now.

Deeper dive into what it means for commits to be associated with work items

Here I've double-clicked on the commit, and I can see the commit details in Team explorer.

The reason why CodeLens for Git knows that there are two work items associated with this commit is that the last line of the comment is of the form:

Related Work Items: #1, #3

This way, without any call to the TFS server, the Git CodeLens indicators know how many work items the commits are related to. But they don't know:

  • If these work items are in TFS or in another source control system
  • Which Team project collection this is related to (if at all in TFS)
  • Any details about these work items (what kind of work items they are, their title, etc …).

CodeLens only attempts to fetch this information when the pop-up is displayed. Therefore it might happen that:

  • You are not connected to a Team Project Collection
  • You are connected to another Team Project Collection.
  • You are connected to the right Team Project Collection but don't have the necessary permissions to see all the work items
  • Someone wrote in the commit description the line expected by TfGit to describe the related work items, but some of the work item ids don't correspond to work items in the current TFS.
What happens if you are not connected to TFS, or are connected to the wrong Team Project Collection?

In the case you are not connected to TFS, or are connected to the wrong Team Project Collection, you'll get a message when trying to see the details popup for the work items indicators. If that happens to you, you will need connect to the Team Project Collection. Of course this will probably close your solution, which you will have to re-open, and then things will work.

Note to reviewers: I'm installing a latest RC drop to make a screen copy with the right color for the message

What happens if you cannot access some of the work items?

If you are not allowed to access some or all of the work items (or they don't exist), the popup will display information for the work items that could be retrieved and a message informing you that not all of the expected work items could be retrieved.


In closing

As always, we are interested in hearing your feedback on this feature.

Please try it out, and let us know.

VS/TFS 2013.3 (Update 3) RC

Wed, 07/02/2014 - 10:21

Today we are releasing Visual Studio 2013 and Team Foundation Server 2013 Update 3.

You’ll find a complete list of download links in the release notes.

This is a “go-live” release and is expected to be the last preview before Update 3 is released.  It will be supported in production, can be used to upgrade production environments and will support upgrades to the final version when it is available.  We expect the final release to be within the next month or two.

There is quite a lot of stuff in VS 2013 Update 3.  You can read about a lot of the detail on the Visual Studio blog or in the release notes I referenced above.  I’ll call out a couple of the things that I’m particularly passionate about:

CodeLens support for Git – In Update 3, we’ve added CodeLens support for projects using Git, in addition to those using Team Foundation Version Control.  CodeLens for Git works against the local Git repo and, as such, works whether you are using an onprem TFS server, VS Online, another Git service (like GitHub) or are offline completely.  Next up on the CodeLens slate (not in Update 3 though), is support for CodeLens with TFVC on VS Online.  Read more here.

Mixed Case Menus – I know I’m going to get some feedback on this one :)  This is a long standing request by a vocal portion of the VS user base since VS 2012 to change the “ALL CAPS” menus.  In VS 2013 Update 3, we have added a Tools –> Options setting to control whether you see ALL CAPS or Mixed Case.  The default is still ALL CAPS but, if you change it, it will persist across upgrades and will roam across your IDE instances using the VS Online roaming settings feature (if you log into VS so it knows who you are).  For grins, I’ve copied the DECLINED User Voice suggestion from 2 years ago.  I guess we can “undecline” it now :)

In Team Foundation Server 2013 Update 3, we’ve also included some nice enhancements.

Test Plan and Suite customization – We’ve modified test plans and suites to be backed by work items so you can use the same customization techniques – adding fields, designing forms, etc.  It also means you can query them like work items and you have versioning/history of them.

Release Management support for PowerShell DSC and Chef – The TFS release management solution now support writing deployment scripts in PowerShell DSC (Desired State Configuration) or in Chef.  Among other things, this means we now have first class support for non-Windows platforms.

Some nice usability fixes – We’ve tried to slip in some nice customer driven TFS usability fixes into Update 3.  A couple of the top ones are:

  • We brought back the ability drill into group membership from within the web based permissions UI.  This was a capability we had in TFS 2012 but lost in 2013 and have gotten a lot of feedback on it.
  • We added a “filter setting” to the backlog to control whether “current sprint” user stories show up.  They used to be included and we got a lot of feedback that people didn’t want them there so we took them away.  Then we got a lot of feedback from people who do want them there.  So now we’ve made it configurable.

Looking forward to your feedback.  We’ve already started making progress on Update 4 so expect to hear more from me in the next month or so on the kinds of additional enhancements you can expect.


Graphics Diagnostics in Visual Studio 2013 Update 3 RC

Wed, 07/02/2014 - 09:57
Hello again! Three months have passed since we talked about what's new for Graphics Development in Visual Studio 2013 Update 2 . Since then the team has been working to bring even more Graphics Diagnostics features into Visual Studio. I'm very excited to share with you what we have put in Visual Studio 2013 Update 3 RC that just shipped! ( Download VS 2013 Update 3 RC , Brian Harry's announcement blog post , and release notes ). Visual Studio Graphics Diagnostics (VSGD) is a tool to help diagnose...(read more)

Case Sensitivity and Duplicate URLs Getting Crawled

Wed, 07/02/2014 - 09:29
I've seen several scenarios where a single document gets crawled twice and leads to duplicate results for this particular item – two entries in the Crawl Log with the same display URL, but with different Doc IDs. This isn't the typical scenario where multiple very similar documents get calculated as " Near Duplicate " items, but rather a single document being crawled as two unique items. For the spoiler, there is likely either a case sensitive crawl rule present or the Search Service Application...(read more)

Announcing the Release of ASP.NET MVC 5.2, Web API 2.2 and Web Pages 3.2

Wed, 07/02/2014 - 09:22

The NuGet packages for ASP.NET MVC 5.2, ASP.NET Web API 2.2 and ASP.NET Web Pages 3.2 are now live on the NuGet gallery!

Download this release

You can install or update the NuGet packages for ASP.NET MVC 5.2, ASP.NET Web API 2.2 and ASP.NET Web Pages 3.2 using the NuGet Package Manager Console, with the following commands:

  • Install-Package Microsoft.AspNet.Mvc -Version 5.2.0
  • Install-Package Microsoft.AspNet.WebApi -Version 5.2.0
  • Install-Package Microsoft.AspNet.WebPages -Version 3.2.0

Prerequisites for this release

What’s in this release?

This release primarily includes great new features for Web API OData v4 as summarized below but has bug fixes and minor features that bring in a lot more goodness to MVC, Web API, and Web Pages:



ASP.NET Web Pages 3.2

You can find a complete listing of the features and fixes included in this release by referring to the corresponding release notes:

Additional Documentation

Tutorials and other information about this release are available from the ASP.NET web site (

Questions and feedback

You can submit questions related to this release on the ASP.NET forums (MVCWeb APIWeb Pages).Please submit any issues you encounter and feature suggestions for future releases on our CodePlex site.

Thanks and enjoy!


Predicative Analytics

Wed, 07/02/2014 - 09:14

I haven’t got too excited for a while, but I believe that this will be immense. We can hopefully eliminate much of the heavy lifting associated with deploying machine learning in modern data driven applications. Have a read about what is in preview at the moment, but is already starting to be used by some customers.

Microsoft acquires SyntaxTree, creator of UnityVS plugin for Visual Studio

Wed, 07/02/2014 - 09:05

Game developers build the apps that hundreds of millions of users play every day across a wide variety of devices, from Xbox and Windows to iOS, Android and the Web. Games are the most popular application type on every major mobile platform, and Windows has long been a great home for desktop gaming. For developers, Visual Studio has been one of the most heavily used tools for game development across the industry, used by big game studios and indie developers alike.

Over the last 10 years, the Unity cross-platform game engine has grown to become a widely used rendering engine and tool for game developers targeting desktop, consoles, mobile devices and the web, with over 2 million developers now using Unity for game development. Unity offers great support for targeting or porting to Windows, across Windows desktop, Windows Store and Windows Phone.

Today, I'm pleased to announce that we are acquiring SyntaxTree, the developers of the UnityVS plugin for Visual Studio.

UnityVS enables Unity developers to take advantage of the productivity of Visual Studio to author, browse and debug the code for their Unity applications. Already today, dozens of the biggest names in game development rely on Visual Studio and the UnityVS plugin.

With this acquisition, we have the opportunity to integrate this support for Unity even more deeply into Visual Studio, and to continue to push forward Visual Studio's support for game developers.  Microsoft will also make the existing UnityVS plugin available for free on our download site shortly.

In today's mobile-first, cloud-first world, Visual Studio provides a great development environment for game developers targeting the breadth of mobile devices, and connecting to the rich services platforms in Azure.

I am excited about our opportunity to continue to push game development with Visual Studio forward with the help of the SyntaxTree team.


Windows Azure Pack IaaS Jump Start - July 16 & 17

Wed, 07/02/2014 - 08:58

Software-Defined Networking with Windows Server and System Centre Jump Start

Free online event with live Q&A with the WAP team:

Two half-days – Wednesday July 16th & Thursday July 17th – 9am-1pm PST

IT Pros, you know that enterprises desire the flexibility and affordability of the cloud, and service providers want the ability to support more enterprise customers. Join us for an exploration of Windows Azure Pack's (WAP's) infrastructure services (IaaS), which bring Microsoft Azure technologies to your data centre (on your hardware) and build on the power of Windows Server and System Centre to deliver an enterprise-class, cost-effective solution for self-service, multitenant cloud infrastructure and application services.

Join Microsoft’s leading experts as they focus on the infrastructure services from WAP, including self-service and automation of virtual machine roles, virtual networking, clouds, plans, and more. See helpful demos, and hear examples that will help speed up your journey to the cloud. Bring your questions for the live Q&A!

Register here:

UK Online Cloud Day with Mark Russinovich

Wed, 07/02/2014 - 08:26

Our first live Microsoft Virtual Academy event on July 14th, Microsoft Cloud Day 2014 with Q&A from Mark Russinovich where registrants will have an opportunity to:

· Hear the latest from Azure experts and startups at the recent Azure User Group summer conference in London. Learn how to get the most from Azure features and hear about Azure Machine Learning. Content made available online and on-demand for all registrants.

· Meet Mark “Live and Unplugged”: Mark will be joining us for a 45 minute video chat + live Q&A session with developers in the community. 

· Receive live instruction and practical tips to get started with Azure: I’ll be running a “how to get started on Azure for free” session that includes how to build websites and mobile services in the cloud and how to scale with cloud services

This is a rare opportunity for developers and IT Pros around the world to hear from Mark live in an informal “developer to developer” chat and ask their questions about Azure.

Register for this online digital event here:

Outline: PART 1:  Microsoft Cloud day 2014 on demand (video stream)

Event registrants will get early access to the content on demand as soon as it is published (in the next week).

Presentation Title


Keynote:  Rise of the Humans-  Regaining Control in the Digital Age.

Dave Coplin, Chief Envisioning Officer, Microsoft

Using Recommendations at Scale in the Cloud: Countdown to AzureML

Richard Conway, Director of Product Development, Elastacloud & Microsoft MVP

Scaling your mobile and Windows applications with Azure Notification Hubs

Beat Schwegler, Director of Cloud Evangelism, Microsoft

Building Internet of Things applications with Azure and Orleans

Richard Astbury, Microsoft MVP for Azure, Senior Consultant – Two10Degrees

Presentations from Startups:

  • From AWS to Azure
  • Mick Delaney, CTO Elevate Direct

Presentations from Startups:

  • Building
  • Mark Rendle, CEO Zudio & Microsoft MVP

· 3:00PM BST:   Get Started with Azure: for newcomers to the platform.

         o Build Websites in the Cloud

         o Build Mobile Services

         o Build Cloud Services

· 4:00 BST:  Meet the Users

· 4:15PM BST:  Meet Mark Russinovich

o Q&A with Mark and Azure Experts

· 5:00PM BST:  Close



Planky == @plankytronixx -- GBR257

Experiencing issues with APM service - 7/2 - Investigating

Wed, 07/02/2014 - 08:02

Initial update - 7/2/2014 15:00 UTC

Application Insights APM service is experiencing service degradation, which can potentially cause APM data latency for some of the customers. DevOps are engaged and actively working on this issue. We will post an update by 18:00 UTC.

We apologize for any inconvenience.

Application Insights Service Delivery Team

Big Data patterns

Wed, 07/02/2014 - 07:41

Big data is the buzz of the day, many talk about it but few have done anything with the technology. In my role as a Solution Architect with the Data Insights Center of Excellence team at Microsoft I have been involved in several projects where we have used big data technologies to solve business problems.

Part of the role is also to be involved in spreading the gained knowledge to the larger community. I have been involved in the creation of a white paper on big data patterns. This work is something that has been driven out of our Patterns & Practices team and hopefully it contains useful information to everyone that is considering a big data solution. You can find the paper here

How to add/query tags on lab environment machines?

Wed, 07/02/2014 - 07:22

MTM provides the ability to add/view tags on lab environment machines which helps in associating interesting information with the machine. You can add that using the following Ux in MTM.

One of the internal customer asked me that he wants to query these tags programmatically. Here are the steps that you should follow to query it programmatically.

  • Login to a machine with tfs object model installed. (The tfs object model gets installed with VS, MTM, Tfs, test controller etc)
  • Open notepad, copy paste the following script and change the highlighted variables as per your setup/deployment.
  • Open a power-shell command prompt and run the modified power-shell script.
  • It should show whether your environment is healthy or not. 

Enjoy !!

# Define parameters
$tfsCollectionUrl = New-Object System.URI("
$projectName = "myproject";
$environmentName = "myEnvironment";

# Load Client Assembly
[Reflection.Assembly]::Load(“Microsoft.TeamFoundation.Client, Version=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”);
[Reflection.Assembly]::Load(“Microsoft.TeamFoundation.Common, Version=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”);
[Reflection.Assembly]::Load(“Microsoft.TeamFoundation.Lab.Client, Version=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”);
[Reflection.Assembly]::Load(“Microsoft.TeamFoundation.Lab.Common, Version=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”);  

# Connect to tfs
$tfsCollection = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($tfsCollectionUrl);
$labService = $tfsCollection.GetService([Microsoft.TeamFoundation.Lab.Client.LabService]);

# Query for environments
$labEnvironmentQuerySpec = New-Object Microsoft.TeamFoundation.Lab.Client.LabEnvironmentQuerySpec;
$labEnvironmentQuerySpec.Project = $projectName;
$labEnvironmentQuerySpec.Disposition = [Microsoft.TeamFoundation.Lab.Client.LabEnvironmentDisposition]::Active;

$labEnvironments = $labService.QueryLabEnvironments($labEnvironmentQuerySpec);
foreach ($environment in $labEnvironments)
   $envName = $environment.Name;
   if ($envName -eq $environmentName)
      foreach ($labSystem in $environment.LabSystems)
         foreach ($property in $labSystem.CustomProperties)
            Write-Host $property.Key -> $property.Value;

         # You can query OS info as well.
         $extendedInfo = $labSystem.ExtendedInfo;
         $osProfile = $extendedInfo.OSProfile;
         Write-Host $labSystem.DisplayName :: GuestOS        -> $extendedInfo.GuestOperatingSystem;

Das Microsoft Education Booklet ist da

Wed, 07/02/2014 - 07:22

Unser Education Booklet gibt es jetzt zum kostenlosen Download! Microsoft möchte durch seine Bildungstechnologien künftige Generationen optimal auf ihre spätere berufliche Zukunft vorbereiten und bessere Chancen auf den sich stetig wandelnden Arbeitsmärkten eröffnen. Das Booklet gibt Ihnen einen Überblick, welchen Beitrag Microsoft zu einer nachhaltigen Bildungslandschaft leistet und welche Angebote im Microsoft Portfolio speziell für Lehrer, Schüler, Schulleitung und Verwaltung bereitstehen. Um langfristig dazu beizutragen, dass gute Bildung allen zugänglich ist unterstützt Microsoft Schulleiter bei der Transformation zur innovativen Schule und der Implementierung einer digitalen Infrastruktur. Als Unterstützung für Lehrer beim Einsatz von neuen Medien im Unterricht gibt es die Microsoft IT Academy und zahlreiche App-Empfehlungen. Office 365 bietet als Programm zur Kommunikation und Kollaboration ganz neue Möglichkeiten mit dem eigenen Device von überallher zusammen zu arbeiten. Noch mehr über die breite Palette an Programmen, Produkten und Initiativen von Microsoft Deutschland im Bildungsbereich erfahren Sie im kompletten Education Booklet, das Ihnen im Anhang zum Download zur Verfügung steht. Viel Spaß beim digitalen Durchblättern!

One-Liner: Padding a Number with Leading Zeroes

Wed, 07/02/2014 - 07:00
I’m putting this here only because I’m tired of searching for it.  How to pad an integer with leading zeroes is trivial.  1..16 | % { "{0:D2}" -f $_ } And padding a float with trailing zeroes is more of the same: $i = 2; (1..10) | % { "{0:F5}" -f $i; $i = $i / 2; } Now, how about a [double] (floating point?) There may be better ways, but the only one that comes to mind is to do it string-wise: function Format-Float { param ( [parameter(ValueFromPipeline=$true)][double[]]...(read more)

Redirecting the Favorites folder is technically legal, but you wouldn't like it

Wed, 07/02/2014 - 07:00

A customer liaison asked for assistance in debugging why Internet Explorer frequently stops responding at their customer's site. "We have tried a number of things like clearning the temporary Internet files, disabling add-ons, and resetting Internet Explorer settings. Please let me know if you can provide guidance based on the dump files provided below to indicate what could be causing Internet Explorer to hang here."

The dump file showed 23 threads, and all of them seemed to be normal, except for one which looked like this:

ntdll!KiFastSystemCallRet ntdll!ZwOpenFile+0xc kernel32!BaseDllOpenIniFileOnDisk+0x1ec kernel32!BaseDllReadWriteIniFileOnDisk+0x22 kernel32!BaseDllReadWriteIniFile+0x154 kernel32!GetPrivateProfileStringW+0x35 kernel32!GetPrivateProfileSectionNamesW+0x18 shell32!CPrivateProfile::_GetPrivateProfileAlloc+0x9e shell32!CPrivateProfile::GetSectionNames+0xa0 ieframe!CINIPropSetStg::Load+0x74 ieframe!CInternetShortcutPropertyStore::_CreateStoreFromFile+0x4e ieframe!CInternetShortcutPropertyStore::Load+0x22 ieframe!CInternetShortcut::LoadFromFileW+0x39 ieframe!CInternetShortcut::Initialize+0x17 shell32!InitializeFileHandlerWithFile+0x2d shell32!CFileSysItemString::HandlerCreateInstance+0x29a shell32!CFileSysItemString::LoadHandler+0x91 shell32!CFSFolder::_CreatePerInstanceDefExtIcon+0x7d shell32!CFSFolder::_CreateDefExtIcon+0xe9 shell32!CFSFolder::s_GetExtractIcon+0x1b shell32!CFSFolder::_BindHandler+0x209 shell32!CFSFolder::GetUIObjectOf+0x21 shell32!GetExtractIconW+0x31 shell32!_GetILIndexFromItem+0x52 shell32!SHMapPIDLToSystemImageListIndex+0x37 ieframe!OrderItem_GetSystemImageListIndex+0x187 ieframe!CSFToolbar::_GetBitmap+0x2f ieframe!CSFToolbar::_OnGetDispInfo+0x34 ieframe!CSFToolbar::_OnNotify+0x8e ieframe!CISFBand::_OnNotify+0x2c ieframe!CSFToolbar::OnWinEvent+0x89 ieframe!_FwdWinEvent+0x1d ieframe!CBandSite::_SendToToolband+0x44 ieframe!CInternetToolbar::_OnNotify+0x2e ieframe!CInternetToolbar::SizableWndProc+0x223 user32!InternalCallWinProc+0x23 user32!UserCallWinProcCheckWow+0x14b user32!SendMessageWorker+0x4b7 user32!SendMessageW+0x7c comctl32!CCSendNotify+0xbfb comctl32!SendNotifyEx+0x63 comctl32!CReBar::_WndProc+0x24f comctl32!CReBar::s_WndProc+0x2c user32!InternalCallWinProc+0x23 user32!UserCallWinProcCheckWow+0x14b user32!CallWindowProcAorW+0x97 user32!CallWindowProcW+0x1b comctl32!CallOriginalWndProc+0x1a comctl32!CallNextSubclassProc+0x3d comctl32!DefSubclassProc+0x46 ieframe!CInternetToolbar::CITBandSite::s_RebarSubclassWndProc+0x5a comctl32!CallNextSubclassProc+0x3d comctl32!MasterSubclassProc+0x54 user32!InternalCallWinProc+0x23 user32!UserCallWinProcCheckWow+0x14b user32!SendMessageWorker+0x4b7 user32!SendMessageW+0x7c comctl32!CCSendNotify+0xbfb comctl32!CToolbar::TBGetItem+0x2c comctl32!CToolbar::DrawButton+0x5e9 comctl32!CToolbar::DrawToolbarH+0x1ad comctl32!CToolbar::TBPaintImpl+0xd5 comctl32!CToolbar::TBPaint+0x18c comctl32!CToolbar::ToolbarWndProc+0xd2e comctl32!CToolbar::s_ToolbarWndProc+0x9b user32!InternalCallWinProc+0x23 user32!UserCallWinProcCheckWow+0x14b user32!CallWindowProcAorW+0x97 user32!CallWindowProcW+0x1b comctl32!CallOriginalWndProc+0x1a comctl32!CallNextSubclassProc+0x3d comctl32!DefSubclassProc+0x46 ieframe!CSFToolbar::_DefWindowProc+0xb8 ieframe!CISFBand::_DefWindowProc+0x75 ieframe!CNotifySubclassWndProc::s_SubclassWndProc+0xb4 comctl32!CallNextSubclassProc+0x3d comctl32!MasterSubclassProc+0x54 user32!InternalCallWinProc+0x23 user32!UserCallWinProcCheckWow+0x14b user32!DispatchClientMessage+0xda user32!__fnDWORD+0x24 ntdll!KiUserCallbackDispatcher+0x2e user32!NtUserDispatchMessage+0xc user32!DispatchMessageWorker+0x38c user32!DispatchMessageW+0xf ieframe!CTabWindow::_TabWindowThreadProc+0x280 kernel32!BaseThreadInitThunk+0xe ntdll!__RtlUserThreadStart+0x23 ntdll!_RtlUserThreadStart+0x1b

(Remember, you can get symbols for operating system binaries.)

General debugging tip: If you see a really huge stack, that's a good sign that something interesting is going on. Boring stacks tend to be small.

Furthermore, frames near the bottom of the stack tend to describe what the purpose of the thread is, whereas frames near the top of the stack tend to describe what the thread is actually doing right now. (Exercise: Why?)

In this case, we see a stack that was probably created to manage a tab window (CTab­Window::_Tab­Window­Thread­Proc) and it's currently stuck in an I/O operation. You can then look at the file name to see what file is stuck.

0:001> du 04cd6aac 04cd6aac "\\server\share\abcdefg\Favorites\Mail.url"

It looks like this user stored their Favorites on a network share that is not responding.

The customer liaison replied,

Thanks a lot for this information. Can you help me understand how do we tell that the dump indicates this file I/O is causing IE to hang? Having this information would help me better explain this to the customer.

I wasn't sure how to respond to this. If you see a function with the words File and one of Open, Read, or Write in its name, there's a good chance that it opens, reads, or writes a file. You probably want to look to see what file is being opened, read from, or written to, because that may give a clue why the I/O operation is stuck.

It turns out that this customer redirected the user's Favorites to a network location. The Internet Explorer folks tell me that this is not an explicitly supported scenario in the sense that they did not do any tuning to make this scenario work well, and frequent hangs are consequently not unexpected. If you redirect the Favorites to a network location, then you get what you get. And if that server frequently becomes unavailable, then what you get often sucks.

Serial Number Tracking for Service and Warranty in Microsoft Dynamics AX R3

Wed, 07/02/2014 - 06:52
Serial Number Tracking for Service and Warranty in Microsoft Dynamics AX R3 In Microsoft Dynamics AX 2012 R3 we added new serial number capabilities. The intention was to help companies who are struggling to manage serialized products in inventory, when they really just want to capture serial numbers for service and warranty purposes when items are sold. For many companies this is the only reason to track serial numbers, but because serial numbers are stored as an inventory dimension, companies...(read more)


Drupal 7 Appliance - Powered by TurnKey Linux