{"id":5561,"date":"2008-08-30T10:17:06","date_gmt":"2008-08-30T10:17:06","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/powershell\/2008\/08\/30\/powershell-vs-tsql-why-learn-powershell\/"},"modified":"2019-02-18T13:13:03","modified_gmt":"2019-02-18T20:13:03","slug":"powershell-vs-tsql-why-learn-powershell","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/powershell\/powershell-vs-tsql-why-learn-powershell\/","title":{"rendered":"PowerShell vs TSQL &#038; Why Learn PowerShell"},"content":{"rendered":"<p>Dan Jones has a great blog <a href=\"http:\/\/blogs.msdn.com\/dtjones\/archive\/2008\/08\/29\/powershell-vs-t-sql-or-why-did-we-add-powershell-support-in-sql2k8.aspx\">HERE<\/a> explaining why the SQL team decided to support PowerShell when they already had T-SQL.&#160; It originally started as an email thread responding to the question posed by an MVP.&#160; This was a great question to ask.&#160; In many ways, PowerShell is merely trying catch up to what the SQL team has been doing for years but do so in a way that everyone can participate.&#160; As you&#8217;ll see from Dan&#8217;s blog, we did it in a way that it made sense for the SQL team to embrace it.&#160; <\/p>\n<p>Let&#8217;s be clear about how what an awesome standard the SQL team set.&#160; <\/p>\n<ul>\n<li>They have a command line interface which is consistent, composable and provides incredible power.<\/li>\n<li>Their GUIs are layered on top of the CLI&#160; <\/li>\n<ul>\n<li>Did you think we invented that?&#160; Absolutely not &#8211; the superstars at SQL have been doing this for years!<\/li>\n<\/ul>\n<li>Their GUI TEACHES the CLI.&#160; When you are about to execute a task, you can view the script, you execute the script OR you can SCHEDULE the script to run at another time.<\/li>\n<ul>\n<li>DROOL DROOL DROOL.<\/li>\n<\/ul>\n<li>Their scripts can be TRANSACTED.<\/li>\n<ul>\n<li>We&#8217;re adding transaction support in V2 but it will only support those cmdlets\/providers which opt-in.&#160; To start, that just means the registry.<\/li>\n<\/ul>\n<\/ul>\n<p>SQL:&#160; Awesome product.&#160; Awesome Team.<\/p>\n<p>So given all that wonderful stuff, why would they embrace PowerShell?&#160; Dan&#8217;s blog has all the details so go give that a read.&#160; The thing I would like to highlight is their focus on the customer.&#160; Dan talked about customers increasingly using multiple products and the benefits of having a single way to script against them all.<\/p>\n<p>I&#8217;ve said it many times in my talks and and super passionate about it so I&#8217;ll repeat it here. <\/p>\n<blockquote>\n<p><strong>I know that learning PowerShell is an investment.<\/strong>&#160; <\/p>\n<\/blockquote>\n<p>I also know that customer&#8217;s hair is on fire and they don&#8217;t want to invest in learning new languages.&#160; Trust me &#8211; I understand that deeply and we struggled with whether PowerShell needed to be a new language.&#160; In the end, we decided that we could not deliver the right customer value without creating a new language but we did not do so lightly.&#160; <\/p>\n<p>Anyway &#8211; the commitment I made was to that I would do everything in my power to make that investment a GREAT investment with high payback.&#160; Anytime I ask you to learn a concept, I&#8217;m going to use that concept over and over and over again so that you get a great ROI.&#160; That is why we have 1 parser.&#160; You learn our command line syntax and ALL PS commands use it.&#160; That is why we are SUPER HARD CORE about the verb naming.&#160; You learn our verbs and then you&#8217;ll be able to use them again and again and again (at the end of the day &#8211; we can&#8217;t &quot;control&quot; this but we do everything in our power to persuade teams to follow the standard).&#160; That is why we have COMMAND FAMILIES where we define .NET interfaces for teams to implement and then we provide the consistent commands to go against multiple plugins.&#160; In V1 we did that for navigation (e.g. filesystem, registry, cert store, etc) and in V2 we are extending that to EVENTS, TRANSACTIONS, and JOBs.&#160; <\/p>\n<p>There are dozens more examples but the one I&#8217;ll close on is the Common Engineering Criteria (CEC) which&#160; requires all Microsoft Server products to ship PowerShell cmdlets going forward.&#160; What this means is that your investment in PowerShell will be usable for ALL Microsoft Server Products.&#160; If you&#8217;ve learned PowerShell from using Exchange, you are going to be able to use those skills to work with SQL and IIS and System Center and so on and so on.&#160; They&#8217;ll all have the same syntax, the same naming, the same common semantics (like -WHATIF) and you&#8217;ll have a common language which can script across the products.<\/p>\n<p><strong>If you work with Microsoft Server products, you are going to be a PowerShell user.<\/strong><\/p>\n<p>Now with that concept fully in focus &#8211; if you don&#8217;t like something in PowerShell &#8211; you need to tell us.&#160; We have a CTP of V2 out there and this is your opportunity to give us feedback and make PowerShell the best investment you&#8217;ve ever made.<\/p>\n<p>Cheers!<\/p>\n<p>Jeffrey Snover [MSFT]   <br \/>Windows Management Partner Architect    <br \/>Visit the Windows PowerShell Team blog at:&#160;&#160;&#160; <a href=\"http:\/\/blogs.msdn.com\/PowerShell\">http:\/\/blogs.msdn.com\/PowerShell<\/a>    <br \/>Visit the Windows PowerShell ScriptCenter at:&#160; <a href=\"http:\/\/www.microsoft.com\/technet\/scriptcenter\/hubs\/msh.mspx\">http:\/\/www.microsoft.com\/technet\/scriptcenter\/hubs\/msh.mspx<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dan Jones has a great blog HERE explaining why the SQL team decided to support PowerShell when they already had T-SQL.&#160; It originally started as an email thread responding to the question posed by an MVP.&#160; This was a great question to ask.&#160; In many ways, PowerShell is merely trying catch up to what the [&hellip;]<\/p>\n","protected":false},"author":600,"featured_media":13641,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-5561","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powershell"],"acf":[],"blog_post_summary":"<p>Dan Jones has a great blog HERE explaining why the SQL team decided to support PowerShell when they already had T-SQL.&#160; It originally started as an email thread responding to the question posed by an MVP.&#160; This was a great question to ask.&#160; In many ways, PowerShell is merely trying catch up to what the [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/5561","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/users\/600"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/comments?post=5561"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/5561\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/media\/13641"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/media?parent=5561"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/categories?post=5561"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/tags?post=5561"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}