{"id":16901,"date":"2010-10-06T00:01:00","date_gmt":"2010-10-06T00:01:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/heyscriptingguy\/2010\/10\/06\/use-powershell-to-check-for-wmi-dependencies-on-windows-7\/"},"modified":"2020-08-11T06:05:57","modified_gmt":"2020-08-11T13:05:57","slug":"use-powershell-to-check-for-wmi-dependencies-on-windows-7","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/scripting\/use-powershell-to-check-for-wmi-dependencies-on-windows-7\/","title":{"rendered":"Use PowerShell to Check for WMI Dependencies on Windows 7"},"content":{"rendered":"<p><strong>Summary<\/strong>: Use Windows PowerShell to check for WMI dependencies on Windows 7 and Windows Server 2008 R2.<\/p>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" border=\"0\" align=\"left\" width=\"34\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/q-for-powertip.jpg\" alt=\"Hey, Scripting Guy! Question\" height=\"34\" title=\"Hey, Scripting Guy! Question\" \/><\/p>\n<p> Hey, Scripting Guy! I am very excited about using the WMI reliability classes for monitoring purposes. As you mentioned in your previous articles, it is not automatically enabled on Windows Server 2008 R2. This means that it will cause my script to fail if the class is not present. Is there some way to check to see if the WMI reliability provider exists? I imagine I could use <a href=\"http:\/\/technet.microsoft.com\/en-us\/library\/dd315293.aspx\">try\/catch\/finally<\/a>, but that seems like cheating. I would like to know exactly how to check to see if the provider exists. <\/p>\n<p>&#8212; SK<\/p>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" border=\"0\" align=\"left\" width=\"34\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/a-for-powertip.jpg\" alt=\"Hey, Scripting Guy! Answer\" height=\"34\" title=\"Hey, Scripting Guy! Answer\" \/><\/p>\n<p> Hello SK, <\/p>\n<p>Microsoft Scripting Guy Ed Wilson here. Windows PowerShell is a cool product. For me, it is the best of both worlds: a tool that is useful, and a tool that is fun to use. There are plenty of tools out there that are useful, but that are not very fun to use; a 20-pound sledgehammer is one such example. Because Windows PowerShell is so fun, it has inspired &ldquo;rock videos&rdquo; such as <a href=\"http:\/\/www.energizedtech.com\/2010\/09\/powershell-the-highway-to-powe.html?utm_source=twitterfeed&amp;utm_medium=twitter\">Highway to PowerShell<\/a> by Windows PowerShell MVP Sean Kearney. <\/p>\n<p>SK, to ensure that the <strong>ReliabilityMetricsProvider<\/strong> exists on a local or remote computer, you can query for the <strong>__Provider<\/strong> WMI system class and look for a provider with the name of <strong>ReliabilityMetricsProvider<\/strong>. This is shown here:<\/p>\n<pre class=\"prettyprint\">PS C:\\&#62; Get-WmiObject -Class __provider -filter &#8220;name = &#8216;ReliabilityMetricsProvider'&#8221;\r\n -computername hyperv-box\r\n__GENUS : 2\r\n__CLASS : __Win32Provider\r\n__SUPERCLASS : __Provider\r\n__DYNASTY : __SystemClass\r\n__RELPATH : __Win32Provider.Name=&#8220;ReliabilityMetricsProvider&#8221;\r\n__PROPERTY_COUNT : 24\r\n__DERIVATION : {__Provider, __SystemClass}\r\n__SERVER : EX1\r\n__NAMESPACE : ROOT\\cimv2\r\n__PATH : \\\\EX1\\ROOT\\cimv2:__Win32Provider.Name=&#8220;ReliabilityMe\r\ntricsProvider&#8221;\r\nClientLoadableCLSID :\r\nCLSID : {D7C3453E-1F1C-48CD-AFE6-CFF2A937D337}\r\nConcurrency :\r\nDefaultMachineName :\r\nEnabled :\r\nHostingModel : NetworkServiceHost:[ReliabilityMetricsProvider]\r\nImpersonationLevel : 0\r\nInitializationReentrancy : 0\r\nInitializationTimeoutInterval :\r\nInitializeAsAdminFirst :\r\nName : ReliabilityMetricsProvider\r\nOperationTimeoutInterval :\r\nPerLocaleInitialization : False\r\nPerUserInitialization : False\r\nPure : True\r\nSecurityDescriptor :\r\nSupportsExplicitShutdown :\r\nSupportsExtendedStatus :\r\nSupportsQuotas :\r\nSupportsSendStatus :\r\nSupportsShutdown :\r\nSupportsThrottling :\r\nUnloadTimeout :\r\nVersion :\r\nPS C:\\&#62;<\/pre>\n<p>As you can see from the above output, the reliability provider is installed on the remote computer named hyperv-box. If I query the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ee706630(VS.85).aspx\">Win32_ReliabilityRecords<\/a> class on the hyperv-box computer, the following is output if <a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/tags\/windows+powershell\/group+policy\/\">Group Policy<\/a> has not enabled the <strong>reliabilityMetricsProvider<\/strong>. Notice that the error message is &ldquo;not available.&rdquo; This lets me know the class exists, but it is not available for use at this time. Using Group Policy to enable the <strong>reliabilityMetricsProvider<\/strong> was discussed in <a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2010\/10\/05\/use-powershell-to-graph-the-reliability-of-windows-2008-r2.aspx\">yesterday&rsquo;s Hey, Scripting Guy! Blog post<\/a>. <\/p>\n<pre class=\"prettyprint\">PS C:\\&#62; Get-WmiObject -Class win32_reliabilityrecords -CN hyperv-box\r\nGet-WmiObject : Not available\r\nAt line:1 char:14\r\n+ Get-WmiObject &#60;&#60;&#60;&#60; -Class win32_reliabilityrecords -CN hyperv-box\r\n    + CategoryInfo : InvalidOperation: (:) [Get-WmiObject], ManagementException\r\n    + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand\r\nPS C:\\&#62;<\/pre>\n<p>When I query the remote computer named dc1, as seen here, nothing is returned because that machine is running Windows Server 2008&mdash;but not the R2 edition:<\/p>\n<pre class=\"prettyprint\">PS C:\\&#62; Get-WmiObject -Class __provider -filter &#8220;name = &#8216;ReliabilityMetricsProvider'&#8221;\r\n -computername dc1\r\nPS C:\\&#62;<\/pre>\n<p>If I query the <strong>win32_reliabilityrecords<\/strong> WMI class on dc1, the error that is returned says invalid class. This lets me know the class does not exist:<\/p>\n<pre class=\"prettyprint\">PS C:\\&#62; Get-WmiObject -Class win32_reliabilityrecords -CN dc1\r\nGet-WmiObject : Invalid class\r\nAt line:1 char:14\r\n+ Get-WmiObject &#60;&#60;&#60;&#60; -Class win32_reliabilityrecords -CN dc1\r\n    + CategoryInfo : InvalidOperation: (:) [Get-WmiObject], ManagementException\r\n    + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand\r\nPS C:\\&#62;<\/pre>\n<p>Therefore, there are several potential scenarios: the provider does not exist, the provider does exist but is not enabled, or the provider exists and is enabled. <\/p>\n<p>Testing for the presence of the Windows Installer WMI provider (<strong>msiprov<\/strong>) was covered in detail in a <a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2009\/10\/19\/hey-scripting-guy-october-19-2009.aspx\">series of two Hey, Scripting Guy! Blog posts from last year<\/a>. That information is useful in understanding WMI providers and applies to more than just the <strong>Windows Installer<\/strong> provider. <\/p>\n<p>Querying for the provider reveals if the provider exists, but does not reveal if the provider is enabled on a Windows Server 2008 R2 machine. To do that requires finding out if the Group Policy has enabled the Configure Reliability WMI Providers policy setting. The <a href=\"http:\/\/www.microsoft.com\/downloads\/en\/details.aspx?FamilyID=18c90c80-8b0a-4906-a4f5-ff24cc2030fb&amp;displaylang=en\">Group Policy spreadsheet<\/a> for Windows Server 2008 R2 and Windows 7 provides the registry setting to detect if the Configure Reliability WMI Providers policy setting has been enabled. The Group Policy spreadsheet is shown in the following image.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/3441.HSG-10-06-10-01_65B22487.jpg\"><img decoding=\"async\" border=\"0\" width=\"604\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/6406.HSG-10-06-10-01_thumb_514C5EFC.jpg\" alt=\"Image of Group Policy spreadsheet\" height=\"352\" style=\"border-right: 0px;padding-right: 0px;border-top: 0px;padding-left: 0px;border-left: 0px;padding-top: 0px;border-bottom: 0px\" title=\"Image of Group Policy spreadsheet\" \/><\/a><\/p>\n<p>Armed with the proper registry key, which exists only if the Group Policy setting has been enabled, the registry key can be detected using Windows PowerShell scripting. When the Configure Reliability WMI Providers policy setting is enabled, the registry key will be set to 1. This is shown in the following image.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/3343.HSG-10-06-10-02_221A7365.jpg\"><img decoding=\"async\" border=\"0\" width=\"604\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/4035.HSG-10-06-10-02_thumb_610BF400.jpg\" alt=\"Image of registry key set to 1 when policy setting is enabled\" height=\"446\" style=\"border-right: 0px;padding-right: 0px;border-top: 0px;padding-left: 0px;border-left: 0px;padding-top: 0px;border-bottom: 0px\" title=\"Image of registry key set to 1 when policy setting is enabled\" \/><\/a><\/p>\n<p>If the Configure Reliability WMI Providers Group policy setting is set to disable, the value stored in the <strong>WMIEnable<\/strong> registry key will be 0; therefore, 1 means the provider is specifically enabled, and 0 means it is specifically disabled. If the registry key is missing, the operating system defaults will be in effect; Windows 7 will have the provider enabled, and Windows Server 2008 R2 will have the provider disabled. <\/p>\n<p>The Test-ReliablityProvider.ps1 script contains a function that returns true if the provider is enabled, and false if the provider is either missing or disabled. The complete Test-ReliabilityProvider.ps1 script is shown here. <\/p>\n<pre class=\"prettyprint\">Test-ReliabilityProvider.ps1\r\n\r\nFunction Test-ReliabilityProvider\r\n\r\n{ \r\n  &#60;#\r\n   .Synopsis\r\n    This function checks for the presence of the WMI Reliability provider\r\n   .Description\r\n    This function checks for the presence of the WMI Reliability provider\r\n   .Example\r\n    Test-ReliabilityProvider\r\n    Returns true if reliability exists and is enabled on local computer. \r\n   .Example\r\n    Test-ReliabilityProvider -computer berlin\r\n    Tests for presence of reliability provider on remote computer named berlin.\r\n    Returns true if exists and is enabled, false otherwise \r\n   .Parameter Computer\r\n    Name of remote computer to test\r\n   .Inputs\r\n    [string]\r\n   .Outputs\r\n    [boolean]\r\n   .Notes\r\n    NAME: Test-ReliabilityProvider\r\n    AUTHOR: ed wilson, msft\r\n    LASTEDIT: 09\/27\/2010 13:59:47\r\n    KEYWORDS: Operating System, Registry, Scripting Techniques, WMI\r\n    HSG: HSG-10-06-10\r\n   .Link\r\n    Http:\/\/www.ScriptingGuys.com\r\n #Requires -Version 2.0\r\n #&#62;\r\n [cmdletBinding()]\r\n Param ([string]$computer = &#8220;.&#8221;)\r\n $provider = Get-WmiObject -Class __provider -filter `\r\n&#8220;name = &#8216;ReliabilityMetricsProvider'&#8221; -computername $computer\r\n If($provider -ne $null)\r\n   {\r\n    Write-Verbose &#8220;Reliability Provider found&#8221;\r\n    $hklm = 2147483650\r\n    $key = &#8220;SOFTWARE\\Policies\\Microsoft\\Windows\\Reliability Analysis\\WMI&#8221;\r\n    $value = &#8220;WmiEnable&#8221;\r\n    $wmi = [wmiclass]&#8220;\\\\$computer\\root\\default:stdRegProv&#8221;\r\n    if( ($wmi.GetDWORDValue($hklm,$key,$value)).uValue -eq 1) \r\n     {\r\n      Write-Verbose &#8220;Reliability Provider enabled via Group Policy&#8221; \r\n      Return $true \r\n      }\r\n    Else \r\n     {\r\n       Write-verbose &#8220;Reliability Provider not enabled via Group Policy&#8221;\r\n       Return $false \r\n      }\r\n   }\r\n Else \r\n  {\r\n   Write-verbose &#8220;Reliability Provider does not exist&#8221; \r\n    Return $false \r\n   }\r\n} # end function Test-ReliabilityProvider \r\n # *** Entry Point to script ***\r\n#Test-ReliabilityProvider -computer &#8220;.&#8221;<\/pre>\n<p>The first thing that is done in the script is to add comment-based help. This is shown here:<\/p>\n<pre class=\"prettyprint\">Function Test-ReliabilityProvider\r\n{ \r\n  &#60;#\r\n   .Synopsis\r\n    This function checks for the presence of the WMI Reliability provider\r\n   .Description\r\n    This function checks for the presence of the WMI Reliability provider\r\n   .Example\r\n    Test-ReliabilityProvider\r\n    Returns true if reliability exists and is enabled on local computer. \r\n   .Example\r\n    Test-ReliabilityProvider -computer berlin\r\n    Tests for presence of reliability provider on remote computer named berlin.\r\n    Returns true if exists and is enabled, false otherwise \r\n   .Parameter Computer\r\n    Name of remote computer to test\r\n   .Inputs\r\n    [string]\r\n   .Outputs\r\n    [boolean]\r\n   .Notes\r\n    NAME: Test-ReliabilityProvider\r\n    AUTHOR: ed wilson, msft\r\n    LASTEDIT: 09\/27\/2010 13:59:47\r\n    KEYWORDS: Operating System, Registry, Scripting Techniques, WMI\r\n    HSG: HSG-10-06-10\r\n   .Link\r\n     Http:\/\/www.ScriptingGuys.com\r\n #Requires -Version 2.0\r\n #&#62;<\/pre>\n<p>Comment-based help has been discussed in <a href=\"http:\/\/blogs.technet.com\/search\/SearchResults.aspx?q=%22add%20help%22&amp;sections=7618\">several Hey, Scripting Guy! Blog posts<\/a>. In the <a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/tags\/windows+powershell+ise\/\">series of Hey, Scripting Guy! Blog posts about customizing the Windows PowerShell ISE<\/a>, I even developed a function that will <a href=\"http:\/\/blogs.technet.com\/b\/heyscriptingguy\/archive\/2010\/09\/11\/automatically-add-comment-based-help-to-your-powershell-scripts.aspx\">automatically add comment-based help to the Windows PowerShell script<\/a>. The nice thing about using comment-based help is that it allows you to use the <a href=\"http:\/\/technet.microsoft.com\/en-us\/library\/dd347639.aspx\">Get-Help cmdlet<\/a> to retrieve nicely formatted help information from the function. This is shown in the following image.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/3463.HSG-10-06-10-03_5914519E.jpg\"><img decoding=\"async\" border=\"0\" width=\"604\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/2772.HSG-10-06-10-03_thumb_06293E6D.jpg\" alt=\"Image of using formatted help information from function\" height=\"549\" style=\"border-right: 0px;padding-right: 0px;border-top: 0px;padding-left: 0px;border-left: 0px;padding-top: 0px;border-bottom: 0px\" title=\"Image of using formatted help information from function\" \/><\/a><\/p>\n<p>The script then uses the <strong>[cmdletBinding()] <\/strong>directive. When the <strong>[cmdletBinding()]<\/strong> directive is used, the function will automatically use the standard parameters. For example, the <strong>&ndash;verbose<\/strong> standard parameter would normally need to be specifically enabled. But when <strong>[cmdletBinding()]<\/strong> is used, all that is required is to use the <strong>Write-Verbose<\/strong> command in the appropriate portion of the script. When the function is called with the <strong>&ndash;verbose<\/strong> parameter, the content supplied by the <strong>Write-Verbose<\/strong> cmdlet will be displayed. This is shown in the following image.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/0333.HSG-10-06-10-04_777E9287.jpg\"><img decoding=\"async\" border=\"0\" width=\"604\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/29\/2019\/02\/6507.HSG-10-06-10-04_thumb_6B7CA253.jpg\" alt=\"Image of content supplied by Write-Verbose cmdlet when function is called with -verbose parameter\" height=\"549\" style=\"border-right: 0px;padding-right: 0px;border-top: 0px;padding-left: 0px;border-left: 0px;padding-top: 0px;border-bottom: 0px\" title=\"Image of content supplied by Write-Verbose cmdlet when function is called with -verbose parameter\" \/><\/a><\/p>\n<p>The existence of the <strong>ReliabilityMetricsProvider<\/strong> is determined by querying the <strong>__Provider<\/strong> WMI class: <\/p>\n<pre class=\"prettyprint\">$provider = Get-WmiObject -Class __provider -filter `\r\n&#8220;name = &#8216;ReliabilityMetricsProvider'&#8221; -computername $computer<\/pre>\n<p>If the provider exists, the <strong>stdregprov<\/strong> WMI class is used to determine if Group Policy has enabled the provider. The reason for using the <strong>stdregprov<\/strong> WMI class is that WMI was already being used to query for the existence of the WMI provider. If this had not been the case, I would have used the Windows PowerShell HKLM PowerShell drive. The use of the <a href=\"http:\/\/blogs.technet.com\/search\/SearchResults.aspx?q=stdregprov%20PowerShell&amp;sections=7618\">stdregprov WMI class has been discussed several times on the Hey, Scripting Guy! Blog<\/a>. The code that queries the registry is shown here: <\/p>\n<pre class=\"prettyprint\">If($provider -ne $null)\r\n   {\r\n    Write-Verbose &#8220;Reliability Provider found&#8221;\r\n    $hklm = 2147483650\r\n    $key = &#8220;SOFTWARE\\Policies\\Microsoft\\Windows\\Reliability Analysis\\WMI&#8221;\r\n    $value = &#8220;WmiEnable&#8221;\r\n    $wmi = [wmiclass]&#8220;\\\\$computer\\root\\default:stdRegProv&#8221;\r\n    if( ($wmi.GetDWORDValue($hklm,$key,$value)).uValue -eq 1) \r\n     {\r\n      Write-Verbose &#8220;Reliability Provider enabled via Group Policy&#8221; \r\n      Return $true \r\n      }<\/pre>\n<p>The script returns the Boolean value <strong>$false<\/strong> to the calling code if the WMI provider does not exist, or if the WMI provider is not enabled via Group Policy. This is shown here:<\/p>\n<pre class=\"prettyprint\">Else \r\n     {\r\n       Write-verbose &#8220;Reliability Provider not enabled via Group Policy&#8221;\r\n       Return $false \r\n      }\r\n   }\r\n Else \r\n  {\r\n   Write-verbose &#8220;Reliability Provider does not exist&#8221; \r\n    Return $false \r\n   }<\/pre>\n<p>SK, that is all there is to using Windows PowerShell to check for the status of the WMI <strong>Reliability<\/strong> provider. Performance Week will continue tomorrow when we will complete talking about checking for the Reliability provider. <\/p>\n<p>We invite you to follow us on <a href=\"http:\/\/bit.ly\/scriptingguystwitter\">Twitter<\/a> and <a href=\"http:\/\/bit.ly\/scriptingguysfacebook\">Facebook<\/a>. If you have any questions, send email to us at <a href=\"mailto:scripter@microsoft.com\">scripter@microsoft.com<\/a>, or post your questions on the <a href=\"http:\/\/social.technet.microsoft.com\/Forums\/en\/ITCG\/threads\/\">Official Scripting Guys Forum<\/a>. See you tomorrow. Until then, peace.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Ed Wilson and Craig Liebendorfer, Scripting Guys<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Summary: Use Windows PowerShell to check for WMI dependencies on Windows 7 and Windows Server 2008 R2. &nbsp; Hey, Scripting Guy! I am very excited about using the WMI reliability classes for monitoring purposes. As you mentioned in your previous articles, it is not automatically enabled on Windows Server 2008 R2. This means that it [&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":[31,60,26,3,4,45,6],"class_list":["post-16901","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripting","tag-operating-system","tag-performance","tag-registry","tag-scripting-guy","tag-scripting-techniques","tag-windows-powershell","tag-wmi"],"acf":[],"blog_post_summary":"<p>Summary: Use Windows PowerShell to check for WMI dependencies on Windows 7 and Windows Server 2008 R2. &nbsp; Hey, Scripting Guy! I am very excited about using the WMI reliability classes for monitoring purposes. As you mentioned in your previous articles, it is not automatically enabled on Windows Server 2008 R2. This means that it [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/16901","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=16901"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/16901\/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=16901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/categories?post=16901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/tags?post=16901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}