{"id":387233,"date":"2024-12-02T15:50:35","date_gmt":"2024-12-02T15:50:35","guid":{"rendered":"https:\/\/www.ninjaone.com\/?post_type=script_hub&#038;p=387233"},"modified":"2024-12-02T15:53:57","modified_gmt":"2024-12-02T15:53:57","slug":"estado-de-los-servicios-de-windows","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/es\/script-hub\/estado-de-los-servicios-de-windows\/","title":{"rendered":"C\u00f3mo automatizar el inicio y la comprobaci\u00f3n del estado de los servicios de Windows con PowerShell"},"content":{"rendered":"<p><span data-sheets-root=\"1\" data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;powershell check windows service status&quot;}\" data-sheets-userformat=\"{&quot;2&quot;:769,&quot;3&quot;:{&quot;1&quot;:0},&quot;11&quot;:4,&quot;12&quot;:0}\">Con Powershell, aprender a <strong>comprobar el estado de los servicios<\/strong><\/span> y mantener el correcto estado los servicios en los equipos Windows es crucial para garantizar un funcionamiento sin problemas en cualquier entorno de TI. Los servicios configurados para iniciarse autom\u00e1ticamente pero que no se ejecutan pueden provocar problemas de rendimiento, <a href=\"https:\/\/www.ninjaone.com\/it-hub\/it-service-management\/what-is-network-downtime\/\" target=\"_blank\" rel=\"noopener\">ca\u00eddas imprevistas de la red<\/a> e ineficiencias operativas.<\/p>\n<p>Aqu\u00ed es donde resultan \u00fatiles <a href=\"https:\/\/www.ninjaone.com\/it-hub\/endpoint-management\/what-is-powershell\/\" target=\"_blank\" rel=\"noopener\">los scripts de PowerShell<\/a>, que ofrecen una forma robusta y automatizada de gestionar y supervisar los servicios de Windows. En este post, exploraremos un script PowerShell dise\u00f1ado para comprobar el estado de los servicios que no se est\u00e9n ejecutando en ese momento, excluyendo aquellos configurados como &#8216;Inicio diferido&#8217; o &#8216;Inicio activado&#8217;.<\/p>\n<h2>Contexto<\/h2>\n<p>Para los profesionales de TI y los <a href=\"https:\/\/www.ninjaone.com\/es\/que-es-un-msp\" target=\"_blank\" rel=\"noopener\">proveedores de servicios gestionados (MSP)<\/a>, mantener el buen funcionamiento de los servicios es una prioridad absoluta. En ocasiones, los servicios de Windows pueden no iniciarse por diversos motivos, como <a href=\"https:\/\/www.ninjaone.com\/rmm\/computer-configurations\/\" target=\"_blank\" rel=\"noopener\">problemas de configuraci\u00f3n<\/a>, conflictos o limitaciones de recursos del sistema.<\/p>\n<p>Este script aborda la necesidad de un enfoque sistem\u00e1tico para identificar y reiniciar los servicios que deber\u00edan estar en ejecuci\u00f3n pero no lo est\u00e1n. Al automatizar este proceso, los equipos de TI pueden ahorrar tiempo y <a href=\"https:\/\/www.ninjaone.com\/blog\/how-human-error-relates-to-cybersecurity-risks\/\" target=\"_blank\" rel=\"noopener\">reducir el riesgo de error humano.<\/a><\/p>\n<h2>El script para comprobar el estado de los servicios de Windows<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">#Requires -Version 5.1\r\n\r\n&lt;#\r\n.SYNOPSIS\r\n    Reports on or starts services for Automatic Services that are not currently running. Services set as 'Delayed Start' or 'Trigger Start' are ignored.\r\n.DESCRIPTION\r\n    Reports on or starts services for Automatic Services that are not currently running. Services set as 'Delayed Start' or 'Trigger Start' are ignored.\r\n.EXAMPLE\r\n    (No Parameters)\r\n    \r\n    Matching Services found!\r\n\r\n    Name    Description                                         \r\n    ----    -----------                                         \r\n    SysMain Maintains and improves system performance over time.\r\n\r\nPARAMETER: -IgnoreServices \"ExampleServiceName\"\r\n    A comma separated list of service names to ignore.\r\n\r\nPARAMETER: -StartFoundServices\r\n    Attempts to start any services found matching the criteria.\r\n\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 10, Windows Server 2016\r\n    Release Notes: Initial Release\r\nBy using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https:\/\/www.ninjaone.com\/terms-of-use.\r\n    Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. \r\n    Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. \r\n    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. \r\n    Warranty Disclaimer: The script is provided \u201cas is\u201d and \u201cas available\u201d, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. \r\n    Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. \r\n    Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. \r\n    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).\r\n#&gt;\r\n\r\n[CmdletBinding()]\r\nparam (\r\n    [Parameter()]\r\n    [String]$IgnoreServices,\r\n    [Parameter()]\r\n    [Switch]$StartFoundServices = [System.Convert]::ToBoolean($env:startFoundServices)\r\n)\r\n\r\nbegin {\r\n    # Replace script parameters with form variables\r\n    if($env:servicesToExclude -and $env:servicesToExclude -notlike \"null\"){ $IgnoreServices = $env:servicesToExclude }\r\n\r\n    # Get the last startup time of the operating system.\r\n    $LastBootDateTime = Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -ExpandProperty LastBootUpTime\r\n    if ($LastBootDateTime -gt $(Get-Date).AddMinutes(-15)) {\r\n        $Uptime = New-TimeSpan $LastBootDateTime (Get-Date) | Select-Object -ExpandProperty TotalMinutes\r\n        Write-Host \"Current uptime is $([math]::Round($Uptime)) minutes.\"\r\n        Write-Host \"[Error] Please wait at least 15 minutes after startup before running this script.\"\r\n        exit 1\r\n    }\r\n\r\n    # Define a function to test if the current user has elevated (administrator) privileges.\r\n    function Test-IsElevated {\r\n        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()\r\n        $p = New-Object System.Security.Principal.WindowsPrincipal($id)\r\n        $p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)\r\n    }\r\n\r\n    $ExitCode = 0\r\n}\r\nprocess {\r\n    # Check if the script is running with Administrator privileges.\r\n    if (!(Test-IsElevated)) {\r\n        Write-Host -Object \"[Error] Access Denied. Please run with Administrator privileges.\"\r\n        exit 1\r\n    }\r\n\r\n    # Define a string of characters that are invalid for service names.\r\n    $InvalidServiceNameCharacters = \"\\\\|\/|:\"\r\n    # Create a list to hold the names of services to ignore.\r\n    $ServicesToIgnore = New-Object System.Collections.Generic.List[string]\r\n\r\n    # If there are services to ignore and they are separated by commas, split the string into individual service names.\r\n    if ($IgnoreServices -and $IgnoreServices -match \",\") {\r\n        $IgnoreServices -split \",\" | ForEach-Object {\r\n            # Check each service name for invalid characters or excessive length.\r\n            if ($_.Trim() -match $InvalidServiceNameCharacters) {\r\n                Write-Host \"[Error] Service Name contains one of the invalid characters '\\\/:'. $_ is not a valid service to ignore.\"\r\n                $ExitCode = 1\r\n                return\r\n            }\r\n\r\n            if (($_.Trim()).Length -gt 256) {\r\n                Write-Host \"[Error] Service Name is greater than 256 characters. $_ is not a valid service to ignore. \"\r\n                $ExitCode = 1\r\n                return\r\n            }\r\n\r\n            # Add valid services to the ignore list.\r\n            $ServicesToIgnore.Add($_.Trim())\r\n        }\r\n    }\r\n    elseif ($IgnoreServices) {\r\n        # For a single service name, perform similar validation and add if valid.\r\n        $ValidService = $True\r\n\r\n        if ($IgnoreServices.Trim() -match $InvalidServiceNameCharacters) {\r\n            Write-Host \"[Error] Service Name contains one of the invalid characters '\\\/:'. '$IgnoreServices' is not a valid service to ignore. \"\r\n            $ExitCode = 1\r\n            $ValidService = $False\r\n        }\r\n\r\n        if (($IgnoreServices.Trim()).Length -gt 256) {\r\n            Write-Host \"[Error] Service Name is greater than 256 characters. '$IgnoreServices' is not a valid service to ignore. \"\r\n            $ExitCode = 1\r\n            $ValidService = $False\r\n        }\r\n\r\n        if ($ValidService) {\r\n            $ServicesToIgnore.Add($IgnoreServices.Trim())\r\n        }\r\n    }\r\n\r\n    # Create a list to hold non-running services that are set to start automatically.\r\n    $NonRunningAutoServices = New-Object System.Collections.Generic.List[object]\r\n    Get-Service | Where-Object { $_.StartType -like \"Automatic\" -and $_.Status -ne \"Running\" } | ForEach-Object {\r\n        $NonRunningAutoServices.Add($_)\r\n    }\r\n\r\n    # Remove services from the list that have triggers or are set to delayed start,\r\n    if ($NonRunningAutoServices.Count -gt 0) {\r\n        $TriggerServices = Get-ChildItem -Path \"Registry::HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\*\\*\" -ErrorAction SilentlyContinue | Where-Object { $_.Name -match \"TriggerInfo\" }\r\n        $TriggerServices = $TriggerServices | Select-Object -ExpandProperty PSParentPath | Split-Path -Leaf\r\n        foreach ($TriggerService in $TriggerServices) {\r\n            $NonRunningAutoServices.Remove(($NonRunningAutoServices | Where-Object { $_.ServiceName -match $TriggerService })) | Out-Null\r\n        }\r\n\r\n        $DelayedStartServices = Get-ItemProperty -Path \"Registry::HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\*\" | Where-Object { $_.DelayedAutoStart -eq 1 }\r\n        $DelayedStartServices = $DelayedStartServices | Select-Object -ExpandProperty PSChildName\r\n        foreach ($DelayedStartService in $DelayedStartServices) {\r\n            $NonRunningAutoServices.Remove(($NonRunningAutoServices | Where-Object { $_.ServiceName -match $DelayedStartService })) | Out-Null\r\n        }\r\n    }\r\n\r\n    # Remove explicitly ignored services from the list of non-running automatic services.\r\n    if ($ServicesToIgnore.Count -gt 0 -and $NonRunningAutoServices.Count -gt 0) {\r\n        foreach ($ServiceToIgnore in $ServicesToIgnore) {\r\n            if ($NonRunningAutoServices.ServiceName -contains $ServiceToIgnore) {\r\n                $NonRunningAutoServices.Remove(($NonRunningAutoServices | Where-Object { $_.ServiceName -match [Regex]::Escape($ServiceToIgnore) })) | Out-Null\r\n            }\r\n        }\r\n    }\r\n\r\n    # If there are still non-running automatic services left, display their names.\r\n    # Otherwise, indicate no stopped automatic services were detected.\r\n    if ($NonRunningAutoServices.Count -gt 0) {\r\n        Write-Host \"Matching Services found!\"\r\n\r\n        # Add Description to report.\r\n        $ServicesReport = New-Object System.Collections.Generic.List[object]\r\n        $NonRunningAutoServices | ForEach-Object {\r\n            $Description = Get-CimInstance -ClassName Win32_Service -Filter \"Name = '$($_.ServiceName)'\" | Select-Object @{\r\n                Name       = \"Description\"\r\n                Expression = {\r\n                    $Characters = $_.Description | Measure-Object -Character | Select-Object -ExpandProperty Characters\r\n                    if ($Characters -gt 100) {\r\n                        \"$(($_.Description).SubString(0,100))...\"\r\n                    }\r\n                    else {\r\n                        $_.Description\r\n                    }\r\n                }\r\n            }\r\n            $ServicesReport.Add(\r\n                [PSCustomObject]@{\r\n                    Name = $_.ServiceName\r\n                    Description = $Description | Select-Object -ExpandProperty Description\r\n                }\r\n            )\r\n        }\r\n\r\n        # Output report to activity log.\r\n        $ServicesReport | Sort-Object Name | Format-Table -Property Name,Description -AutoSize | Out-String | Write-Host\r\n    }\r\n    else {\r\n        Write-Host \"No stopped automatic services detected!\"\r\n    }\r\n\r\n    # Exit the script if there are no services to start or if starting services is not requested.\r\n    if (!$StartFoundServices -or !($NonRunningAutoServices.Count -gt 0)) {\r\n        exit $ExitCode\r\n    }\r\n\r\n    # Attempt to start each non-running automatic service up to three times.\r\n    # Log success or error messages accordingly.\r\n    $NonRunningAutoServices | ForEach-Object {\r\n        Write-Host \"`nAttempting to start $($_.ServiceName).\"\r\n        $Attempt = 1\r\n        while ($Attempt -le 3) {\r\n            Write-Host -Object \"Attempt: $Attempt\"\r\n            try {\r\n                $_ | Start-Service -ErrorAction Stop\r\n                Write-Host -Object \"Successfully started $($_.ServiceName).\"\r\n                $Attempt = 4\r\n            }\r\n            catch {\r\n                Write-Host -Object \"[Error] $($_.Exception.Message)\"\r\n                if ($Attempt -eq 3) { $ExitCode = 1 }\r\n            }\r\n            $Attempt++\r\n        }\r\n    }\r\n    \r\n    exit $ExitCode\r\n}\r\nend {\r\n    \r\n    \r\n    \r\n}<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"in-context-cta\"><p>Accede a m\u00e1s de 300 scripts en el Dojo de NinjaOne<\/p>\n<p><a href=\"https:\/\/www.ninjaone.com\/es\/prueba-gratuita-formulario\/\">Obt\u00e9n acceso<\/a><\/p>\n<\/div>\n<h2>An\u00e1lisis detallado<\/h2>\n<p>Profundicemos en el script para comprobar el estado de los servicios para entender c\u00f3mo funciona paso a paso.<\/p>\n<ol>\n<li><strong>Inicializaci\u00f3n del script y par\u00e1metros:<\/strong> el script comienza definiendo su prop\u00f3sito y sus par\u00e1metros. Acepta dos par\u00e1metros opcionales: -IgnoreServices, una lista separada por comas de los servicios a ignorar, y -StartFoundServices, un interruptor para iniciar los servicios no en ejecuci\u00f3n que cumplan los criterios.<\/li>\n<li><strong>Comprobaci\u00f3n del tiempo de actividad:<\/strong> antes de continuar, el script comprueba el <a href=\"https:\/\/www.ninjaone.com\/it-hub\/it-service-management\/what-is-uptime-downtime\/\" target=\"_blank\" rel=\"noopener\">tiempo de actividad<\/a> del sistema para asegurarse de que lleva funcionando al menos 15 minutos. De este modo se evitan problemas relacionados con servicios que no hayan tenido tiempo suficiente para iniciarse correctamente tras un reinicio.<\/li>\n<li><strong>Comprobaci\u00f3n de privilegios:<\/strong> el script se asegura de que se est\u00e1 ejecutando con privilegios de administrador, ya que detener e iniciar servicios requiere permisos elevados.<\/li>\n<li><strong>Validaci\u00f3n del servicio:<\/strong> los servicios que deben ignorarse se validan para garantizar que no contienen caracteres no v\u00e1lidos y que sus nombres no son excesivamente largos.<\/li>\n<li><strong>Identificaci\u00f3n de servicios que no funcionan:<\/strong> el script recopila una lista de servicios configurados para iniciarse autom\u00e1ticamente pero que no se est\u00e1n ejecutando actualmente. A continuaci\u00f3n, filtra los servicios que est\u00e1n configurados como \u00abInicio diferido\u00bb o que tienen condiciones de activaci\u00f3n.<\/li>\n<li><strong>Informes y acci\u00f3n:<\/strong> si se encuentran servicios no en ejecuci\u00f3n, el script informa de ellos. Si el par\u00e1metro -StartFoundServices est\u00e1 activado, intenta iniciar cada uno de estos servicios, registrando los aciertos y los errores.<\/li>\n<\/ol>\n<h2>Posibles casos de uso<\/h2>\n<h3>Estudio de caso<\/h3>\n<p>Imagina a un profesional de TI que gestiona una red de servidores Windows que alojan diversas aplicaciones cr\u00edticas. Un d\u00eda, los usuarios empiezan a informar de problemas para acceder a una aplicaci\u00f3n clave. El profesional de TI ejecuta este script de PowerShell, que identifica que el servicio de la aplicaci\u00f3n, configurado para iniciarse autom\u00e1ticamente, no se est\u00e1 ejecutando. El script intenta reiniciar el servicio, resolviendo el problema r\u00e1pidamente y restableciendo el funcionamiento normal.<\/p>\n<h2>Comparaciones<\/h2>\n<p>Este script para comprobar el estado de los servicios proporciona un enfoque racionalizado y automatizado en comparaci\u00f3n con la comprobaci\u00f3n manual de cada servicio a trav\u00e9s del complemento Services MMC o el uso de otros scripts menos espec\u00edficos. Los m\u00e9todos alternativos, como el uso del Programador de tareas para supervisar los servicios, pueden ser m\u00e1s complejos y dif\u00edciles de mantener.<\/p>\n<h2>FAQ<\/h2>\n<h3>P: \u00bfSe puede utilizar este script para comprobar el estado de los servicios en versiones anteriores de Windows?<\/h3>\n<p>R: El script est\u00e1 dise\u00f1ado para Windows 10 y Windows Server 2016 y versiones m\u00e1s recientes. La compatibilidad con versiones anteriores puede requerir ajustes.<\/p>\n<h3>P: \u00bfQu\u00e9 ocurre si un servicio no se inicia?<\/h3>\n<p>R: El script intenta iniciar cada servicio hasta tres veces y registra los errores si falla.<\/p>\n<h3>P: \u00bfPuedo excluir varios servicios del control?<\/h3>\n<p>R: S\u00ed, utiliza el par\u00e1metro -IgnoreServices con una lista de nombres de servicios separados por comas.<\/p>\n<h2>Implicaciones<\/h2>\n<p>La automatizaci\u00f3n de la supervisi\u00f3n y gesti\u00f3n de los servicios de Windows mejora <a href=\"https:\/\/www.ninjaone.com\/es\/eficiencia\" target=\"_blank\" rel=\"noopener\">la eficacia operativa<\/a> y reduce la probabilidad de tiempos de inactividad. Garantizar que los servicios cr\u00edticos est\u00e9n siempre en funcionamiento puede mejorar la fiabilidad y la <a href=\"https:\/\/www.ninjaone.com\/es\/los-5-pilares-de-la-seguridad-informatica\" target=\"_blank\" rel=\"noopener\">seguridad<\/a> del sistema.<\/p>\n<h2>Recomendaciones<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>Supervisi\u00f3n peri\u00f3dica:<\/strong> programa el script para que se ejecute a intervalos regulares mediante el Programador de tareas para una supervisi\u00f3n continua.<\/li>\n<\/ul>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><strong>Registro:<\/strong> implementa mecanismos de registro adicionales para mantener un historial de las acciones realizadas por el script.<\/li>\n<\/ul>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><strong>Pruebas:<\/strong> prueba el script en un entorno controlado antes de desplegarlo en un entorno de producci\u00f3n.<\/li>\n<\/ul>\n<h2>Reflexiones finales<\/h2>\n<p>Al automatizar la gesti\u00f3n de los servicios de Windows, los profesionales de TI pueden garantizar un mayor tiempo de actividad y fiabilidad de sus sistemas. Para aquellos que buscan agilizar a\u00fan m\u00e1s sus operaciones de TI, herramientas como NinjaOne ofrecen soluciones integrales para supervisar, gestionar y automatizar diversos aspectos de la infraestructura de TI, complementando las capacidades proporcionadas por este script.<\/p>\n","protected":false},"author":35,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","_lmt_disableupdate":"no","_lmt_disable":""},"operating_system":[4212],"use_cases":[4263],"class_list":["post-387233","script_hub","type-script_hub","status-publish","hentry","script_hub_category-windows"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/script_hub\/387233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/comments?post=387233"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/media?parent=387233"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/operating_system?post=387233"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/use_cases?post=387233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}