Búsqueda de sitios web

¿Cómo ejecutar el script de PowerShell como administrador de forma predeterminada?


PowerShell es una herramienta increíblemente poderosa para administrar y automatizar tareas en entornos Windows. Es un error común de los administradores: olvidarse de ejecutar un script de PowerShell usando la opción "Ejecutar como administrador". De lo contrario, podrían producirse muchos problemas *extraños* al ejecutar scripts de PowerShell. Por ejemplo, en SharePoint, obtenemos el mensaje “No se puede acceder a la granja local. Los cmdlets con FeatureDependencyId no están registrados”. error.

A menudo es necesario ejecutar un script de PowerShell como administrador cuando se ejecutan scripts que requieren privilegios elevados para modificar la configuración del sistema, instalar software o administrar recursos. Este artículo lo guiará a través de la ejecución de un script de PowerShell como administrador.

Ejecutar PowerShell como administrador

Debe ejecutar PowerShell como administrador para instalar software, modificar claves de registro o administrar la configuración del sistema. Sin privilegios administrativos, es posible que PowerShell no pueda ejecutar ciertos comandos y que reciba errores o mensajes de acceso denegado.

Entonces, ¿cómo ejecutar PowerShell como administrador? ¡La solución es simple! Para abrir Windows PowerShell como administrador, escriba "PowerShell" en el menú de inicio >> Elija "Ejecutar como administrador". También puede hacer clic derecho en "Windows PowerShell" en los resultados de la búsqueda y seleccionar "Ejecutar como administrador". Supongo que tiene privilegios administrativos en sus computadoras con Windows 10 o 7, ¡por cierto!

Utilice la combinación de teclas Ctrl+Shift+Intro en su teclado para iniciar PowerShell (o cualquier programa) con la opción “Ejecutar como administrador”.

En el caso del complemento, haga clic derecho en el complemento PowerShell de SharePoint 2013 y seleccione "Ejecutar como administrador".

Una vez que la consola de PowerShell esté en modo Administrador, puede comenzar a escribir cmdlets para ejecutarlos en modo Administrador.

Cambiar de usuario normal a administrador en PowerShell

Cuando abre la consola de PowerShell, se inicia en modo de usuario normal de forma predeterminada. Para cambiar al modo Administrador, utilice lo siguiente:


start-process PowerShell -verb runas

Este comando iniciará un Windows PowerShell elevado como administrador.

¿Cómo ejecutar un archivo ps1 en PowerShell como administrador?

Para ejecutar scripts de PowerShell como administrador, haga lo siguiente:

  1. Inicie la consola PowerShell o PowerShell ISE como administrador utilizando el método "Ejecutar como administrador" anterior.
  2. Navegue hasta la ubicación del script usando el cmdlet "CD". Por ejemplo, “CD C:\Scripts”
  3. Ejecute el script de PowerShell escribiendo su nombre seguido de la extensión ".ps1". Por ejemplo, “.\SuNombreScript.ps1”

Habilite el privilegio elevado "Ejecutar como administrador" para PowerShell de forma predeterminada

Si ejecuta con frecuencia scripts de PowerShell como administrador, puede resultarle tedioso hacer clic en "Sí" cada vez que aparece el mensaje UAC (Control de cuentas de usuario). Afortunadamente, hay una manera de omitir el mensaje y abrir PowerShell automáticamente en modo administrador.

Para ejecutar automáticamente el script de PowerShell como administrador sin que se le solicite, cree un acceso directo a su consola de PowerShell en su escritorio.

  1. Haga clic con el botón derecho en el acceso directo "SharePoint 2013 Management Shell" (o Windows PowerShell) y haga clic en Propiedades.
  2. Haga clic en el botón "Avanzado" debajo de la pestaña Acceso directo
  3. Habilite "Ejecutar como administrador" y haga clic en el botón "Aceptar".

Ejecute PowerShell como administrador en tareas programadas:

El programador de tareas le permite programar secuencias de comandos para que se ejecuten en momentos o eventos específicos, permitiéndoles ejecutarse con privilegios administrativos. Si está programando un script de PowerShell, asegúrese de seleccionar la casilla de verificación "Ejecutar con los privilegios más altos". De lo contrario, su tarea programada puede ejecutarse desatendida, invocando un mensaje de UAC. Para hacer esto,

  1. Abra el Programador de tareas y cree una nueva tarea.
  2. En la pestaña General, asigne un nombre y una descripción a la tarea y seleccione "Ejecutar con los privilegios más altos".
  3. En la pestaña Desencadenadores, especifique cuándo y con qué frecuencia se debe ejecutar la tarea.
  4. En la pestaña Acciones, seleccione "Iniciar un programa" y escriba "powershell.exe" en el campo Programa/script. Luego, agregue la ruta a su script de PowerShell en el campo Agregar argumentos (opcional).
  5. Finalmente, haga clic en "Aceptar" para guardar la tarea.

Más información sobre la creación de una tarea programada para ejecutar el script de PowerShell está aquí: ¿Cómo ejecutar un script de PowerShell usando el programador de tareas de Windows?

Manejar Ejecutar como administrador dentro del script de PowerShell:
¡Manejemos esto en nuestro código de PowerShell, incluso si olvida usar la opción "Ejecutar como administrador"!


Function Check-RunAsAdministrator()
{
  #Get current user context
  $CurrentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
 
  #Check user is running the script is member of Administrator Group
  if($CurrentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator))
  {
       Write-host "Script is running with Administrator privileges!"
  }
  else
    {
       #Create a new Elevated process to Start PowerShell
       $ElevatedProcess = New-Object System.Diagnostics.ProcessStartInfo "PowerShell";

       # Specify the current script path and name as a parameter
       $ElevatedProcess.Arguments = "& '" + $script:MyInvocation.MyCommand.Path + "'"

       #Set the Process to elevated
       $ElevatedProcess.Verb = "runas"

       #Start the new elevated process
       [System.Diagnostics.Process]::Start($ElevatedProcess)

       #Exit from the current, unelevated, process
       Exit

    }
}

#Check Script is running with Elevated Privileges
Check-RunAsAdministrator

#Place your script here.
write-host "Welcome"

Agregue este código al comienzo de su secuencia de comandos.

Ejecute como un usuario diferente en los scripts de PowerShell:


$credential = New-Object System.Management.Automation.PsCredential("Domain\UserID", (ConvertTo-SecureString "Password" -AsPlainText -Force))
Start-Process powershell -Credential $credential -NoNewWindow

¿Cómo ejecutar PowerShell como administrador desde el símbolo del sistema?

Para ejecutar PowerShell como administrador en la línea de comando:

  1. Haga clic en el icono de inicio de Windows >> Escriba "Cmd" para iniciar el símbolo del sistema.
  2. Escriba: PowerShell para ingresar a la consola de PowerShell
  3. Ahora, escriba: Iniciar proceso PowerShell -Verb RunAs

Por cierto, podría haber más razones por las que “La granja local no es accesible. Los cmdlets con FeatureDependencyId no están registrados”, como por ejemplo:

  • Compatibilidad de la versión de .Net Framework (SharePoint 2010 no es compatible con .Net Framework 4.xx), agregue "-version 2" a la línea de comando para resolverlo.
  • Es posible que el administrador que haya iniciado sesión no sea miembro de la función "SharePoint_Shell_Access". (Ejecute el cmdlet “Add-SPShellAdmin” para resolver: https://www.sharepointdiary.com/2014/07/the-local-farm-is-not-accessible-cmdlets-with-featuredependencyid-are-not-registered-powershell -error.html)
Otra solución para abordar este problema: ¡Desactive UAC! Aquí se explica cómo: ¿Cómo deshabilitar UAC en Windows Server 2012/2008?

Conclusión

A menudo es necesario ejecutar un script de PowerShell como administrador para ejecutar tareas que requieren privilegios elevados. Si sigue los pasos descritos en este artículo, puede iniciar fácilmente PowerShell con derechos administrativos y ejecutar su script. Esto garantiza que tenga los permisos necesarios para realizar modificaciones avanzadas del sistema, instalar software o administrar recursos según sea necesario.

Preguntas frecuentes:

¿Cómo ejecuto PowerShell como administrador en Windows 10?

Desde el Explorador de archivos de Windows 10, puede seleccionar cualquier archivo de PowerShell (.ps1) >> Haga clic en el menú “Archivo” >> Abra Windows PowerShell >> Abra Windows PowerShell como administrador.

¿Cómo se ejecuta PowerShell como administrador desde una línea de comandos?

Para ejecutar PowerShell como administrador desde cmd, abra el símbolo del sistema, escriba PowerShell y luego ingrese "Start-Process powershell -Verb RunAs". Esto abrirá una nueva ventana de PowerShell con privilegios de administrador.

¿Puedes ejecutar PowerShell sin derechos de administrador?

Sí, puede ejecutar PowerShell sin derechos de administrador. Para hacerlo, simplemente abra el menú Inicio, escriba "PowerShell" en la barra de búsqueda y haga clic en "Windows PowerShell". Sin embargo, cualquier operación del sistema, como cambiar la configuración del sistema, realizar modificaciones en el registro o instalar software, etc., requiere PowerShell en derechos de administrador.

¿Cómo se detecta si PowerShell se está ejecutando como administrador?

Utilice “([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)”. Esto devolverá "Verdadero" si PowerShell se está ejecutando como administrador y "Falso" si no es así.

¿Cómo ejecutar PowerShell como administrador desde un archivo por lotes?

Uso: powershell -noprofile -command “&{ start-process powershell -ArgumentList ‘-noprofile -file C:\script\psfile.ps1’ -verb RunAs}”

¿Cómo ejecuto PowerShell como administrador de forma remota?

Cuando ejecuta comandos de forma remota, se ejecutan con privilegios administrativos porque solo los administradores pueden ejecutarlos de forma remota en PowerShell.

Artículos relacionados