{"id":993,"date":"2012-05-29T09:55:00","date_gmt":"2012-05-29T09:55:00","guid":{"rendered":""},"modified":"2025-04-30T11:47:47","modified_gmt":"2025-04-30T18:47:47","slug":"windows-server-2012-powershell-3-0-and-devops-part-1","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/","title":{"rendered":"Windows Server 2012, PowerShell 3.0 and DevOps, Part 1\u2026"},"content":{"rendered":"

In the first of a two part series, I provide some background information about PowerShell and DevOps.\u00a0 In the second post, I\u2019ll provide you a bunch of specifics.\u00a0 PowerShell 3.0, like Windows Server 2012, has a ton of new features and enhancements so I\u2019ll only scratch the surface<\/em><\/p>\n

The first time I heard DevOps was a podcast describing the 2009 Velocity conference.\u00a0 While most of the industry was struggling to deploy releases a few times a year, John Allspaw and Paul Hammond rocked the house with the talk \u201c10 Deploys Per Day: Dev And Ops Cooperation at Flickr<\/a>\u201d.\u00a0 They made the case for delivering business results through changes in culture and tools, and gave birth to a new term: DevOps.\u00a0 The problem is that developers think they are responsible for delivering features and operators are responsible for keeping the site running.\u00a0 The gap between developers and operators leads to finger-pointing when things go wrong.\u00a0 Successful business requires an IT culture of joint accountability and mutual respect: developers thinking about the needs and concerns of operators and operators thinking about the needs and concerns of developers.<\/p>\n

Their talk described how businesses required rapid change but that change is the root cause of most site-down events. Shunning the traditional \u201cavoid change\u201d approach, they advocated minimizing risk by making change safe through automation.\u00a0 This is the job of DevOps \u2013 safe change.\u00a0 This was the Taguchi<\/a> quality approach applied to IT operations.\u00a0 Taguchi observed that the root cause of poor quality was variation.\u00a0 The solution was to first figure out how to do something repeatably.\u00a0 Once you could do that, then you can make small modifications in the process to see whether they make things better or worse.\u00a0 Back out the changes that make things worse. Keep doing the things that make things better.\u00a0 The key is repeatability.\u00a0 Repeatability allows experimentation which drives improvement.\u00a0 We get repeatability in IT operations through automation.<\/p>\n

We envisioned a distributed automation engine with a scripting language which would be used by beginner operators and sophisticated developers.\u00a0\u00a0 PowerShell\u2019s design was driven by the same thinking and values that drove the birth of DevOps:<\/p>\n

    \n
  1. Focus on the business<\/li>\n
  2. Make change safe through automation<\/li>\n
  3. Bridge the gap between developers and operators<\/li>\n<\/ol>\n

    Focus on the business<\/strong><\/span>
    \nPowerShell has always focused on people using computers in a business context.\u00a0 PowerShell needed to be consistent, safe,<\/strong> and productive<\/strong>.\u00a0 Much has been made of the similarities between PowerShell and UNIX but in this regard, our ties are much closer to VMS\/DCL and AS400\/CL.<\/p>\n

    Consistent:<\/strong>\u00a0 Operators and developers don\u2019t have a lot of time to learn new things.\u00a0 A consistent experience lets them to invest once in a set of skills and then use those skills over and over again.\u00a0 PowerShell uses a single common parser for all commands and performs common parameter validation delivering absolute consistency in command line syntax.\u00a0 PowerShell cmdlets are designed in a way that ubiquitous parameters can provide consistent functions to all commands (e.g.\u00a0 \u2013ErrorAction, \u2013ErrorVariable, \u2013OutputVariable, etc)<\/p>\n

    Safe:<\/strong>\u00a0 An Operator once told me that occasionally he was about to do something and realized that if he got it wrong, he would be fired.\u00a0 In PowerShell, if you ever execute a cmdlet which has a side-effect on the system, you can always type \u2013WhatIf to test what would happen if you go through with the operation.\u00a0 We also support \u2013Confirm, -Verbose and \u2013Debug.\u00a0 Despite these safeguards, things can go wrong and when they do, PowerShell spends a lot of effort to speed up the process of diagnosing and resolving the error.<\/p>\n

    Productive:<\/strong>\u00a0 Every aspect of PowerShell\u2019s design maximizes the power of users (ergo the name).\u00a0 PowerShell makes it easy to perform bulk operations across a large number of machines.\u00a0 PowerShell also makes it easy to have productive engagements between your operators and developers because it allows them to speak a common language and to help each other with their scripts.<\/p>\n

    Make change safe through automation<\/strong><\/span>
    \nThere has been a lot of discussion about whether PowerShell is a .Net language, a scripting language, or an interactive shell.\u00a0 PowerShell is a distributed automation engine with<\/strong> a scripting language and interactive shell(s).\u00a0\u00a0 Interactive shells and a scripting language are critical components but the focus has always been on automation through scripting.\u00a0 Automation is the process of reducing and\/or eliminating operations performed by a human.\u00a0 A script documents what is going to happen.\u00a0 People can review a script and you can modify it based upon their feedback.\u00a0 You can test the script, observe the outcome, modify the script and if modification is good, keep it and it if is bad back it out. In other words, scripting provides the repeatability required to apply the Taguichi method to IT operations.\u00a0 Once you have an automated process, you can safely apply it over and over again.\u00a0 These processes can now be performed reliabily by lower skilled admins.\u00a0 These steps aren\u2019t possible when you use traditional GUI admin tools.<\/p>\n

    Bridge the gap between developers and operators<\/span><\/strong>
    \nOur goal has always been to deliver a single tool which could span the needs of operators doing ad hoc operations, simple scripting, formal scripting, advanced scripting and developers doing systems-level programming.
    \nPowerShell spends a ton of effort trying to project the world in terms of high level task-oriented abstractions with uniform syntax and semantics.\u00a0 We call these cmdlets. And this is what operators want to efficiently and effectively manage systems.\u00a0 In order to copy a file using APIs, you would do this:<\/p>\n

    \"<\/a><\/p>\n

    Have you ever wondered why PowerShell uses curly braces {} (and other C constructs) instead of BEGIN\/END as other scripting languages do?\u00a0 We did that because we wanted to make it easier to adopt by developers of other C-based programming languages: C++, Objective C, Java, JavaScript, Perl, PHP, etc.\u00a0 We did some testing and determined that operators were able to readily adapt to this syntax.\u00a0 We also wanted to provide a smooth glide path between PowerShell and C# .\u00a0 This provides career mobility for operators who might want to transition to being a developer.<\/p>\n

    Most importantly, we wanted to develop a tool which could be used by BOTH operators and developers to bridge the gap between the groups and allow them to create common scripts, learn from each other and work together.<\/p>\n

    Windows Server 2012 and PowerShell 3.0 are excellent DevOps tools<\/strong><\/span>
    \nDevOps is a new term and there is some disagreement about what it entails but at the heart it is all about making change safe through automation and bridging the gap between operators and developers.\u00a0 There is a lot to do in this area but Windows Server 2012 and PowerShell 3.0 make excellent progress towards accomplishing those goals.\u00a0 PowerShell won\u2019t be the only tool in your DevOps toolbox but it should be in every DevOps toolbox.\u00a0
    Download the beta<\/a> today and find out for yourself.<\/p>\n","protected":false},"excerpt":{"rendered":"

    In the first of a two part series, I provide some background information about PowerShell and DevOps.\u00a0 In the second post, I\u2019ll provide you a bunch of specifics.\u00a0 PowerShell 3.<\/p>\n","protected":false},"author":742,"featured_media":20662,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"msxcm_post_with_no_image":false,"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","footnotes":""},"post_tag":[32,23,386],"product":[],"content-type":[964],"solution":[952],"coauthors":[943],"class_list":["post-993","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-powershell","tag-windows-server","tag-windows-server-2012","content-type-updates","solution-server-management","review-flag-1593580427-982","review-flag-1710328007-107","review-flag-1593580418-473","review-flag-3-1593580441-66","review-flag-3-1710328007-736","review-flag-alway-1593580309-789","review-flag-alway-1710328006-502","review-flag-and-o-1593580422-808","review-flag-and-o-1710328007-260","review-flag-new-1593580246-692","review-flag-new-1710328005-681"],"yoast_head":"\nWindows Server 2012, PowerShell 3.0 and DevOps, Part 1\u2026 | Microsoft Windows Server Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Windows Server 2012, PowerShell 3.0 and DevOps, Part 1\u2026 | Microsoft Windows Server Blog\" \/>\n<meta property=\"og:description\" content=\"In the first of a two part series, I provide some background information about PowerShell and DevOps.\u00a0 In the second post, I\u2019ll provide you a bunch of specifics.\u00a0 PowerShell 3.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Windows Server Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/WindowsServer\" \/>\n<meta property=\"article:published_time\" content=\"2012-05-29T09:55:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-30T18:47:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Smiling-person-working-on-a-laptop-3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1170\" \/>\n\t<meta property=\"og:image:height\" content=\"640\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jeffrey Snover\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@WindowsServer\" \/>\n<meta name=\"twitter:site\" content=\"@WindowsServer\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeffrey Snover\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 min read\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/\"},\"author\":[{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/author\/jeffrey-snover-windows-server\/\",\"@type\":\"Person\",\"@name\":\"Jeffrey Snover\"}],\"headline\":\"Windows Server 2012, PowerShell 3.0 and DevOps, Part 1\u2026\",\"datePublished\":\"2012-05-29T09:55:00+00:00\",\"dateModified\":\"2025-04-30T18:47:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/\"},\"wordCount\":1147,\"commentCount\":11,\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Smiling-person-working-on-a-laptop-3.webp\",\"keywords\":[\"Powershell\",\"Windows Server\",\"Windows Server 2012\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/\",\"name\":\"Windows Server 2012, PowerShell 3.0 and DevOps, Part 1\u2026 | Microsoft Windows Server Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Smiling-person-working-on-a-laptop-3.webp\",\"datePublished\":\"2012-05-29T09:55:00+00:00\",\"dateModified\":\"2025-04-30T18:47:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/#primaryimage\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Smiling-person-working-on-a-laptop-3.webp\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Smiling-person-working-on-a-laptop-3.webp\",\"width\":1170,\"height\":640,\"caption\":\"a woman sitting at a table using a laptop\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Windows Server 2012, PowerShell 3.0 and DevOps, Part 1\u2026\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#website\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/\",\"name\":\"Microsoft Windows Server Blog\",\"description\":\"Your Guide to the Latest Windows Server Product Information\",\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#organization\",\"name\":\"Microsoft Windows Server Blog\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"width\":1,\"height\":1,\"caption\":\"Microsoft Windows Server Blog\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/WindowsServer\",\"https:\/\/x.com\/WindowsServer\",\"https:\/\/www.linkedin.com\/showcase\/microsoft-cloud-platform\/\",\"https:\/\/www.youtube.com\/user\/MSCloudOS\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Windows Server 2012, PowerShell 3.0 and DevOps, Part 1\u2026 | Microsoft Windows Server Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/","og_locale":"en_US","og_type":"article","og_title":"Windows Server 2012, PowerShell 3.0 and DevOps, Part 1\u2026 | Microsoft Windows Server Blog","og_description":"In the first of a two part series, I provide some background information about PowerShell and DevOps.\u00a0 In the second post, I\u2019ll provide you a bunch of specifics.\u00a0 PowerShell 3.","og_url":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/","og_site_name":"Microsoft Windows Server Blog","article_publisher":"https:\/\/www.facebook.com\/WindowsServer","article_published_time":"2012-05-29T09:55:00+00:00","article_modified_time":"2025-04-30T18:47:47+00:00","og_image":[{"width":1170,"height":640,"url":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Smiling-person-working-on-a-laptop-3.png","type":"image\/png"}],"author":"Jeffrey Snover","twitter_card":"summary_large_image","twitter_creator":"@WindowsServer","twitter_site":"@WindowsServer","twitter_misc":{"Written by":"Jeffrey Snover","Est. reading time":"5 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/#article","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/"},"author":[{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/author\/jeffrey-snover-windows-server\/","@type":"Person","@name":"Jeffrey Snover"}],"headline":"Windows Server 2012, PowerShell 3.0 and DevOps, Part 1\u2026","datePublished":"2012-05-29T09:55:00+00:00","dateModified":"2025-04-30T18:47:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/"},"wordCount":1147,"commentCount":11,"publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#organization"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Smiling-person-working-on-a-laptop-3.webp","keywords":["Powershell","Windows Server","Windows Server 2012"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/","url":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/","name":"Windows Server 2012, PowerShell 3.0 and DevOps, Part 1\u2026 | Microsoft Windows Server Blog","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/#primaryimage"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Smiling-person-working-on-a-laptop-3.webp","datePublished":"2012-05-29T09:55:00+00:00","dateModified":"2025-04-30T18:47:47+00:00","breadcrumb":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/#primaryimage","url":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Smiling-person-working-on-a-laptop-3.webp","contentUrl":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Smiling-person-working-on-a-laptop-3.webp","width":1170,"height":640,"caption":"a woman sitting at a table using a laptop"},{"@type":"BreadcrumbList","@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2012\/05\/29\/windows-server-2012-powershell-3-0-and-devops-part-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/"},{"@type":"ListItem","position":2,"name":"Windows Server 2012, PowerShell 3.0 and DevOps, Part 1\u2026"}]},{"@type":"WebSite","@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#website","url":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/","name":"Microsoft Windows Server Blog","description":"Your Guide to the Latest Windows Server Product Information","publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#organization","name":"Microsoft Windows Server Blog","url":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","contentUrl":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","width":1,"height":1,"caption":"Microsoft Windows Server Blog"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/WindowsServer","https:\/\/x.com\/WindowsServer","https:\/\/www.linkedin.com\/showcase\/microsoft-cloud-platform\/","https:\/\/www.youtube.com\/user\/MSCloudOS"]}]}},"word_count":1141,"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Windows Server Blog","distributor_original_site_url":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/posts\/993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/users\/742"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/comments?post=993"}],"version-history":[{"count":1,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/posts\/993\/revisions"}],"predecessor-version":[{"id":21146,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/posts\/993\/revisions\/21146"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/media\/20662"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/media?parent=993"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/post_tag?post=993"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/product?post=993"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/content-type?post=993"},{"taxonomy":"solution","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/solution?post=993"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/coauthors?post=993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}