<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Craig Riter</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/criter/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/criter/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:41:30 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Processing file with multiple threads</title>
      <link>https://docs.microsoft.com/archive/blogs/criter/processing-file-with-multiple-threads</link>
      <pubDate>Fri, 02 May 2014 22:25:26 GMT</pubDate>
      <dc:creator><![CDATA[Craig Riter]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/criter/2014/05/02/processing-file-with-multiple-threads/</guid>
      <description><![CDATA[I was working on a project where I needed to process an input file and perform an action for each...]]></description>
      <content:encoded><![CDATA[<p>I was working on a project where I needed to process an input file and perform an action for each line.&nbsp;&nbsp; The action was a network call that was taking a few seconds to update.&nbsp;&nbsp; At low numbers of records in the file this normally wouldn't be a big deal but I was looking at 10's of thousands of lines and so needed something that could process the lines in parallel.&nbsp; Since the processing of the lines was being performed by I could just spin up some threads to send the lines to the network service.&nbsp;&nbsp;</p>
<p>Since this was a long running overall process, I also wanted to have some tracking.&nbsp; The tracking should indicate how quickly lines are getting process and include some estimate of how long it would take to complete the processing of the file.&nbsp;</p>
<p>Attached you'll find the project that has a Console project with a sample file for processing and a simulated long task using Thread.Sleep.</p>
<p>&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/10/52/23/94/ProcessFile.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-52-23-94/ProcessFile.zip">ProcessFile.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Restoring a deleted (unlicensed) mailbox in Office365 Exchange Online</title>
      <link>https://docs.microsoft.com/archive/blogs/criter/restoring-a-deleted-unlicensed-mailbox-in-office365-exchange-online</link>
      <pubDate>Sat, 10 Aug 2013 00:02:00 GMT</pubDate>
      <dc:creator><![CDATA[Craig Riter]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/criter/2013/08/10/restoring-a-deleted-unlicensed-mailbox-in-office365-exchange-online/</guid>
      <description><![CDATA[&nbsp;
If you happen to find yourself in the situation where you have un-licensed an Office365 user...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p>
<p>If you happen to find yourself in the situation where you have un-licensed an Office365 user from Exchange Online then restoring in can be a few simple steps.&nbsp;&nbsp; You can un-license a user by checking the Exchange Online.&nbsp;&nbsp;<br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/25/93/4747.sshot-54.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-25-93/4747.sshot_2D00_54.png"><img style="margin-right: auto; margin-left: auto; display: block;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/25/93/4747.sshot-54.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/373x301/__key/communityserver-blogs-components-weblogfiles/00-00-01-25-93/4747.sshot_2D00_54.png" alt="" border="0" /></a></p>
<p>There are warnings about un-licensing the user will delete the data but maybe you thought it was a different user.&nbsp; You could also have had a script go rogue and accidently remove the license from a bunch of users.</p>
<p>If you know who the users that had their mailboxes deleted then you can easily re-license them.&nbsp; If not you'll need to figure out the users that have deleted mailboxes.&nbsp; I've been told that <a title="Get-RemovedMailbox" href="https://technet.microsoft.com/library/ff959227(v=exchg.150).aspx">Get-RemovedMailbox</a> should show you this information but I can't seem to replicate those results in my tenant.</p>
<p>You can try these commands to view the mailboxes.</p>
<p>&nbsp;</p>
<p>1. Connect to Exchange Online with PowerShell, detailed in <a title="TechNet article" href="https://technet.microsoft.com/en-us/library/jj984289(v=exchg.150).aspx">TechNet article</a>.</p>
<p><span style="font-family: courier new,courier;"><span style="color: #ff4500;"><span style="color: #ff4500;"><span style="color: #ff4500;">$Cred</span></span></span><span style="color: #a9a9a9;"><span style="color: #a9a9a9;"><span style="color: #a9a9a9;">=</span></span></span><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;">Get-Credential</span></span></span></span></p>
<p><span style="font-family: courier new,courier;">$Session&nbsp;<span style="color: #a9a9a9;"><span style="color: #a9a9a9;"><span style="color: #a9a9a9;">= </span></span></span><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;">New-PSSession</span></span></span><span style="color: #000080;"><span style="color: #000080;"><span style="color: #000080;">-ConfigurationName </span></span></span><span style="color: #8a2be2;"><span style="color: #8a2be2;"><span style="color: #8a2be2;">Microsoft.Exchange </span></span></span><span style="color: #000080;"><span style="color: #000080;"><span style="color: #000080;">-ConnectionUri </span></span></span><span style="color: #8a2be2;"><span style="color: #8a2be2;"><span style="color: #8a2be2;">https://ps.outlook.com/powershell/</span></span></span><span style="color: #000080;"><span style="color: #000080;"><span style="color: #000080;">-Credential </span></span></span><span style="color: #ff4500;"><span style="color: #ff4500;"><span style="color: #ff4500;">$Cred</span></span></span><span style="color: #000080;"><span style="color: #000080;"><span style="color: #000080;">-Authentication </span></span></span><span style="color: #8a2be2;"><span style="color: #8a2be2;"><span style="color: #8a2be2;">Basic</span></span></span><span style="color: #000080;"><span style="color: #000080;"><span style="color: #000080;">-AllowRedirection</span></span></span></span></p>
<p><span style="font-family: courier new,courier;">Import-PSSession <span style="color: #ff4500;"><span style="color: #ff4500;"><span style="color: #ff4500;">$Session</span></span></span></span></p>
<p>2. Run the Get-RemovedMailbox command</p>
<p><span style="color: #0000ff; font-family: courier new,courier; font-size: xx-small;"><span style="color: #0000ff; font-size: xx-small;"><span style="color: #0000ff; font-size: xx-small;">Get-Mailbox</span></span></span></p>
<p>This lists all of the recently removed mailboxes.</p>
<p>&nbsp;</p>
<p>Once you have the AD accounts you can then just use the Admin Portal to check the Exchange Online license option.&nbsp;&nbsp; You may have to wait up to 24 hours for the full mail data to return but in my testing they seems to come back in a matter of minutes.&nbsp;&nbsp; You can&nbsp;validate that the mailbox has returned by opening the mailbox with the "Open another mailbox..." feature which you can find when you have an email account open in Outlook Web Access.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/25/93/6864.sshot-56.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-25-93/6864.sshot_2D00_56.png"><img style="margin-right: auto; margin-left: auto; display: block;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/25/93/6864.sshot-56.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-25-93/6864.sshot_2D00_56.png" alt="" border="0" /></a></p>
<p>If you get the "something went wrong" page, it just means you don't have permissions to view it.&nbsp; Global Admins for the tenant do not have rights to view others' mailboxes by default, it must be granted.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/25/93/8712.sshot-58-crop1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-25-93/8712.sshot_2D00_58_2D00_crop1.png"><img style="margin-right: auto; margin-left: auto; display: block;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/25/93/8712.sshot-58-crop1.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-25-93/8712.sshot_2D00_58_2D00_crop1.png" alt="" border="0" /></a></p>
<p>&nbsp;</p>
<p>This KB article (&nbsp;<a href="https://support.microsoft.com/kb/2685435">https://support.microsoft.com/kb/2685435</a> ) tells how to grant access to all mailboxes.&nbsp;&nbsp; You can use this PowerShell command to grant access to a specific mailbox.</p>
<p>&nbsp;</p>
<p><span style="font-family: courier new,courier; font-size: xx-small;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;">Get-Mailbox </span></span></span><span style="color: #000080;"><span style="color: #000080;"><span style="color: #000080;">-Identity </span></span></span><span style="color: #8a2be2;"><span style="color: #8a2be2;"><span style="color: #8a2be2;">craig4@cloudriter15.onmicrosoft.com</span></span></span><span style="color: #a9a9a9;"><span style="color: #a9a9a9;"><span style="color: #a9a9a9;"> |</span></span></span><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #0000ff;">Add-MailboxPermission </span></span></span><span style="color: #000080;"><span style="color: #000080;"><span style="color: #000080;">-User </span></span></span><span style="color: #8a2be2;"><span style="color: #8a2be2;"><span style="color: #8a2be2;">craig@cloudriter15.onmicrosoft.com </span></span></span><span style="color: #000080;"><span style="color: #000080;"><span style="color: #000080;">-AccessRights </span></span></span><span style="color: #8a2be2;"><span style="color: #8a2be2;"><span style="color: #8a2be2;">fullaccess </span></span></span><span style="color: #000080;"><span style="color: #000080;"><span style="color: #000080;">-InheritanceType </span></span></span><span style="color: #8a2be2;"><span style="color: #8a2be2;"><span style="color: #8a2be2;">all</span></span></span></span></p>
<p>&nbsp;</p>
<p>&nbsp;You can then validate the permission change with PowerShell as well.</p>
<p><span style="color: #0000ff; font-family: Lucida Console; font-size: xx-small;"><span style="color: #0000ff; font-family: Lucida Console; font-size: xx-small;"><span style="color: #0000ff; font-family: Lucida Console; font-size: xx-small;">Get-MailboxPermission </span></span></span><span style="color: #000080; font-family: Lucida Console; font-size: xx-small;"><span style="color: #000080; font-family: Lucida Console; font-size: xx-small;"><span style="color: #000080; font-family: Lucida Console; font-size: xx-small;">-Identity </span></span></span><span style="color: #8a2be2; font-family: Lucida Console; font-size: xx-small;"><span style="color: #8a2be2; font-family: Lucida Console; font-size: xx-small;"><span style="color: #8a2be2; font-family: Lucida Console; font-size: xx-small;">craig4@cloudriter15.onmicrosoft.com </span></span></span><span style="color: #a9a9a9; font-family: Lucida Console; font-size: xx-small;"><span style="color: #a9a9a9; font-family: Lucida Console; font-size: xx-small;"><span style="color: #a9a9a9; font-family: Lucida Console; font-size: xx-small;">| </span></span></span><span style="color: #0000ff; font-family: Lucida Console; font-size: xx-small;"><span style="color: #0000ff; font-family: Lucida Console; font-size: xx-small;"><span style="color: #0000ff; font-family: Lucida Console; font-size: xx-small;">Select-Object </span></span></span><span style="color: #8a2be2; font-family: Lucida Console; font-size: xx-small;"><span style="color: #8a2be2; font-family: Lucida Console; font-size: xx-small;"><span style="color: #8a2be2; font-family: Lucida Console; font-size: xx-small;">User</span></span></span><span style="color: #a9a9a9; font-family: Lucida Console; font-size: xx-small;"><span style="color: #a9a9a9; font-family: Lucida Console; font-size: xx-small;"><span style="color: #a9a9a9; font-family: Lucida Console; font-size: xx-small;">, </span></span></span><span style="color: #8a2be2; font-family: Lucida Console; font-size: xx-small;"><span style="color: #8a2be2; font-family: Lucida Console; font-size: xx-small;"><span style="color: #8a2be2; font-family: Lucida Console; font-size: xx-small;">AccessRights</span></span></span><span style="color: #a9a9a9; font-family: Lucida Console; font-size: xx-small;"><span style="color: #a9a9a9; font-family: Lucida Console; font-size: xx-small;"><span style="color: #a9a9a9; font-family: Lucida Console; font-size: xx-small;">, </span></span></span><span style="color: #8a2be2; font-family: Lucida Console; font-size: xx-small;"><span style="color: #8a2be2; font-family: Lucida Console; font-size: xx-small;"><span style="color: #8a2be2; font-family: Lucida Console; font-size: xx-small;">Deny</span></span></span><span style="color: #a9a9a9; font-family: Lucida Console; font-size: xx-small;"><span style="color: #a9a9a9; font-family: Lucida Console; font-size: xx-small;"><span style="color: #a9a9a9; font-family: Lucida Console; font-size: xx-small;">, </span></span></span><span style="color: #8a2be2; font-family: Lucida Console; font-size: xx-small;"><span style="color: #8a2be2; font-family: Lucida Console; font-size: xx-small;"><span style="color: #8a2be2; font-family: Lucida Console; font-size: xx-small;">IsInherited </span></span></span></p>
<p>&nbsp;</p>
<p>Now you will be able to open the Mailbox to view that it has been successfully restored.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio searching with Navigate To... (CTRL + ,)</title>
      <link>https://docs.microsoft.com/archive/blogs/criter/visual-studio-searching-with-navigate-to-ctrl</link>
      <pubDate>Sun, 30 Dec 2012 10:18:00 GMT</pubDate>
      <dc:creator><![CDATA[Craig Riter]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/criter/2012/12/30/visual-studio-searching-with-navigate-to-ctrl/</guid>
      <description><![CDATA[I'm always happy when I find a new command or shortcut in programs that I work with...]]></description>
      <content:encoded><![CDATA[<p>I'm always happy when I find a new command or shortcut in programs that I work with everyday.&nbsp;&nbsp; I just think about all the time I'll be saving not having to move the mouse to click a button or the mental distraction in&nbsp;mechanically moving&nbsp;through a series of actions to perform a command.</p>
<p>If you want to find a file, function, class or other object name, use CTRL + , which will open the Navigate To&hellip; dialog.&nbsp;&nbsp;&nbsp; For reference you'll find it under the Edit Menu.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/25/93/1581.menu.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-25-93/1581.menu.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/25/93/1581.menu.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-25-93/1581.menu.png" alt="" width="418" height="490" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Once the dialog is open, you can just type the name of the object and with the matches listed start using the down arrow key to highlight the item you want and&nbsp;hit ENTER.</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/25/93/4520.Navigate%20To.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-25-93/4520.Navigate-To.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/25/93/4520.Navigate%20To.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/544x376/__key/communityserver-blogs-components-weblogfiles/00-00-01-25-93/4520.Navigate-To.png" alt="" border="0" /></a></p>
<p>For a really fast search you can have the text highlighted that you will use for the search when you hit the CTRL + , shortcut.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
  </channel>
</rss>