Ejecutar scripts de PowerShell a través de HTML - AYUDA
allybrbs
Mensajes publicados
7
Estado
Miembro
-
allybrbs Mensajes publicados 7 Estado Miembro -
allybrbs Mensajes publicados 7 Estado Miembro -
Bonjour,
Debo crear una página de intranet para mis compañeros de trabajo que agrupe la información de su PC personal.
Me explico: para las intervenciones técnicas, debo tener en el centro de software una página intranet en HTML que reproduzca información específica de un post en tiempo real (ver captura de pantalla del centro de software). Por lo tanto, en cada PC (gracias a SCCM) habrá un enlace del código que se reproducirá en el centro de software.
Para lograr esto, primero creé scripts en PowerShell para recuperar la información, y luego codifiqué la página web en HTML.
Ahora que está hecho, me gustaría integrar mis scripts en mi código, es decir: el script es ejecutado por el HTML que reproduce la información en la página web (en una tabla, exactamente).
Sin embargo, no encuentro cómo integrar mi script. He leído algunas ideas con los comandos "exec", "pcntl_exec", "passthru" o "system", pero no entiendo cómo integrarlos, etc.
SABIENDO QUE: debo usar únicamente herramientas ya instaladas con el sistema operativo Win10. El centro de software muestra SOLAMENTE páginas HTML, y el tiempo de carga debe ser rápido o nulo (sin solicitud de conexión ni nada).
Aquí está el centro de software (en lugar de la página de Google, habrá mi HTML):
Aquí está uno de mis scripts (hay 8 en total):
Aquí está mi código HTML - Me gustaría agregar el script en lugar de los "____" que están en amarillo:
Aquí está el sitio - Y entonces en lugar de los "____" me gustaría tener el resultado del script de PowerShell:
Y aquí está lo que me muestran los resultados encontrados... :
¿Tendría algún tutorial, idea o consejo que pueda darme? ¿O una forma diferente de hacerlo aparte de HTML, o incluso PHP? Ver un ejemplo de código directamente (lo que me ayudaría mucho ya que soy un novato en código)... O BIEN ¿puedo recuperar esa información y reproducirla únicamente con HTML (sin pasar por PowerShell)?
Le agradezco de antemano y no dude en preguntar cualquier cosa
Me disculpo por adelantado si no estoy en el foro correcto.
Debo crear una página de intranet para mis compañeros de trabajo que agrupe la información de su PC personal.
Me explico: para las intervenciones técnicas, debo tener en el centro de software una página intranet en HTML que reproduzca información específica de un post en tiempo real (ver captura de pantalla del centro de software). Por lo tanto, en cada PC (gracias a SCCM) habrá un enlace del código que se reproducirá en el centro de software.
Para lograr esto, primero creé scripts en PowerShell para recuperar la información, y luego codifiqué la página web en HTML.
Ahora que está hecho, me gustaría integrar mis scripts en mi código, es decir: el script es ejecutado por el HTML que reproduce la información en la página web (en una tabla, exactamente).
Sin embargo, no encuentro cómo integrar mi script. He leído algunas ideas con los comandos "exec", "pcntl_exec", "passthru" o "system", pero no entiendo cómo integrarlos, etc.
SABIENDO QUE: debo usar únicamente herramientas ya instaladas con el sistema operativo Win10. El centro de software muestra SOLAMENTE páginas HTML, y el tiempo de carga debe ser rápido o nulo (sin solicitud de conexión ni nada).
Aquí está el centro de software (en lugar de la página de Google, habrá mi HTML):
Aquí está uno de mis scripts (hay 8 en total):
Aquí está mi código HTML - Me gustaría agregar el script en lugar de los "____" que están en amarillo:
Aquí está el sitio - Y entonces en lugar de los "____" me gustaría tener el resultado del script de PowerShell:
Y aquí está lo que me muestran los resultados encontrados... :
¿Tendría algún tutorial, idea o consejo que pueda darme? ¿O una forma diferente de hacerlo aparte de HTML, o incluso PHP? Ver un ejemplo de código directamente (lo que me ayudaría mucho ya que soy un novato en código)... O BIEN ¿puedo recuperar esa información y reproducirla únicamente con HTML (sin pasar por PowerShell)?
Le agradezco de antemano y no dude en preguntar cualquier cosa
Me disculpo por adelantado si no estoy en el foro correcto.
3 respuestas
Hola allybrbs,
Como tus archivos html parecen estar ya hechos, podrías insertar marcadores en lugar de la información a mostrar, y usar Powershell para reemplazar los marcadores por la información que deseas poner y utilizarlos como plantillas. Así, utilizas tus archivos html como plantillas para generar los archivos html llenos de la información deseada.
Por ejemplo, digamos que el archivo
Luego, en tu script de Powershell donde determinas el nombre de la máquina que pones en una variable llamada, por ejemplo,
(no probado, no estoy en Windows)
y has creado un archivo
Es solo una idea... para hacer lo que deseas a partir de lo que ya parece que has hecho.
Dal
Como tus archivos html parecen estar ya hechos, podrías insertar marcadores en lugar de la información a mostrar, y usar Powershell para reemplazar los marcadores por la información que deseas poner y utilizarlos como plantillas. Así, utilizas tus archivos html como plantillas para generar los archivos html llenos de la información deseada.
Por ejemplo, digamos que el archivo
template-infos.htmlcontiene un
<div>que debe contener el nombre de la máquina. Pones
zzzNOMMACHINEzzzen el lugar donde debe aparecer.
Luego, en tu script de Powershell donde determinas el nombre de la máquina que pones en una variable llamada, por ejemplo,
$nommachine, haces algo como:
cat template-infos.html | %{$_ -replace "zzzNOMMACHINEzzz",$nommachine} > infos.html (no probado, no estoy en Windows)
y has creado un archivo
infos.htmlque puede ser mostrado por un navegador o un intérprete html, integrando la información en la página estática, a partir de
template-infos.html.
Es solo una idea... para hacer lo que deseas a partir de lo que ya parece que has hecho.
Dal
Hola,
Ya... el html no ejecuta ningún script...
El html es un lenguaje de descripción (no de programación) que permite indicar a un navegador de internet cómo está estructurado el contenido que se debe mostrar.
Luego, veo que en tu código tienes PHP.
Ahí... hay que saber que el php se ejecuta del lado del SERVIDOR y no del lado del usuario.
En cuanto a obtener directamente la información del puesto del usuario... ninguna página web, por razones de seguridad evidentes..., puede hacerlo.
Lo que me cuesta entender... es por qué quieres "recuperar" la información cuando el usuario visite la página... ¿es eso correcto?
En lógica, para la gestión de un parque, los scripts de recuperación de información (como los que has escrito en powershell) se ejecutan automáticamente en todos los puestos del usuario (a través de una GPAO -> active directory) o, si no, realizando este lanzamiento al inicio del ordenador.
Esta información se centraliza posteriormente en una base de datos.
A partir de ahí... puedes recuperar la información (en php, por ejemplo) y mostrarla en tu página web.
Pero cuando veo el ejemplo de resultado devuelto... tengo la impresión de que el php no está interpretado...
Tus páginas web... ¿están alojadas localmente en el ordenador del usuario o en un servidor? ¿servidor en el que se ha instalado Apache/PHP y que está en funcionamiento?
en fin... muchas incoherencias en tu solicitud, y seguramente en tus investigaciones/pruebas...
Gracias por aclarar lo mejor posible:
- Las necesidades
- Las limitaciones
- El entorno (SO... servidor web..., ubicación de los archivos..... etc...)
--
Atentamente,
Jordane
Ya... el html no ejecuta ningún script...
El html es un lenguaje de descripción (no de programación) que permite indicar a un navegador de internet cómo está estructurado el contenido que se debe mostrar.
Luego, veo que en tu código tienes PHP.
Ahí... hay que saber que el php se ejecuta del lado del SERVIDOR y no del lado del usuario.
En cuanto a obtener directamente la información del puesto del usuario... ninguna página web, por razones de seguridad evidentes..., puede hacerlo.
Lo que me cuesta entender... es por qué quieres "recuperar" la información cuando el usuario visite la página... ¿es eso correcto?
En lógica, para la gestión de un parque, los scripts de recuperación de información (como los que has escrito en powershell) se ejecutan automáticamente en todos los puestos del usuario (a través de una GPAO -> active directory) o, si no, realizando este lanzamiento al inicio del ordenador.
Esta información se centraliza posteriormente en una base de datos.
A partir de ahí... puedes recuperar la información (en php, por ejemplo) y mostrarla en tu página web.
Pero cuando veo el ejemplo de resultado devuelto... tengo la impresión de que el php no está interpretado...
Tus páginas web... ¿están alojadas localmente en el ordenador del usuario o en un servidor? ¿servidor en el que se ha instalado Apache/PHP y que está en funcionamiento?
en fin... muchas incoherencias en tu solicitud, y seguramente en tus investigaciones/pruebas...
Gracias por aclarar lo mejor posible:
- Las necesidades
- Las limitaciones
- El entorno (SO... servidor web..., ubicación de los archivos..... etc...)
--
Atentamente,
Jordane
Hola Jordane45,
Bueno, creo que las necesidades, limitaciones, etc. están bien definidas: debo crear una página web en html que muestre (en mi tabla) información técnica de una máquina para los equipos de intervención. Esta página se mostrará luego en el centro de software (que solo muestra páginas html). Debo utilizar únicamente material que ya está en la computadora con Win10 (así que no software ni otros, y algunas computadoras están en Win7) y la ubicación de los archivos será en cada máquina gracias a SCCM, como mencioné anteriormente.
No veo qué más debería agregar, ya se ha dicho todo..
Sin embargo, todas las páginas web obtienen la información de nuestras computadoras, todas sin excepción. Si otros pueden hacerlo, yo también debería poder hacerlo.. Especialmente porque aquí son empleados, por lo que no hay ningún problema de seguridad, son solo información aleatoria como el nombre de la máquina, la dirección ip, capacidades de los discos, etc.
No veo qué es lo que no entiendes.. Cuando el usuario vaya al centro de software, toda la información estará agrupada, ¿qué no está claro???
Una vez más, no hay servidor, porque es una página en local en cada pc a través de SCCM.
Si no hay base de datos, no veo cómo puedo usar tu técnica, especialmente porque debo ceñirme al principio de una página intranet.
Creo que has leído mal mi tema porque la mayoría de las cosas que pides ya han sido dadas o especificadas.
Gracias por darme tu solución concreta si tienes una, porque por ahora, desafortunadamente, no entiendo a dónde quieres llegar...
Bueno, creo que las necesidades, limitaciones, etc. están bien definidas: debo crear una página web en html que muestre (en mi tabla) información técnica de una máquina para los equipos de intervención. Esta página se mostrará luego en el centro de software (que solo muestra páginas html). Debo utilizar únicamente material que ya está en la computadora con Win10 (así que no software ni otros, y algunas computadoras están en Win7) y la ubicación de los archivos será en cada máquina gracias a SCCM, como mencioné anteriormente.
No veo qué más debería agregar, ya se ha dicho todo..
Sin embargo, todas las páginas web obtienen la información de nuestras computadoras, todas sin excepción. Si otros pueden hacerlo, yo también debería poder hacerlo.. Especialmente porque aquí son empleados, por lo que no hay ningún problema de seguridad, son solo información aleatoria como el nombre de la máquina, la dirección ip, capacidades de los discos, etc.
No veo qué es lo que no entiendes.. Cuando el usuario vaya al centro de software, toda la información estará agrupada, ¿qué no está claro???
Una vez más, no hay servidor, porque es una página en local en cada pc a través de SCCM.
Si no hay base de datos, no veo cómo puedo usar tu técnica, especialmente porque debo ceñirme al principio de una página intranet.
Creo que has leído mal mi tema porque la mayoría de las cosas que pides ya han sido dadas o especificadas.
Gracias por darme tu solución concreta si tienes una, porque por ahora, desafortunadamente, no entiendo a dónde quieres llegar...
Entonces...
Entonces no puedes ejecutar lenguajes como PHP (como en los ejemplos que has probado).
Sabiendo que justo antes indicaste
Mira lo que significa intranet...
Puedes entender mi mala comprensión visto los errores que introdujiste en tu explicación...
Sin hablar de los ejemplos que probaste que contienen PHP...
Las páginas web... ¿cuáles???
Pero dado que los archivos HTML se colocarán directamente en el puesto del usuario...
¿No crees que estás abordando el problema al revés?
Creo que son los scripts los que crean los archivos HTML... y no el HTML el que "llama" a los scripts....
Una vez más, no hay servidor, ya que es una página local en cada PC a través del SCCM.
Si no hay base de datos, no veo cómo puedo utilizar tu técnica, sobre todo porque debo mantenerme en el principio de una página intranet.
Entonces no puedes ejecutar lenguajes como PHP (como en los ejemplos que has probado).
Sabiendo que justo antes indicaste
tener una página intranet
Mira lo que significa intranet...
Creo que debiste leer mal mi tema porque la mayoría de las cosas que pides ya están dadas o especificadas.
Puedes entender mi mala comprensión visto los errores que introdujiste en tu explicación...
Sin hablar de los ejemplos que probaste que contienen PHP...
Sin embargo, todas las páginas web recuperan la información de nuestras PCs, todas sin excepción. Si otros pueden hacerlo, yo también debería poder hacerlo...
Las páginas web... ¿cuáles???
Pero dado que los archivos HTML se colocarán directamente en el puesto del usuario...
¿No crees que estás abordando el problema al revés?
Creo que son los scripts los que crean los archivos HTML... y no el HTML el que "llama" a los scripts....
Pero justamente, ¡no uso un servidor ya que la página se almacenará a nivel de SCCM, así que no veo cuál es el problema! Sé lo que significa intranet, ¡y tengo una! No soy tonto tampoco, gracias.
Ciertamente hay errores, es normal, por eso estoy aquí, pero toda la información ya se había dado...
Cuando digo todas las páginas web, me refiero a todas. Cualquier sitio.
No me sirve de nada, no lo conozco, pido ayuda, así que no sé.
Nunca he creado un html con PowerShell, no sabía que era posible y te confieso que me cuesta imaginarlo...
Ciertamente hay errores, es normal, por eso estoy aquí, pero toda la información ya se había dado...
Cuando digo todas las páginas web, me refiero a todas. Cualquier sitio.
No me sirve de nada, no lo conozco, pido ayuda, así que no sé.
Nunca he creado un html con PowerShell, no sabía que era posible y te confieso que me cuesta imaginarlo...
Entonces NO, todas las páginas web no recuperan información de tu ordenador... lejos de eso.
Pueden conocer
el navegador / sistema operativo utilizado (por ejemplo, a través de Javascript)
la dirección IP PÚBLICA (eso es del lado del lenguaje del servidor... como en PHP)
y eso es todo...
no hay dirección MAC
no hay el tamaño de tus discos
no hay el consumo de CPU / RAM... o cualquier otra información de este tipo....
Un archivo HTML no es más que un archivo de texto escrito de una manera determinada...
Por lo tanto, podemos crear archivos de texto en PowerShell sin problema...
Pero bueno... mira el enlace que te di para los HTA. Eso podría resolver tu problema.
Pueden conocer
el navegador / sistema operativo utilizado (por ejemplo, a través de Javascript)
la dirección IP PÚBLICA (eso es del lado del lenguaje del servidor... como en PHP)
y eso es todo...
no hay dirección MAC
no hay el tamaño de tus discos
no hay el consumo de CPU / RAM... o cualquier otra información de este tipo....
Nunca he creado HTML con PowerShell, no sabía que era posible y te confieso que me cuesta imaginarlo...
Un archivo HTML no es más que un archivo de texto escrito de una manera determinada...
Por lo tanto, podemos crear archivos de texto en PowerShell sin problema...
Pero bueno... mira el enlace que te di para los HTA. Eso podría resolver tu problema.
Por si acaso... intenta dirigirte hacia los archivos hta
https://social.technet.microsoft.com/wiki/contents/articles/2166.how-to-add-a-graphical-user-interface-to-a-powershell-script-by-using-html-applications.aspx
--
Atentamente,
Jordane
https://social.technet.microsoft.com/wiki/contents/articles/2166.how-to-add-a-graphical-user-interface-to-a-powershell-script-by-using-html-applications.aspx
--
Atentamente,
Jordane
Sin embargo, he probado y no aparece nada, me explico: en mi HTML he integrado "nom" en lugar de "____"
Luego, en un script de PowerShell he hecho la siguiente línea: cat web.html | %{$_ -replace "Nom",$nommachine} > web.html
(no tengo info.html porque no sé qué poner dentro... así que he puesto mi HTML base que es web.html) y después, una vez que lanzo la página, me muestra "Nom" y nada más...
Y además, cuando ejecuto el script de PowerShell, no hace nada y no muestra ningún nombre.
Bien, supongamos que tienes un archivo , que contiene esto:
y un script de Powershell en el mismo directorio que contiene esto:
$nommachine = 'Allybrbs' cat template-infos.html | %{$_ -replace "zzzNOMMACHINEzzz",$nommachine} > infos.htmlLa ejecución del script de Powershell debería producir un archivo en el mismo directorio que contiene:
Por lo tanto, tendrás dos archivos. Un archivo que contiene tu plantilla intacta y un archivo que es el archivo distinto producido a partir del primero que contiene la información integrada.
Te doy un ejemplo, con nombres tomados como ejemplos, y un nombre de máquina predeterminado, tú lo adaptas a tu código.
Varias observaciones:
%{$_ -replace "zzzNOMMACHINEzzz",$nommachine}busca todas las ocurrencias de y las reemplaza por el contenido de la variable - la búsqueda es sensible a mayúsculas y minúsculas ("nom" es diferente de "Nom"), dado que estás reemplazando todas las ocurrencias, es necesario utilizar un marcador consistente en una cadena que no se utilizará accidentalmente en otros lugaresPuedes ver el código en acción en este Try It Online simulando la lectura del archivo con un echo y sin la parte de escritura del archivo (el resultado es solo en output, dado las limitaciones del intérprete en línea).
No soy un experto en Powershell y hay, sin duda, formas diferentes que aprovechan mejor sus posibilidades, o más ortodoxas (aquí he mezclado comandos accesibles en batch clásico con Powershell). Los comentarios de otros contribuyentes son bienvenidos.
Además, al estar en Linux, mis medios para probar mis propias sugerencias son limitados :-)
¡Buena suerte en tu proyecto!
Deberías interesarte en el enlace proporcionado por jordane45, si deseas vincular html en forma de archivo .hta a la ejecución de Powershell.
No estoy familiarizado con estas tecnologías de Microsoft, pero este artículo explica cómo hacerlo a través de código VBScript. Probablemente deberías investigar más sobre el tema, ya que podría permitirte crear una verdadera página dinámica, cuyo contenido mostrado cambiaría si las características de la máquina han cambiado.
enlace de jordane45: https://social.technet.microsoft.com/wiki/contents/articles/2166.how-to-add-a-graphical-user-interface-to-a-powershell-script-by-using-html-applications.aspx
Ese es precisamente el objetivo... En cada PC la información es diferente (lógico), por lo que también necesitaría que el archivo cambiara. Así que si con tu técnica no cambia, lamentablemente no me ayudará.
Sí, ya estoy trabajando en el enlace de Jordane.
¡De nuevo gracias por tu idea, que guardaré porque es muy buena! :)