{"id":260409,"date":"2024-05-24T14:51:31","date_gmt":"2024-05-24T14:51:31","guid":{"rendered":"https:\/\/www.ninjaone.com\/?post_type=script_hub&#038;p=260409"},"modified":"2024-05-24T14:51:31","modified_gmt":"2024-05-24T14:51:31","slug":"anadir-un-equipo-a-un-dominio","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/es\/script-hub\/anadir-un-equipo-a-un-dominio\/","title":{"rendered":"C\u00f3mo a\u00f1adir un equipo a un dominio mediante PowerShell"},"content":{"rendered":"<p>En el panorama inform\u00e1tico moderno, garantizar que un ordenador se una al dominio adecuado es m\u00e1s que una comodidad: es un paso esencial para consolidar el control, simplificar el acceso y mantener la seguridad de la red. Este script PowerShell est\u00e1 dise\u00f1ado para agilizar el proceso de <strong>a\u00f1adir un equipo a un dominio.<\/strong><\/p>\n<h2>Antecedentes<\/h2>\n<p>PowerShell ha cobrado importancia entre los profesionales de TI y los <a href=\"https:\/\/www.ninjaone.com\/es\/que-es-un-msp\">proveedores de servicios gestionados (MSP)<\/a> como lenguaje de scripting robusto y vers\u00e1til. Su flexibilidad permite a los administradores automatizar tareas repetitivas, aplicar pol\u00edticas y configurar sistemas con rapidez. El script que aqu\u00ed se presenta cumple una funci\u00f3n crucial: permite que los ordenadores se unan a un dominio sin problemas. Los dominios son fundamentales en el mundo inform\u00e1tico empresarial, ya que facilitan el uso compartido de recursos, la autenticaci\u00f3n centralizada y la aplicaci\u00f3n de pol\u00edticas. Por tanto, un script que pueda a\u00f1adir ordenadores a un dominio de forma fiable a\u00f1ade un valor inmenso.<\/p>\n<h2>El script para a\u00f1adir un equipo a un dominio<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">#Requires -Version 5.1\r\n\r\n&lt;#\r\n.SYNOPSIS\r\n    Joins a computer to a domain.\r\n.DESCRIPTION\r\n    Joins a computer to a domain.\r\n.EXAMPLE\r\n     -DomainName \"Domain.com\" -UserName \"DomainMyDomainUser\" -Password \"Somepass1\"\r\n    Joins a computer to a \"Domain.com\" domain and restarts the computer. Don't expect a success result in Ninja as the computer will reboot before the script can return a result.\r\n.EXAMPLE\r\n     -DomainName \"Domain.com\" -UserName \"DomainMyDomainUser\" -Password \"Somepass1\" -NoRestart\r\n    Joins a computer to a \"Domain.com\" domain and does not restart the computer.\r\n.EXAMPLE\r\n    PS C:&gt; Join-Domain.ps1 -DomainName \"domain.com\" -UserName \"DomainMyDomainUser\" -Password \"Somepass1\" -NoRestart\r\n    Joins a computer to a \"Domain.com\" domain and does not restart the computer.\r\n.EXAMPLE\r\n     -DomainName \"Domain.com\" -UserName \"DomainMyDomainUser\" -Password \"Somepass1\" -Server \"192.168.0.1\"\r\n    Not recommended if the computer this script is running on does not have one of the Domain Controllers set as its DNS server.\r\n    Joins a computer to a \"Domain.com\" domain, talks to the domain with the IP address of \"192.168.0.1\", and restarts the computer.\r\n.OUTPUTS\r\n    String[]\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 10, Windows Server 2016\r\n    Release Notes:\r\n    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.COMPONENT\r\n    ManageUsers\r\n#&gt;\r\n\r\n[CmdletBinding()]\r\nparam (\r\n    # Domain Name to join computer to\r\n    [Parameter(Mandatory = $true)]\r\n    [String]\r\n    $DomainName,\r\n    # Use a Domain UserName to join this computer to a domain, this requires the Password parameter to be used as well\r\n    [Parameter(Mandatory = $true)]\r\n    [String]\r\n    $UserName,\r\n    # Use a Domain Password to join this computer from a domain\r\n    [Parameter(Mandatory = $true)]\r\n    $Password,\r\n    # Used only when computer can't locate a domain controler via DNS or you wish to connect to a specific DC\r\n    [Parameter()]\r\n    $Server,\r\n    # Do not restart computer after joining to a domain\r\n    [Switch]\r\n    $NoRestart\r\n)\r\n    \r\nbegin {\r\n    function Join-ComputerToDomainPS2 {\r\n        param (\r\n            [String]\r\n            $DomainName,\r\n            [PSCredential]\r\n            $Credential,\r\n            $Restart,\r\n            $Server\r\n        )\r\n        if ($Credential) {\r\n            # Use supplied Credentials\r\n            if ($Server) {\r\n                Add-Computer -DomainName $DomainName -Credential $Credential -Server $Server -Force -Confirm:$false -PassThru\r\n            }\r\n            else {\r\n                Add-Computer -DomainName $DomainName -Credential $Credential -Force -Confirm:$false -PassThru\r\n            }\r\n        }\r\n        else {\r\n            # No Credentials supplied, use current user\r\n            Add-Computer -DomainName $DomainName -Force -Confirm:$false -PassThru\r\n        }\r\n    }\r\n    Write-Output \"Starting Join Domain\"\r\n    \r\n    # Convert username and password into a credential object\r\n    $JoinCred = [PSCredential]::new($UserName, $(ConvertTo-SecureString -String $Password -AsPlainText -Force))\r\n}\r\n    \r\nprocess {\r\n    Write-Output \"Joining computer($env:COMPUTERNAME) to domain $DomainName\"\r\n    $script:JoinResult = $false\r\n    try {\r\n        $JoinResult = if ($NoRestart) {\r\n            # Do not restart after joining\r\n            if ($PSVersionTable.PSVersion.Major -eq 2) {\r\n                if ($Server) {\r\n                    (Join-ComputerToDomainPS2 -DomainName $DomainName -Credential $Credential -Server $Server).HasSucceeded\r\n                }\r\n                else {\r\n                    (Join-ComputerToDomainPS2 -DomainName $DomainName -Credential $Credential).HasSucceeded\r\n                }\r\n            }\r\n            else {\r\n                if ($Server) {\r\n                    (Add-Computer -DomainName $DomainName -Credential $JoinCred -Server $Server -Force -Confirm:$false -PassThru).HasSucceeded\r\n                }\r\n                else {\r\n                    (Add-Computer -DomainName $DomainName -Credential $JoinCred -Force -Confirm:$false -PassThru).HasSucceeded\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            # Restart after joining\r\n            if ($PSVersionTable.PSVersion.Major -eq 2) {\r\n                if ($Server) {\r\n                    (Join-ComputerToDomainPS2 -DomainName $DomainName -Credential $Credential -Server $Server).HasSucceeded\r\n                }\r\n                else {\r\n                    (Join-ComputerToDomainPS2 -DomainName $DomainName -Credential $Credential).HasSucceeded\r\n                }\r\n            }\r\n            else {\r\n                if ($Server) {\r\n                    (Add-Computer -DomainName $DomainName -Credential $JoinCred -Restart -Server $Server -Force -Confirm:$false -PassThru).HasSucceeded\r\n                }\r\n                else {\r\n                    (Add-Computer -DomainName $DomainName -Credential $JoinCred -Restart -Force -Confirm:$false -PassThru).HasSucceeded\r\n                }\r\n            }\r\n        }    \r\n    }\r\n    catch {\r\n        Write-Error \"Failed to Join Domain: $DomainName\"\r\n    }\r\n\r\n    if ($NoRestart -and $JoinResult) {\r\n        Write-Output \"Joined computer($env:COMPUTERNAME) to Domain: $DomainName and not restarting computer\"\r\n    }\r\n    elseif ($JoinResult) {\r\n        Write-Output \"Joined computer($env:COMPUTERNAME) to Domain: $DomainName and restarting computer\"\r\n        if ($PSVersionTable.PSVersion.Major -eq 2) {\r\n            shutdown.exe -r -t 60\r\n        }\r\n    }\r\n    else {\r\n        Write-Output \"Failed to Join computer($env:COMPUTERNAME) to Domain: $DomainName\"\r\n        # Clean up credentials so that they don't leak outside this script\r\n        $JoinCred = $null\r\n        exit 1\r\n    }\r\n}\r\n    \r\nend {\r\n    # Clean up credentials so that they don't leak outside this script\r\n    $JoinCred = $null\r\n    Write-Output \"Completed Join Domain\"\r\n}<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"in-context-cta\"><p style=\"text-align: center;\">Accede a m\u00e1s de 300 scripts en el Dojo de NinjaOne<\/p>\n<p style=\"text-align: center;\"><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>El script comienza con metadatos exhaustivos que describen su finalidad, ejemplos de uso y resultados esperados. La l\u00f3gica central sigue un esquema de funciones est\u00e1ndar de PowerShell: inicio, proceso y fin.<\/p>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&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>Par\u00e1metros<\/strong>: se trata de inputs que proporciona el usuario, como DomainName, UserName, Password y Server. Un par\u00e1metro del switch llamado NoRestart permite a los usuarios decidir si quieren que el ordenador se reinicie despu\u00e9s de unirse al dominio.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&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>Bloque de inicio<\/strong>: esta secci\u00f3n inicializa el script. Define una funci\u00f3n <strong>Join-ComputerToDomainPS2<\/strong> y convierte el nombre de usuario y la contrase\u00f1a proporcionados en un objeto credencial seguro, listo para su uso en el proceso de uni\u00f3n.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&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>Bloque de proceso<\/strong>: la l\u00f3gica central reside aqu\u00ed. Dependiendo de los par\u00e1metros proporcionados, el script unir\u00e1 el ordenador al dominio con o sin reinicio. Utiliza dos comandos principales de PowerShell: <strong>Add-Computer<\/strong> y una funci\u00f3n definida por el usuario. Si surge alg\u00fan error durante este proceso, se detecta y se notifica.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&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>Bloque final<\/strong>: finaliza el script, limpiando cualquier credencial utilizada durante su ejecuci\u00f3n.<\/li>\n<\/ul>\n<h2>Posibles casos de uso<\/h2>\n<p><strong>Estudio de caso<\/strong>: imagina un MSP que gestiona las TI de varias peque\u00f1as empresas. Acaban de desplegar 50 m\u00e1quinas nuevas y necesitan que todas est\u00e9n en el dominio de la empresa antes de que empiece la actividad al d\u00eda siguiente. Con este script, el MSP introduce r\u00e1pidamente los datos necesarios de todas las m\u00e1quinas. En cuesti\u00f3n de minutos, todos los ordenadores est\u00e1n configurados, sin necesidad de configuraciones manuales ni engorrosas configuraciones.<\/p>\n<h2>Comparaciones<\/h2>\n<p>Los m\u00e9todos tradicionales para unir un ordenador a un dominio implican pasos manuales a trav\u00e9s de la interfaz de Windows o utilizando scripts heredados. Estos m\u00e9todos pueden llevar mucho tiempo, son propensos a errores y no se adaptan bien a grandes despliegues. Nuestro m\u00e9todo PowerShell es m\u00e1s eficaz, menos propenso a errores y se adapta a la gesti\u00f3n de varios equipos.<\/p>\n<h2>FAQ<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&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>\u00bfEste script puede gestionar adiciones masivas de ordenadores a un dominio?<\/strong><br \/>\nS\u00ed, con la l\u00f3gica de bucle adecuada, puede procesar varios ordenadores.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&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>\u00bfQu\u00e9 ocurre si los datos del dominio facilitados son incorrectos?<\/strong><br \/>\nEl script lanzar\u00e1 un error indicando el fallo en la uni\u00f3n de dominios.<\/li>\n<\/ul>\n<h2>Implicaciones<\/h2>\n<p>Unirse incorrectamente a dominios o exponer credenciales puede ser perjudicial para la seguridad de TI. Si un ordenador se une al dominio equivocado, puede acceder a recursos no autorizados o quedar expuesto a riesgos de seguridad.<\/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;335559684&quot;:-2,&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\">Valida siempre los detalles del dominio antes de la ejecuci\u00f3n.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&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\">Protege y rota peri\u00f3dicamente las credenciales de dominio.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&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\">Prueba el script en un entorno controlado antes de desplegarlo.<\/li>\n<\/ul>\n<h2>Reflexiones finales<\/h2>\n<p>En una \u00e9poca en la que la automatizaci\u00f3n impera, herramientas como este script, combinadas con plataformas como NinjaOne, pueden mejorar la eficacia, la seguridad y la capacidad de gesti\u00f3n. NinjaOne, en particular, ofrece s\u00f3lidas funciones de <a href=\"https:\/\/www.ninjaone.com\/es\/supervision-gestion-de-endpoints\/\">supervisi\u00f3n y gesti\u00f3n<\/a>, lo que garantiza que una vez que los equipos se a\u00f1aden al dominio, siguen cumpliendo las normas, son seguros y su rendimiento est\u00e1 optimizado.<\/p>\n","protected":false},"author":35,"featured_media":144224,"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":[4259],"class_list":["post-260409","script_hub","type-script_hub","status-publish","has-post-thumbnail","hentry","script_hub_category-windows","use_cases-configuracion-general"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/script_hub\/260409","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=260409"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/media\/144224"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/media?parent=260409"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/operating_system?post=260409"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/use_cases?post=260409"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}