windows - tiempo - script automatico
La secuencia de comandos Powershell en la computadora remota no se ejecuta como una tarea programada (2)
Correr como SISTEMA es probablemente su problema: no tendrá ningún acceso fuera de la PC que se esté ejecutando.
Cuando lo ejecute manualmente, tendrá acceso.
Tengo un script en mi dominio almacenado en el servidor de Active Directory. cada máquina en el dominio tiene una tarea que cuando se dispara, llama a este script para que se ejecute.
La ejecución de la tarea desde el servidor AD funciona. Ejecutar la tarea desde otra máquina no funciona. Sin embargo, ¿funciona el comando que se desencadena desde cmd manualmente en la computadora remota?
¿Alguien podría arrojar algo de luz sobre esto? Básicamente lo llamo así para que el disparador esté configurado como ...
Acción: PowerShell.exe
Argumentos: -noprofile -ExecutionPolicy Bypass -File "// <> NameOfADServer <> / C $ / Tasks / script.ps1" "Argument 1" "Argument 2"
Hay varios problemas aquí.
- Está ejecutando la tarea como las cuentas del sistema local. El sistema generalmente no tiene acceso a ningún recurso de red.
- Está utilizando el recurso compartido administrativo (
//<servername>/C$
) para compartir el script. Solo los usuarios que tienen acceso de administrador al servidor pueden acceder a los recursos compartidos administrativos. Las participaciones administrativas están muy restringidas por diseño y no puede modificar el acceso en ellas.
Supongo que el script funciona cuando lo ejecutas manualmente porque usa las credenciales del usuario actual para el acceso a la red cuando lo haces, pero no me cites sobre eso.
La solución más simple con la menor cantidad de cambios es hacer esto:
- Crea un grupo en Active Directory. Agregue las cuentas de Computadora, o, preferiblemente, grupos con cuentas de Computadora que desee que puedan ejecutar la secuencia de comandos a este nuevo grupo. Si realmente desea que cualquier cuenta SYSTEM en cualquier computadora del dominio pueda ejecutar la secuencia de comandos, puede agregar el grupo "Equipos de dominio" al grupo.
- Crea una carpeta en el servidor. Coloque la secuencia de comandos en la carpeta. No coloque nada en esta carpeta que no desee que sus usuarios lean. Asigne el permiso "Leer" NTFS al grupo creado anteriormente en la carpeta.
- Comparte la carpeta. Conceda al grupo que acaba de crear el acceso compartido "Control total". Si lo desea, puede convertirlo en un recurso compartido oculto al agregar un signo de dólar al final del nombre.
- Actualice sus tareas programadas para usar
//<servername>/<sharename>/script.ps1
.
Es casi seguro que este no es el mejor método para lograr lo que realmente está tratando de hacer, pero esta es probablemente la mejor forma de usar tareas programadas ejecutando scripts en un recurso compartido de red con la cuenta SYSTEM.