{"id":53723,"date":"2009-05-19T15:24:00","date_gmt":"2009-05-19T15:24:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/heyscriptingguy\/2009\/05\/19\/hey-scripting-guy-how-can-i-use-wmi-to-add-a-printer-connection-by-using-windows-powershell\/"},"modified":"2009-05-19T15:24:00","modified_gmt":"2009-05-19T15:24:00","slug":"hey-scripting-guy-how-can-i-use-wmi-to-add-a-printer-connection-by-using-windows-powershell","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/scripting\/hey-scripting-guy-how-can-i-use-wmi-to-add-a-printer-connection-by-using-windows-powershell\/","title":{"rendered":"Hey, Scripting Guy! How Can I Use WMI to Add a Printer Connection by Using Windows PowerShell?"},"content":{"rendered":"<h2><img decoding=\"async\" class=\"nearGraphic\" title=\"Hey, Scripting Guy! Question\" border=\"0\" alt=\"Hey, Scripting Guy! Question\" align=\"left\" width=\"34\" height=\"34\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/q-for-powertip.jpg\"> <\/h2>\n<p>Hey, Scripting Guy! I am trying to determine how to use WMI to add a printer connection by using Windows PowerShell. I have found <a target=\"_blank\" href=\"http:\/\/www.microsoft.com\/technet\/scriptcenter\/scripts\/printing\/client\/prclvb01.mspx\">this script<\/a>, but it uses VBScript and not WMI. This means that it is not very close at all, I am afraid. Do you have a WMI script I can use?<\/p>\n<p>&#8211; CM<\/p>\n<p><img decoding=\"async\" border=\"0\" alt=\"Spacer\" width=\"5\" height=\"5\" src=\"https:\/\/devblogs.microsoft.com\/scripting\/wp-content\/uploads\/sites\/29\/2019\/05\/spacer.gif\"><img decoding=\"async\" class=\"nearGraphic\" title=\"Hey, Scripting Guy! Answer\" border=\"0\" alt=\"Hey, Scripting Guy! Answer\" align=\"left\" width=\"34\" height=\"34\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/a-for-powertip.jpg\"> <\/p>\n<p>Hi CM,<\/p>\n<p>Ed looked around, but he did not find anything. Therefore, he dug out his script editor, dusted off his keyboard, and got to work. He did not write a single script last week while at Tech\u00b7Ed. The <a target=\"_blank\" href=\"http:\/\/www.sapien.com\/\">Sapien<\/a> dudes (one of our sponsors for the Summer Scripting Games) even gave him a flying script monkey. (Incidentally, if it were not for the quick reflexes of Scripting Guy Editor Craig, Ed&#8217;s script monkey would have been history. Someone nabbed it from our booth, but Craig politely retrieved it from the nabber.) Ed claims he was too busy talking to people at the Scripting Guys booth and being driven crazy by the <a target=\"_blank\" href=\"http:\/\/technet.microsoft.com\/en-us\/default.aspx\">TechNet Plus<\/a> slot machine to do any writing last week. It\u2019s true. We swear.<\/p>\n<table id=\"EED\" class=\"dataTable\" cellspacing=\"0\" cellpadding=\"0\">\n<thead><\/thead>\n<tbody>\n<tr class=\"record\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">This week we will examine printing. There are lots of resources related to printing on the TechNet Script Center. There is a collection of <a target=\"_blank\" href=\"http:\/\/www.microsoft.com\/technet\/scriptcenter\/resources\/qanda\/printing.mspx\">Hey, Scripting Guy! articles<\/a> that lists 24 articles relates to both server-side and client-side printing. We have almost 50 scripts in the <a target=\"_blank\" href=\"http:\/\/www.microsoft.com\/technet\/scriptcenter\/scripts\/printing\/default.mspx\">printer section<\/a> of the <a target=\"_blank\" href=\"http:\/\/www.microsoft.com\/technet\/scriptcenter\/scripts\/default.mspx\">Script Center Script Repository<\/a>. There are also almost 50 scripts in the <a target=\"_blank\" href=\"http:\/\/www.microsoft.com\/technet\/scriptcenter\/csc\/scripts\/print\/default.mspx\">printer section<\/a> of the Community-Submitted Scripts Center. We have some good technical information about printing in the <a target=\"_blank\" href=\"http:\/\/www.microsoft.com\/technet\/scriptcenter\/guide\/sas_prn_overview.mspx\">Scripting Guide<\/a>. All those resources are in VBScript. To use them in Windows PowerShell, you would have to translate the scripts into PowerShell. The Microsoft Press book, <a target=\"_blank\" href=\"http:\/\/www.microsoft.com\/MSPress\/books\/authors\/auth9541.aspx\">Windows PowerShell Scripting Guide<\/a>, has a whole chapter devoted to printing.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"dataTableBottomMargin\"><\/div>\n<p>CM, here is Ed&#8217;s <b>ListSharedPrintersAddPrintConnection.ps1<\/b> script. We hope that you will enjoy it, and use it in good health. If you want to know how it works, read on. Otherwise, we will see you tomorrow.<\/p>\n<p><b>ListSharedPrintersAddPrintConnection.ps1<\/b><\/p>\n<pre class=\"codeSample\">Param($computer, $printerPath, [switch]$list)Function Add-PrinterConnection([string]$printerPath){ Write-Host -foregroundcolor cyan \"Adding printer $printerpath\"  $printClass = [wmiclass]\"win32_printer\"  $printClass.AddPrinterConnection($printerPath)} #end Add-PrinterConnectionFunction Get-Printer($computer){ Get-WmiObject -class Win32_Printer -computer $computer} #end Get-PrinterFunction Format-Printer($printObject){ Write-Host -foregroundcolor cyan \"Shared printers on $computer\" $printObject |  Where-Object { $_.sharename } | Format-Table -property sharename, location, comment -autosize -wrap} #end Format-PrinterFunction Get-SuccessCode($code){ if($code.ReturnValue -eq 0)  { Write-Host -foregroundcolor green \"Add Printer connection suceeded!\" } Else  { Write-Host -foregroundcolor red \"Add Printer connection failed with $($code.returnvalue)\" }} #end get-successcode# *** Entry Point to Script ***if($list) { Format-Printer(Get-Printer($computer)) ; exit }if($printerPath)   { Get-SuccessCode -code (Add-PrinterConnection($printerPath))  ; exit }<\/pre>\n<p>The <b>ListSharedPrintersAddPrintConnection.ps1 <\/b>script will add to your computer a printer connection to a shared printer. Printer connections are seen under <b>Printers<\/b> in Control Panel:<\/p>\n<p><img decoding=\"async\" border=\"0\" alt=\"Image of the Printers folder in Control Panel\" width=\"500\" height=\"317\" src=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/qanda\/hsg\/2009\/may\/hey0519\/hsg-05-19-09-01.jpg\"> <\/p>\n<p>&nbsp;<\/p>\n<p>The first thing that you have to do in the <b>ListSharedPrintersAddPrintConnection.ps1<\/b> script is use the <b>param<\/b> statement to create three command-line parameters. The first parameter is the <b>computer<\/b> parameter. This is used to hold the name of the computer that will be queried for the list of shared printers. The second parameter is the <b>printerpath<\/b> parameter that is used to specify the name of the printer that will be added. The last parameter is a <b>switched<\/b> parameter list, which is used to provide a list of all the shared printers from the destination computer. The <b>param<\/b> statement is seen here:<\/p>\n<pre class=\"codeSample\">Param($computer, $printerPath, [switch]$list)<\/pre>\n<p>The syntax to call the script and cause it to list shared printers is seen here:<\/p>\n<pre class=\"codeSample\">PS C:\\ .\\ListSharedPrintersAddPrintConnection.ps1 \u2013computer Berlin -list<\/pre>\n<p>When the script is run with the <b>list<\/b> switched parameter, this output is seen:<\/p>\n<p><img decoding=\"async\" border=\"0\" alt=\"Image of the output from the script run with the list switched parameter\" width=\"500\" height=\"185\" src=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/qanda\/hsg\/2009\/may\/hey0519\/hsg-05-19-09-02.jpg\"> <\/p>\n<p>&nbsp;<\/p>\n<p>The first function to be created is the <b>Add-PrinterConnection<\/b> function. The <b>Add-PrinterConnection<\/b> function accepts a single parameter\u2014the UNC path of the shared printer to be added. When the <b>Add-PrinterConnection<\/b> function is called, the first thing that happens is the <b>Write-Host<\/b> cmdlet is used to display a message in cyan that states the printer is being added. This is seen here:<\/p>\n<pre class=\"codeSample\">Function Add-PrinterConnection([string]$printerPath){ Write-Host -foregroundcolor cyan \"Adding printer $printerpath\"<\/pre>\n<p>The <b>AddPrinterConnection<\/b> method from the <b>Win32_Printer<\/b> WMI class is a static method. This means that it must be called from the management class itself, and not from an instance of the class. To do this, you use the <b>[wmiclass]<\/b> type accelerator to return the <b>Win32_Printer<\/b> class. When you pipe the management object to the <b>Get-Member<\/b> cmdlet, you are presented with a listing of methods and properties similar to the one in Table 1.<\/p>\n<table id=\"E1G\" class=\"dataTable\" cellspacing=\"0\" cellpadding=\"0\">\n<thead>\n<tr>\n<td class=\"tableHeader\" colspan=\"2\">Table 1 Members of the Win32_Printer management class<\/td>\n<\/tr>\n<tr class=\"stdHeader\" valign=\"top\">\n<td id=\"colE4G\">Name<\/td>\n<td id=\"colEBH\">MemberType<\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr class=\"record\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">Name<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">AliasProperty<\/p>\n<\/td>\n<\/tr>\n<tr class=\"evenRecord\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">AddPrinterConnection<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">Method<\/p>\n<\/td>\n<\/tr>\n<tr class=\"record\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">__CLASS<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">Property<\/p>\n<\/td>\n<\/tr>\n<tr class=\"evenRecord\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">__DERIVATION<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">Property<\/p>\n<\/td>\n<\/tr>\n<tr class=\"record\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">__DYNASTY<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">Property<\/p>\n<\/td>\n<\/tr>\n<tr class=\"evenRecord\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">__GENUS<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">Property<\/p>\n<\/td>\n<\/tr>\n<tr class=\"record\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">__NAMESPACE<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">Property<\/p>\n<\/td>\n<\/tr>\n<tr class=\"evenRecord\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">__PATH<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">Property<\/p>\n<\/td>\n<\/tr>\n<tr class=\"record\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">__PROPERTY_COUNT<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">Property<\/p>\n<\/td>\n<\/tr>\n<tr class=\"evenRecord\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">__RELPATH<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">Property<\/p>\n<\/td>\n<\/tr>\n<tr class=\"record\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">__SERVER<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">Property<\/p>\n<\/td>\n<\/tr>\n<tr class=\"evenRecord\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">__SUPERCLASS<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">Property<\/p>\n<\/td>\n<\/tr>\n<tr class=\"record\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">ConvertFromDateTime<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">ScriptMethod<\/p>\n<\/td>\n<\/tr>\n<tr class=\"evenRecord\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">ConvertToDateTime<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">ScriptMethod<\/p>\n<\/td>\n<\/tr>\n<tr class=\"record\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">CreateInstance<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">ScriptMethod<\/p>\n<\/td>\n<\/tr>\n<tr class=\"evenRecord\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">Delete<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">ScriptMethod<\/p>\n<\/td>\n<\/tr>\n<tr class=\"record\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">GetRelatedClasses<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">ScriptMethod<\/p>\n<\/td>\n<\/tr>\n<tr class=\"evenRecord\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">GetRelationshipClasses<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">ScriptMethod<\/p>\n<\/td>\n<\/tr>\n<tr class=\"record\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">GetType<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">ScriptMethod<\/p>\n<\/td>\n<\/tr>\n<tr class=\"evenRecord\" valign=\"top\">\n<td>\n<p class=\"lastInCell\">Put<\/p>\n<\/td>\n<td>\n<p class=\"lastInCell\">ScriptMethod<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"dataTableBottomMargin\"><\/div>\n<p>The <b>Win32_Printer<\/b> management class is stored in the <b>$printClass<\/b> variable, and the <b>AddPrinterConnection<\/b> method is called from that object. The <b>AddPrinterConnection<\/b> takes a string with the path of the shared printer. This is seen here:<\/p>\n<pre class=\"codeSample\">$printClass = [wmiclass]\"win32_printer\"  $printClass.AddPrinterConnection($printerPath)} #end Add-PrinterConnection<\/pre>\n<p>The next function that is created is the <b>Get-Printer<\/b> function. This function takes a single parameter\u2014the name of the computer. The <b>Get-WmiObject<\/b> WMI class is used to return a <b>Win32_Printer<\/b> management object. This is seen here:<\/p>\n<pre class=\"codeSample\">Function Get-Printer($computer){ Get-WmiObject -class Win32_Printer -computer $computer} #end Get-Printer<\/pre>\n<p>Next the <b>Format-Printer <\/b>function is created. This function accepts the <b>Win32_Printer<\/b> management object that was created in the <b>Get-Printer<\/b> function. It is used to format the output that is displayed in the Windows PowerShell console. The first thing the <b>Format-Printer<\/b> function does is use the <b>Write-Host<\/b> cmdlet to display a message in cyan that states the shared printers on the computer name that is stored in the <b>$computer<\/b> variable. The management object that is stored in the <b>$printObject<\/b> variable is pipelined to the <b>Where-Object<\/b> cmdlet. The <b>Where-Object<\/b> cmdlet examines the properties of each printer object in the <b>$printObject<\/b> variable to determine whether a value for the <b>sharename<\/b> property is present. If it is, the instance of the printer object is sent along the pipeline to the <b>Format-Table<\/b> cmdlet. If there is no <b>sharename<\/b> property that is defined for the printer, it means that the printer is not shared, and the instance of the object will therefore be dropped. As soon as at the <b>Format-Table<\/b> cmdlet, the <b>sharename<\/b>, <b>location<\/b>, and <b>comment<\/b> properties are displayed. The <b>autosize<\/b> and <b>wrap<\/b> switches are used to tighten up the display. The <b>Format-Printer<\/b> function is seen here:<\/p>\n<pre class=\"codeSample\">Function Format-Printer($printObject){ Write-Host -foregroundcolor cyan \"Shared printers on $computer\" $printObject |  Where-Object { $_.sharename } | Format-Table -property sharename, location, comment -autosize -wrap} #end Format-Printer<\/pre>\n<p>Next the return code from calling the <b>AddPrinterConnection<\/b> method must be evaluated. To do this, you use the <b>Get-SuccessCode<\/b> function. The return value is passed to the <b>Get-SuccessCode<\/b> function through the <b>code<\/b> parameter. If the <b>ReturnValue<\/b> property is equal to 0, no errors occurred, and a message is displayed in green that \u201cAdd Printer connection succeeded!\u201d If the return value is anything else, the method call was not successful, and a message in red is displayed that states the add printer connection failed along with the error code that was generated. The <b>Get-SuccessCode<\/b> function is seen here:<\/p>\n<pre class=\"codeSample\">Function Get-SuccessCode($code){ if($code.ReturnValue -eq 0)  { Write-Host -foregroundcolor green \"Add Printer connection suceeded!\" } Else  { Write-Host -foregroundcolor red \"Add Printer connection failed with $($code.returnvalue)\" } #end get-successcode<\/pre>\n<p>When the script successfully adds a new printer connection, the confirmation message from the <b>Add-PrinterConnection<\/b> function is displayed, in addition to the success message from the <b>Get-SucccessCode<\/b> function:<\/p>\n<p><img decoding=\"async\" border=\"0\" alt=\"Image of the success confirmation message\" width=\"500\" height=\"95\" src=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/qanda\/hsg\/2009\/may\/hey0519\/hsg-05-19-09-03.jpg\"> <\/p>\n<p>&nbsp;<\/p>\n<p>It is time to examine the entry point to the script. If the script was started with the <b>list<\/b> switched parameter, the <b>Get-Printer<\/b> function is called. The <b>Get-Printer<\/b> function receives the name of the computer to search for printer objects. The resulting <b>Win32_Printer <\/b>management object is passed to the <b>Format-Printer<\/b> function where the display will be cleaned up, formatted, and displayed on the Windows PowerShell console. The script then exits. This is seen here:<\/p>\n<pre class=\"codeSample\">if($list) { Format-Printer(Get-Printer($computer)) ; exit }<\/pre>\n<p>If the <b>printerPath<\/b> parameter is passed to the script when it runs, the <b>Add-PrinterConnection<\/b> function is called. When the <b>Add-PrinterConnection<\/b> function is called, it is passed the string that is contained in the <b>$printerPath<\/b> variable. The return value from calling the <b>Add-PrinterConnection<\/b> function is passed to the <b>Get-SuccessCode<\/b> function, which is used to determine whether the printer connection was added successfully. The script then exits. This is seen here:<\/p>\n<pre class=\"codeSample\">if($printerPath)   { Get-SuccessCode -code (Add-PrinterConnection($printerPath))  ; exit }<\/pre>\n<p>When the script is called by using the <b>printerPath<\/b> parameter, the script adds the printer connection and evaluates the status code. The command line to cause all this is seen here:<\/p>\n<pre class=\"codeSample\">PS C:\\ .\\ListSharedPrintersAddPrintConnection.ps1 \u2013printerPath \\\\berlin\\testprinter<\/pre>\n<p>As soon as the script has successfully added the new printer connection, the new printer appears under <b>Printers<\/b> in Control Panel:<\/p>\n<p><img decoding=\"async\" border=\"0\" alt=\"Image of the newly added printer under Printers in Control Panel\" width=\"500\" height=\"317\" src=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/qanda\/hsg\/2009\/may\/hey0519\/hsg-05-19-09-04.jpg\"> <\/p>\n<p>&nbsp;<\/p>\n<p>Well, CM, that is about all we have time for today. We hope that you enjoyed this look at using WMI to add a new printer connection. Join us tomorrow as Printing Week continues. If you have not already done this, mark your calendars because the <a target=\"_blank\" href=\"http:\/\/www.microsoft.com\/technet\/scriptcenter\/funzone\/games\/games09\/announcement.mspx\">2009 Scripting Games start June 15, 2009<\/a>. However, the first scripting game event will be revealed on Monday June 8, 2009\u2014one week before the start of the Scripting Games. This year&#8217;s theme is the decathlon. It will be a blast! Follow us on <a target=\"_blank\" href=\"https:\/\/twitter.com\/scriptingguys\/\">Twitter<\/a> for all the latest information about the Scripting Games as well as everything related to the Script Center.<\/p>\n<p>&nbsp;<\/p>\n<p><b>Ed Wilson and Craig Liebendorfer, Scripting Guys<\/b><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hey, Scripting Guy! I am trying to determine how to use WMI to add a printer connection by using Windows PowerShell. I have found this script, but it uses VBScript and not WMI. This means that it is not very close at all, I am afraid. Do you have a WMI script I can use? [&hellip;]<\/p>\n","protected":false},"author":595,"featured_media":87096,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[445,404,3,45],"class_list":["post-53723","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripting","tag-client-side-printing","tag-printing","tag-scripting-guy","tag-windows-powershell"],"acf":[],"blog_post_summary":"<p>Hey, Scripting Guy! I am trying to determine how to use WMI to add a printer connection by using Windows PowerShell. I have found this script, but it uses VBScript and not WMI. This means that it is not very close at all, I am afraid. Do you have a WMI script I can use? [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/53723","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/users\/595"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/comments?post=53723"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/53723\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media\/87096"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media?parent=53723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/categories?post=53723"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/tags?post=53723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}