devblogs.microsoft.com
Open in
urlscan Pro
2a02:26f0:480:b9c::2f1e
Public Scan
Submitted URL: https://blogs.technet.microsoft.com/heyscriptingguy/2015/07/04/weekend-scripter-welcome-to-the-powershell-information-stream/
Effective URL: https://devblogs.microsoft.com/scripting/weekend-scripter-welcome-to-the-powershell-information-stream/
Submission: On March 13 via api from US — Scanned from DE
Effective URL: https://devblogs.microsoft.com/scripting/weekend-scripter-welcome-to-the-powershell-information-stream/
Submission: On March 13 via api from US — Scanned from DE
Form analysis
3 forms found in the DOMName: searchForm — GET /search
<form class="c-search" autocomplete="off" id="searchForm" name="searchForm" role="search" action="/search" method="GET"
data-seautosuggest="{"queryParams":{"market":"en-us","clientId":"7F27B536-CF6B-4C65-8638-A0F8CBDFCA65","sources":"Microsoft-Terms,Iris-Products,DCatAll-Products","filter":"+ClientType:StoreWeb","counts":"5,1,5"},"familyNames":{"Apps":"App","Books":"Book","Bundles":"Bundle","Devices":"Device","Fees":"Fee","Games":"Game","MusicAlbums":"Album","MusicTracks":"Song","MusicVideos":"Video","MusicArtists":"Artist","OperatingSystem":"Operating System","Software":"Software","Movies":"Movie","TV":"TV","CSV":"Gift Card","VideoActor":"Actor"}}"
data-seautosuggestapi="https://www.microsoft.com/msstoreapiprod/api/autosuggest"
data-m="{"cN":"GlobalNav_Search_cont","cT":"Container","id":"c1c9c3m1r1a1","sN":1,"aN":"c9c3m1r1a1"}" aria-expanded="false">
<input id="cli_shellHeaderSearchInput" aria-label="Search Expanded" aria-autocomplete="list" aria-expanded="false" aria-controls="universal-header-search-auto-suggest-transparent" aria-owns="universal-header-search-auto-suggest-ul" type="search"
name="query" role="combobox" placeholder="Search" data-m="{"cN":"SearchBox_nav","id":"n1c1c9c3m1r1a1","sN":1,"aN":"c1c9c3m1r1a1"}" data-toggle="tooltip" data-placement="right"
title="" data-original-title="Search">
<input type="hidden" name="blog" value="/scripting/" data-m="{"cN":"HiddenInput_nav","id":"n2c1c9c3m1r1a1","sN":2,"aN":"c1c9c3m1r1a1"}">
<button id="search" aria-label="Search" class="c-glyph" data-m="{"cN":"Search_nav","id":"n3c1c9c3m1r1a1","sN":3,"aN":"c1c9c3m1r1a1"}" data-bi-mto="true" aria-expanded="false"
disabled="disabled">
<span role="presentation">Search</span>
<span role="tooltip" class="c-uhf-tooltip c-uhf-search-tooltip">Search</span>
</button>
<div class="m-auto-suggest" id="universal-header-search-auto-suggest-transparent" role="group">
<ul class="c-menu" id="universal-header-search-auto-suggest-ul" aria-label="Search Suggestions" aria-hidden="true" data-bi-dnt="true" data-bi-mto="true" data-js-auto-suggest-position="default" role="listbox" data-tel="jsll"
data-m="{"cN":"search suggestions_cont","cT":"Container","id":"c4c1c9c3m1r1a1","sN":4,"aN":"c1c9c3m1r1a1"}"></ul>
<ul class="c-menu f-auto-suggest-no-results" aria-hidden="true" data-js-auto-suggest-postion="default" data-js-auto-suggest-position="default" role="listbox">
<li class="c-menu-item"> <span tabindex="-1">No results</span></li>
</ul>
</div>
</form>
POST https://devblogs.microsoft.com/scripting?na=s
<form method="post" action="https://devblogs.microsoft.com/scripting?na=s" onsubmit="return newsletter_check(this)">
<input type="hidden" name="nlang" value="">
<div class="col-8 tnp-field tnp-field-email pull-left" style="margin-right:13px;width: 300px;margin-left: 30px;"><input style="border: 1px solid #CED4DA;background-color:#FFF;height: 34px;font-size: 14px;" class="tnp-email x-hidden-focus"
type="email" name="ne" placeholder="Enter your email" required=""></div>
<div style="padding:0 10px;" class="tnp-field tnp-field-button"><input class="tnp-submit x-hidden-focus" type="submit" value="Subscribe">
<div style="clear: both;"></div>
<div class="tnp-field tnp-privacy-field"><label style="font-size: 14px;font-weight: normal;">By subscribing you agree to our <a href="https://docs.microsoft.com/en-us/collaborate/terms-of-use" target="_blank">Terms of Use</a> and
<a href="https://privacy.microsoft.com/en-us/privacystatement" target="_blank">Privacy Policy</a></label></div>
</div>
</form>
#
<form id="myForm" action="#">
<div class="modal-body">
<div class="form-group">
<label for="code-text">Paste your code snippet</label>
<textarea class="form-control" id="code-text" style="height: 150px;"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" onclick="myCodeCancelFunction()" class="btn btn-primary" data-dismiss="modal">Cancel</button>
<button type="button" onclick="myCodeFunction()" class="btn btn-primary">Ok</button>
</div>
</form>
Text Content
We use optional cookies to improve your experience on our websites, such as through social media connections, and to display personalized advertising based on your online activity. If you reject optional cookies, only cookies necessary to provide you the services will be used. You may change your selection by clicking “Manage Cookies” at the bottom of the page. Privacy Statement Third-Party Cookies Accept Reject Manage cookies Skip to main content Microsoft Scripting Scripting Scripting * Home * DevBlogs * Developer * Visual Studio * Visual Studio Code * Visual Studio for Mac * DevOps * Windows Developer * Developer support * ISE Developer * Engineering@Microsoft * Azure SDK * Command Line * Perf and Diagnostics * Math in Office * React Native * Technology * DirectX * Semantic Kernel * SurfaceDuo * Windows AI Platform * Languages * C++ * C# * F# * TypeScript * PowerShell Community * PowerShell Team * Python * JavaScript * Java * Java Blog in Chinese * .NET * All .NET posts * .NET MAUI * ASP.NET Core * Blazor * Entity Framework * AI * Machine Learning * Servicing * Xamarin * .NET Blog in Chinese * Platform Development * #ifdef Windows * Azure Government * Azure VM Runtime Team * Bing Dev Center * Microsoft Edge Dev * Microsoft Azure * Microsoft 365 Developer * Microsoft Entra Identity Developer Blog * Old New Thing * Power Platform * Windows MIDI and Music dev * Data Development * Azure Cosmos DB * Azure Data Studio * Azure SQL Database * OData * Revolutions R * SQL Server Data Tools * More Theme * Light * Dark Login Search Search * No results Cancel This is an archived blog. The “Hey, Scripting Guys!” blog has been retired. There are many useful posts in this blog, so we keep the blog here for historical reference. However, some information might be very outdated and many of the links might not work anymore. New PowerShell content is being posted to the PowerShell Community blog where members of the community can create posts by submitting content in the GitHub repository. Learn More Close WEEKEND SCRIPTER: WELCOME TO THE POWERSHELL INFORMATION STREAM Doctor Scripto July 4th, 20150 0 Summary: Learn about the Windows PowerShell information stream in this guest post by June Blender. Microsoft Scripting Guy, Ed Wilson, is here. Today we have another guest blog post by Honorary Scripting Guy and Sapien technical evangelist, June Blender. Take it away June… Note This post is updated on August 3, 2015 for the Windows PowerShell 5.0.10240 preview. A previous version described the information stream features in Windows PowerShell 5.0.10018. This post introduces the new information stream in Windows PowerShell 5.0, and it explains the issue it tries to solve and its elegant solution. In March 2014, I wrote a Hey, Scripting Guy! Blog post, Understanding Streams, Redirection, and Write-Host in PowerShell, which explained the output streams in Windows PowerShell. The outlier in the stream world has always been the much-maligned Write-Host cmdlet. Windows PowerShell inventor, Jeffrey Snover decried it as Write-Host Considered Harmful. Famously, in his 2012 Scripting Games commentary, Stop Using Write-Host!, Windows PowerShell MVP and first follower, Don Jones, proclaimed that Write-Host kills puppies. That’s a lot of high-powered condemnation for a cmdlet. It’s all about to change. With the advent of the information stream in Windows PowerShell 5.0, Write-Host is being redeemed. Actually, it's being, well…mainstreamed. And, Windows PowerShell 5.0 includes a new cmdlet, Write-Information, that has the benefits of Write-Host without the costs. WRITE-HOST AND STREAMS The root of the problem is that in Windows PowerShell versions 1.0 through 4.0, Write-Host output doesn’t go to a stream. It goes straight to the host program, such as the console, ISE, or PowerShell Studio. What happens then is determined by the host program, and it might vary. Because Write-Host doesn't go to a stream, if you put Write-Host in a script, the end-user can't suppress it, can't save it, and can't redirect it. * You can't suppress Write-Host output because there's no preference that silences it. * You can’t save Write-Host output in a variable, because the assignment operator uses the output stream. The Write-Host output is written to the host program, but the variable is empty. * You can't pass Write-Host output down the pipeline, because only the output stream goes down the pipeline. * You can't redirect Write-Host output, because redirection sends output from one stream to another, and Write-Host isn't part of any stream. WRITE-HOST AND STREAM POLLUTION Despite this very high-level condemnation, people kept using Write-Host, precisely because it doesn't go to the output stream. Write-Host is eco-friendly, because it doesn't pollute the output stream. The underlying principle is that every command should generate one type of output. For example, Get-Process returns Process objects, and Start-Job returns PSRemotingJob objects. You never want a command like the following, which returns process objects and a string: In its own sad way, Write-Host solves this problem. In this version, I replaced Write-Output with Write-Host. Now this function writes a process object and a string, but only the process object is written to the output stream. Typically, the user sees the string, but it's not saved in the variable or passed down the pipeline. WRITE-INFORMATION AND THE INFORMATION STREAM The dilemma was how to fix the harmful aspects of Write-Host (can't suppress, capture, or redirect), but keep it from polluting the output stream. And of course, the solution must be backward compatible. This most elegant solution is provided by the information stream and the Write-Information cmdlet. The information stream is a new output stream that works much like the error and warning streams. With these new features, you can write messages to the user without polluting the information stream. And you can suppress the messages, capture them, save them, and redirect them. The information stream has a preference variable, $InformationPreference, with a default value of SilentlyContinue, and a common parameter, InformationAction, to override the preference for the current command. It also has an InformationVariable common parameter that saves the stream content in the specified variable. The new cmdlet, Write-Information, provides information to the user without polluting the output stream. I think of it as a do-over of Write-Host. Both Write-Host and Write-Information write to the information stream, but they behave differently, because Write-Host must be backward compatible. Write-Information writes InformationRecord objects (System.Management.Automation.InformationRecord) to the information stream. Its output is determined by the $InformationPreference variable, which is set to SilentlyContinue by default. So, by default, its output is suppressed. To display a Write-Information message, change the default value of the $InformationPreference variable, or use a value of Continue for the new InformationAction common parameter. Write-Host also writes InformationRecord objects to the information stream, but it is not affected by the $InformationPreference variable or the InformationAction common parameter. (Windows PowerShell 5.0 is still in preview, so this might change.) However, you can save the content of Write-Host and Write-Information output in a variable by using the new InformationVariable common parameter. Because they write to the information stream (stream #6), you can redirect the output of Write-Host and Write-Information to a file. (Notice that redirecting host output suppresses it. Windows PowerShell 5.0 is still in preview, so this might change.) You can also redirect output from the information stream (stream #6) to standard output (stream #1). (For help, see about_Redirection.) Redirecting to standard output lets you use the assignment operator. Then you can pass content from the information stream down the pipeline, such as to the Get-Member and Select-Object cmdlets. Unless you intentionally redirect them, Write-Information and Write-Host messages still don't pollute the output stream. Now if someone was to write a function, such as Get-PowerShellProcess (and you still should never do this), the information is suppressed by default and the end-user could display the information without polluting the output stream. (I had to enable cmdlet binding to get the common parameters.) WRITE-HOST VS. WRITE-INFORMATION As you adopt Write-Information, keep in mind that there are a few differences: * Write-Information responds to the values of the $InformationPreference variable and the InformationAction common parameter. Write-Host does not. * Write-Host has parameters that change its display, for example, ForegroundColor and BackgroundColor. Write-Information does not. * Write-Information has a Tags parameter like New-ModuleManifest and cmdlets in the AzureResourceManager module. Write-Host does not. * Write-Host takes value from the pipeline. Write-Information does not. As you learn Windows PowerShell 5.0, play around with the information stream. And the next time you're tempted to use Write-Host, use Write-Information instead. ~June Thanks, June! I invite you to follow me on Twitter and Facebook. If you have any questions, send email to me at scripter@microsoft.com, or post your questions on the Official Scripting Guys Forum. See you tomorrow. Until then, peace. Ed Wilson, Microsoft Scripting Guy DOCTOR SCRIPTO SCRIPTER, POWERSHELL, VBSCRIPT, BAT, CMD Follow Posted in ScriptingTagged getting started guest blogger June Blender PowerShell 5.0 Scripting Guy! Weekend Scripter Windows PowerShell READ NEXT PowerTip: Multiply Value in Variable and Store Results Summary: Use Windows PowerShell to multiply the value stored in a variable and store the results. (image) How can I use Windows PowerShell to multiply the value of... Doctor Scripto July 4, 2015 0 comment PowerTip: Multiply Value in Variable and Store Results Summary: Use Windows PowerShell to multiply the value stored in a variable and store the results.(image) How can I use Windows PowerShell to multiply the value of a... Doctor Scripto July 4, 2015 0 comment 0 COMMENTS Discussion is closed. POWERSHELL RESOURCES PowerShell Documentation Scripting Forums PowerShell Forums PowerShell on TechCommunity PowerShell.org - Community Resource TOPICS .csv.NET.NET Core.NET Framework2015 Holiday Series4.070-410Aaron NelsonAccess.ApplicationACLsactivationActive DirectoryActive Directory Application Mode (ADAM)ActiveX Data Objects (ADO)Adam BertramAdam DriscollAdam HaynesAdmin First StepsADO.NETADSIAdvanced FunctionsAlan ByrneAlan MorrisAlex Verboonand jobsAnders WahlqvistAndroidAndy SchneideranonymousAntivirusApp-VapplicationsArrayArraysarrays hash tablesarrays hash tables and dictionary objectsarrays hashtables and dictionary objectsASCIIAshley McGloneAsia GandeckaASP.NET Coreassociators ofAttributesAudioAuthorsAutomatic VariablesAutomationAzureAzure AutomationAzureADbackground jobsbackupbackup and system restoreBartek BielawskiBashbasic computer informationbasic hardware and firmwareBasic Hardware informationbasic informationBasicsBATCHmanbatteries and power suppliesBeginnerBen PearceBen VierckBest Practicebest practicesBhargav ShuklaBill GrauerBill StewartBitLockerBITSBob StevensBoe ProxbreakpointBrent FormanBrian HitneyBrian JackettBrian LalancetteBrian WilhiteBrian WrenBruce PayetteBuck WoodyBuild your own cmdletC#CertificatecertificatesChad Millerchange journalChendrayan VenkatesanChris BelleeChris CampbellChris ConteChris DentChris WeaverChris WuChrissy LeMaireChristopher WeaverCIMClassesClaudia Fergusonclient-side managementclient-side printingClint HuffmanClinton KnightcloudCloud ServicesColorCOMCOM and DCOMComma and other deliminited filesComma and other delimited filesComma separated and other delimited filescommentscommunityCompare-Objectcompressed filescomputer accountsComputersConfiguration ManagerConnectconsoleContinuous DeliveryContinuous IntegrationCorey RothCredential GuardCryptographyCSV and other delimited filesDACLS and SACLSDan ReistDan SheehanDatadatabasesDataGriddatesdates and timesDave BishopDave WyattDavid MoravecDavid O’BriendebugdebuggerdebuggingDebugging and DiagnosticsDefenderDennis WhitneyDeployment and UpgradeDesktopdesktop managementDesktop MgmtDHCPDHCP serverDia Reevesdialog boxesdirectoriesDirectorydisk drives and volumesdisk quotasDisksDISMdisplaying outputDNSDNS serverDockerDoctor ScriptoDomain ControllersdomainsDon GillDon JonesDon WalkerDoug Finkedownloading filesed wilsonEdgeeditorendpointenumEnumsEric Wrighterror handlingevent logsevent logs and monitoringEventing and MonitoringEventsEvents and Loggingevents and monitoringExcel spreadsheetExcel.ApplicationExchangeExchange 2010Exchange OnlineExtensionsF#FacebookFAST ESP 5.3 SP3Filefilesfiles and foldersfilesystemFileSystemObjectfirewallfoldersFormatting outputfunctionsFundamentalsGary JacksonGary SiepserGeneral Managementgeneral management tasksGeneral Mgmt TasksGeorges MaheuGershon LevitzGet-Randomgetting startedGlyn CloughgraphicalgraphicsGreg LindsayGroup PolicyGroupinggroupsguest bloggerGuestBloggerGUIhardwarehashhash tablesHashTableshashtables and dictionary objectsHeath LawsonHelpHey Scripting GuyHistorical DebuggingHistoryholiday 2013Honorary Scripting GuysHyper-VHyperVIan FarrigniteIgnite 2015Ignite 2016IISIngo KarsteininputIntellisenseinternetInternet ExplorerInternet Explorer 7Internet SearchInvoke-RestMethodInvoke-WebRequestiOSIoTISEISE editingJakob Gottlieb SvendsenJames BrundageJames KehrJames O’NeillJan Egil RingJason HelmickJason HofferleJason MorganJason RybergJason WalkerJavaJD PlatekJeff WoutersJeffery HicksJeremy EngelJim ChristopherjobsJoel BennettJoel StidleyJoel VickeryJohn FerringerJohn SlackJon NewmanJonathan AllenJonathan MeddJonathan TylerJonathan YongJosh AtwellJosh GavantJsonJudith HermanJune BlenderJustin Hallk Scripting TechniquesKarl MitschkeKeith HIllKeith MayerKen McFerronKendal VanDykeKevin KlineKlaus SchulteKory ThacherkorytLaerte JuniorLINUXlocal account managementlocal accountslocal accounts and Windows NT 4.0 accountslocal user account managementLog Analyticslog parserLogging and eventslogon sessionslogsLogs and loggingLogs and monitoringloopingLYNCManagementMarc CarterMarco ShawMark MorowczynskiMark SchillMark Tabladillomasking passwordsmathMatt BongioviMatt GraeberMatt HesterMatt HitchcockMatt TisdaleMatthew KerfootMCSEMDTMediaMessaging & Communicationmessaging and communicationMetadataMichael BlumenthalMichael WellsMicrosoft 365Microsoft AccessMicrosoft ExcelMicrosoft Exchange 2003Microsoft Exchange 2007Microsoft Exchange 2010Microsoft OfficeMicrosoft OutlookMicrosoft PowerPointMicrosoft VisioMicrosoft WordmigrationMike F RobbinsMike FalMike O'NeillMike PfeifferMike StiersMini Scripting GamesMobilemoduleModule BrowsermodulesmonitoringMonitoring and logsMSOMSmultimediaNano ServerNetwork Adapternetwork adaptersnetworkingNicholas CainNicolas BlankNiklas GoudeNorman DrewsNumbersObjectsODBCOfficeOffice 365Office 365 APIOffice 365 SitesOliver Lipkauoperating systemOracleother Directory ServicesOUsOut-GridViewOutputpacket tracespage filesparameterPartnerspasswordsPatrick MercierPaul GreeleyPaul HiginbothamPaulo MorgadoPer Pedersenperformanceperipherals and devicespermission and securitypermissionsPesterPhil Braniffpinvokepipelineplain-text logsPodcastportsports and slotspower managementPowerCLIPowerShellPowerShell 3powershell 3.0PowerShell 4PowerShell 4.0Powershell 5PowerShell 5.0PowerShell best practicesPowerShell GalleryPowerShell GetPowerTipPowerTip: Find Default Session Config Connection in PowerShell Summary: Find the default session configuration connection in Windows PowerShell. How can I determine what default session configurationPrintprint serversPrint Servers Print Queues and print jobsprinter ports drivers and devicesPrintersprintingProcessprocessesProcmonprofileprofilespromptProvidersPSDrivesPSGalleryPSGetPSProvidersPSReadLinequery completion serverqueuesRagnar HarperRaimund AndreeRavikanthRaymond Mitchellreceiving inputRecycle BinReferenceRegExregistryregular expressionsreliabilityremoteRemote EndpointremotingReportingReportsResource Guideresource ownershipretrieving inputRhys CampbellRich PrescottRichard DiphoornRichard SiddawayRob CampbellRobert RobeloRod ColledgeRODCRohn EdwardsRolf MasuchRPCRSATRSSRSS feedsRudolf VeselyrunningRunspaceSANSchedule Tasksscheduled taskscheduled tasksSchemaSCOM 2007 R2ScopeScott GeScript AnalyzerScript BrowserScript Centerscript signingScripterScripti9ng TechniquesScriptingScripting Games 2014Scripting Guy!Scripting Techniquescripting techniquesscripting templatesScripting WifeSean KearneySean McCownsearchSearchingsearching Active DirectorysecuritySelect-Stringsending emailsending mailSeriesSerkan VarogluServer ApplicationsServer-Side ManagementServer-Side updateserversservers WSUSService Packs and Hot Fixesservice packs and hotfixesservicessessionsSeth BrandesShadow CopyShane HoeyShane NelsonShannon Mashared folders and mapped drivesSharePointSharePoint 2010SharePoint OnlineShay Levyshell.applicationSherif TalaatShubert SomerSiegfried Jagottsites and subnetsSkyDriveSMTP MailSnapshot DebuggerSnippetsSoftwaresortingspecial folderssplattingSQLSQL 2012SQL ServerSQL Server 2008SQL Server 2012startup and shutdownStefan RothStefan StrangerStephane van GulickSteve JefferySteve MurawskiSteven MurawskistorageStreamsstringstring manipulationStringsSusan FerrellSusan HillSysinternalsSystem CenterSystem RestoreTaylor GibbTCP/IPTeamsTechEdTechEd 2014TechEd2012Teresa WilsonTerminal ServerTerri DonahueTest ExperienceTestingTexttext filesText manipulationTFSThe MAKThiyaguThomas LeeThomas RaynerThomas StringerTibor SoosTim Boltontime syncTime SynchronizationTimeSpanTimothy WarnerTips and TricksTobias WeltnerTodd KlindtTom MoserTom ShinderTome Tanasovskitop 20tracetracestranslationTrevor SullivantroubleshootingTypesupdatesUpgradeuser accountsuser groupsusersusing the Internetusing the webVariableVariablesVBVBScriptVBScript migrationVersionversion informationvideovideo and displayVideosVinay PamnaniVirtual Machinesvirtual serverVisual StudioVisual Studio 2017Visual Studio App CenterVisual Studio CodeVisual Studio for MacVisual Studio IDEVisual Studio Live ShareVisual Studio MarketplaceVisual Studio PreviewsVisual Studio SubscriptionsVisual Studio Tools for AIVisual Studio Tools for XamarinVMMWalid MoselhyWeb pages and HTAsWeb Serviceweb servicesWebinarWebsitesWeekend ScripterWei Hao LimWill AndersonWill MartinWill SteeleWilliam StanekWin32Windows 10Windows 8Windows 8.1Windows AzureWindows ExplorerWindows Management FrameworkWindows Media Player and audioWindows NTWindows PEWindows PowerShellWindows PowerShell 3.0Windows PowerShell 4.0Windows PowerShell 5Windows PowerShell 5.0Windows PowerShell ISEWindows PowerShllWindows Server 2012Windows Server 2012 R2Windows Server 2016Windows To GoWindows UpdateWindows VistaWindows Windows PowerShellWinNTWinRMWMIWordWord.ApplicationWorkflowWorkflowsWPFWPKwritingwriting scriptsWshShellWSUSXamarinXMLxpathYan PanYuri DiogenesZachary LoeberZune and other media devices ARCHIVE * February 2021 * January 2021 * September 2020 * December 2019 * November 2019 * October 2019 * September 2019 * August 2019 * July 2019 * November 2018 * September 2018 * August 2018 * July 2018 * June 2018 * May 2018 * April 2018 * March 2018 * February 2018 * January 2018 * December 2017 * November 2017 * October 2017 * August 2017 * July 2017 * February 2017 * January 2017 * December 2016 * November 2016 * October 2016 * September 2016 * August 2016 * July 2016 * June 2016 * May 2016 * April 2016 * March 2016 * February 2016 * January 2016 * December 2015 * November 2015 * October 2015 * September 2015 * August 2015 * July 2015 * June 2015 * May 2015 * April 2015 * March 2015 * February 2015 * January 2015 * December 2014 * November 2014 * October 2014 * September 2014 * August 2014 * July 2014 * June 2014 * May 2014 * April 2014 * March 2014 * February 2014 * January 2014 * December 2013 * November 2013 * October 2013 * September 2013 * August 2013 * July 2013 * June 2013 * May 2013 * April 2013 * March 2013 * February 2013 * January 2013 * December 2012 * November 2012 * October 2012 * September 2012 * August 2012 * July 2012 * June 2012 * May 2012 * April 2012 * March 2012 * February 2012 * January 2012 * December 2011 * November 2011 * October 2011 * September 2011 * August 2011 * July 2011 * June 2011 * May 2011 * April 2011 * March 2011 * February 2011 * January 2011 * December 2010 * November 2010 * October 2010 * September 2010 * August 2010 * July 2010 * June 2010 * May 2010 * April 2010 * March 2010 * February 2010 * January 2010 * December 2009 * November 2009 * October 2009 * September 2009 * August 2009 * July 2009 * June 2009 * May 2009 * April 2009 * March 2009 * February 2009 * January 2009 * December 2008 * November 2008 * October 2008 * September 2008 * August 2008 * July 2008 * June 2008 * May 2008 * April 2008 * March 2008 * February 2008 * January 2008 * December 2007 * November 2007 * October 2007 * September 2007 * August 2007 * July 2007 * June 2007 * May 2007 * April 2007 * March 2007 * February 2007 * January 2007 * December 2006 * November 2006 * October 2006 * September 2006 * August 2006 * July 2006 * June 2006 * May 2006 * April 2006 * March 2006 * February 2006 * January 2006 * December 2005 * November 2005 * October 2005 * September 2005 * August 2005 * July 2005 * June 2005 * May 2005 * April 2005 * March 2005 * February 2005 * January 2005 * December 2004 * November 2004 * October 2004 * September 2004 * August 2004 STAY INFORMED By subscribing you agree to our Terms of Use and Privacy Policy * * * CODE BLOCK × Paste your code snippet Cancel Ok Feedback What's new * Surface Laptop Studio 2 * Surface Laptop Go 3 * Surface Pro 9 * Surface Laptop 5 * Surface Studio 2+ * Copilot in Windows * Microsoft 365 * Windows 11 apps Microsoft Store * Account profile * Download Center * Microsoft Store support * Returns * Order tracking * Certified Refurbished * Microsoft Store Promise * Flexible Payments Education * Microsoft in education * Devices for education * Microsoft Teams for Education * Microsoft 365 Education * How to buy for your school * Educator training and development * Deals for students and parents * Azure for students Business * Microsoft Cloud * Microsoft Security * Dynamics 365 * Microsoft 365 * Microsoft Power Platform * Microsoft Teams * Microsoft Industry * Small Business Developer & IT * Azure * Developer Center * Documentation * Microsoft Learn * Microsoft Tech Community * Azure Marketplace * AppSource * Visual Studio Company * Careers * About Microsoft * Company news * Privacy at Microsoft * Investors * Diversity and inclusion * Accessibility * Sustainability Your Privacy Choices Opt-Out Icon Your Privacy Choices Your Privacy Choices Opt-Out Icon Your Privacy Choices * Sitemap * Contact Microsoft * Privacy * Manage cookies * Terms of use * Trademarks * Safety & eco * Recycling * About our ads * © Microsoft 2024