Ejecutar scripts de PowerShell a través de HTML - AYUDA

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.

3 respuestas

[Dal] Mensajes publicados 6122 Fecha de registro   Estado Colaborador Última intervención   1 108
 
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
template-infos.html
contiene un
<div>
que debe contener el nombre de la máquina. Pones
zzzNOMMACHINEzzz
en 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.html
que 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
2
allybrbs Mensajes publicados 7 Estado Miembro
 
Primero, muchas gracias, ¡tu idea es genial!

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.
0
[Dal] Mensajes publicados 6122 Fecha de registro   Estado Colaborador Última intervención   1 108
 
Mi idea es, en base, la misma que la de jordane45. Es tu script de Powershell el que produce el html deseado, excepto que lo que te propongo es reutilizar tus archivos existentes para hacer plantillas.

Bien, supongamos que tienes un archivo
template-info.html
, que contiene esto:

<!doctype html> <html lang=fr> <head> <meta charset=utf-8> <title>Infos</title> </head><body> <div class="row"> <div class="cell">NOM de la machine</div> <div class="cell">zzzNOMMACHINEzzz</div> </div> </body> </html>

y un script de Powershell en el mismo directorio que contiene esto:

$nommachine = 'Allybrbs' cat template-infos.html | %{$_ -replace "zzzNOMMACHINEzzz",$nommachine} > infos.html

La ejecución del script de Powershell debería producir un archivo
infos.html
en el mismo directorio que contiene:

<!doctype html> <html lang=fr> <head> <meta charset=utf-8> <title>Infos</title> </head><body> <div class="row"> <div class="cell">NOM de la machine</div> <div class="cell">Allybrbs</div> </div> </body> </html>

Por lo tanto, tendrás dos archivos. Un archivo
template-info.html
que contiene tu plantilla intacta y un archivo
infos.html
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:
  • cat template-infos.html
    lee el contenido del archivo
    template-infos.html
    en el directorio actual y lo envía a la salida estándar; por lo tanto, este archivo debe existir
  • |
    redirige la salida estándar a la siguiente cadena de comandos que sigue
  • %{$_ -replace "zzzNOMMACHINEzzz",$nommachine}
    busca todas las ocurrencias de
    zzzNOMMACHINEzzz
    y las reemplaza por el contenido de la variable
    $nommachine
    - 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 lugares
  •  > infos.html
    crea un nuevo archivo en el directorio actual denominado
    infos.html
    que contiene el resultado; no puedes poner el mismo nombre de archivo, además necesitarás la plantilla original si deseas regenerar el archivo porque alguna característica de la máquina pudo haber cambiado


Puedes 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!
1
[Dal] Mensajes publicados 6122 Fecha de registro   Estado Colaborador Última intervención   1 108
 
Estos procedimientos generan información estática, el contenido del archivo html no cambia cuando las características de la máquina cambian, a menos que se generen nuevamente archivos html a partir de los modelos.

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
0
allybrbs Mensajes publicados 7 Estado Miembro
 
Hola,

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! :)
0
jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
 
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
0
allybrbs Mensajes publicados 7 Estado Miembro
 
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...
0
jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830 > allybrbs Mensajes publicados 7 Estado Miembro
 
Entonces...

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....
0
allybrbs Mensajes publicados 7 Estado Miembro > jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención  
 
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...
0
jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830 > allybrbs Mensajes publicados 7 Estado Miembro
 
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....



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.
0
allybrbs Mensajes publicados 7 Estado Miembro > jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención  
 
En este punto, no estoy en absoluto de acuerdo, pero ese no es el tema aquí.

Sé lo que es un html, dije que no sabía que era posible hacer uno en PowerShell. Sabes, tengo habilidades básicas y sé cosas, así que no es necesario que me hagas pasar por un tonto.

Gracias por el enlace.
0
jordane45 Mensajes publicados 30426 Fecha de registro   Estado Moderador Última intervención   4 830
 
0