Edge html pagina scripten en bijwerken vanuit Powershell

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • thanx
  • Registratie: Oktober 2002
  • Laatst online: 20-02 14:17
Tot nu toe heb ik vaak een HTML statuspagina getoond als een script loopt, bijvoorbeeld tijdens voor een user login script in Windows.

In grote lijnen gebruik ik dan deze opzet. (voorbeeld vanuit vbs)
Start explorer:
code:
1
2
Set oExplorer = CreateObject ("InternetExplorer.Application")
    oExplorer.Navigate "about:blank"


Als het script draait kun je status info verzamelen....
code:
1
sStatus = sStatus & "<p>" & "Update Outlook signature completed" & "</p>"


Vervang bij iedere statusupdate de InnerHTML
code:
1
oExplorer.Document.Body.InnerHTML = sStatus


En als het script klaar is, dan sluit ik ook het HTML statusscherm
code:
1
oExplorer.Quit



Het HTML scherm kan full screen getoond worden op de desktop, met een mooie opmaak.

En dan de vraag....
Ik zou dit graag omzetten naar Edge en Powershell maar ik loop een beetje vast.


Edge starten vanuit Powershell lukt nog wel, bijvoorbeeld met het commando
code:
1
Start-Process -FilePath ($Env:WinDir + "\explorer.exe") -ArgumentList "shell:Appsfolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge"
 

Maar is er ook een goede manier om de DOM en/of InnerHTML te sturen vanuit Powershell? Of is er een betere manier om statusupdates op een mooie manier te tonen?

Beste antwoord (via thanx op 11-08-2020 14:30)


  • Diumelia
  • Registratie: Augustus 2010
  • Laatst online: 04-06 22:26
Voeg een stukje javascript toe die periodiek de pagina refresht? Zo kan je prima het bestand overschrijven. Styling is dan weer met CSS op te lossen.
Je geeft aan geen developer te zijn, dus dit lijkt mij een haalbare manier.

Wil je persé met WPF werken, dan helpt dit je misschien op weg: https://4sysops.com/archi...wershell-script-with-wpf/

Alle reacties


Acties:
  • 0 Henk 'm!

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

Je zou de .NET MessageBox kunnen gebruiken: https://michlstechblog.in...rshell-show-a-messagebox/

There's no place like 127.0.0.1


Acties:
  • +1 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Wat mij betreft liever niet. Een MessageBox is een verschrikkelijk irritant UI-ding, het blokkeert je script van verdere uitvoer tot de gebruiker op OK klikt (of welke knop dan ook), en TS wil een statuswindow dat vanuit code geüpdatet kan worden. Een MessageBox is hier dus niet de juiste oplossing.

@TS, wil je dit omdat het iets toevoegt voor je gebruikers, of omdat je het cool vindt om te maken? Een login-script mag wat mij betreft hooguit een paar seconden draaien, en het opstarten van een browser om de status ervan te tonen, verdubbelt de uitvoertijd en verveelvoudigt de chaos op je scherm tijdens het inloggen. Ik zou het niet hoeven.

On-topic, je zou met een paar regels PowerShell een WinForms-form kunnen tonen met een multiline TextBox, en daar je data in schrijven...

[ Voor 64% gewijzigd door CodeCaster op 28-07-2020 16:00 ]

https://oneerlijkewoz.nl
Het ergste moet nog komen / Het leven is een straf / Een uitgestrekte kwelling van de wieg tot aan het graf


Acties:
  • +1 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 04-06 15:39
Met Edge gaat dit niet lukken (in ieder geval niet op een "elegante" manier) simpelweg omdat Edge geen COM interface exposed itt IE.
De makkelijkste oplossing om toch een GUI te presenteren: winforms of WPF gebruiken (beiden hebben overigens een browser control waar je ook je HTML in kan plaatsen en updaten)

Acties:
  • 0 Henk 'm!

  • Kontsnorretje
  • Registratie: Augustus 2011
  • Laatst online: 14-06-2024
Afhankelijk van je use case kun je ook kijken naar Toast notificaties. Stukken minder vervelend dan een messagebox, en toch hoef je dan geen eigen GUI in elkaar te flansen.

Acties:
  • 0 Henk 'm!

  • thanx
  • Registratie: Oktober 2002
  • Laatst online: 20-02 14:17
Als aanvulling op bovenstaande....

De keuze voor HTML is er mede gekomen omdat we dan ook andere berichten op een gemakkelijke manier mee kunnen sturen. Bijvoorbeeld belangrijk nieuws, een gewonnen project, etc.
Een toast of een simpele msgbox is dan wel een stap terug.

Een statische HTML pagina is bij het opstarten nog wel mee te geven. Maar de voorkeur gaat uit naar een dynamische HTML pagina. En om Edge voor iedere nieuwe statusmelding te herstarten met de gewijzigde pagina is ook geen lekker alternatief.

@CodeCaster
Loginscripts mogen idd niet lang duren. 99% van de tijd zijn deze binnen 1 seconde afgerond. Maar sommige complexe processen vragen meer tijd. En bij belangrijk nieuws kunnen we de HTML pagina ook een minimale tijd laten staan, bijvoorbeeld 2 of 3 seconden. Dat is ruim voldoende voor het overbrengen van een belangrijke boodschap. (Het is ook niet het enige communicatiekanaal)

Acties:
  • 0 Henk 'm!

  • thanx
  • Registratie: Oktober 2002
  • Laatst online: 20-02 14:17
@Killah_Priest
Klinkt interessant. Ik ben geen programmeur. Is het lastig om zoiets op te starten vanuit Powershell?
Heb je misschien een voorzetje?

Acties:
  • 0 Henk 'm!

  • Archie_T
  • Registratie: Januari 2002
  • Laatst online: 23:12
Ik gebruikte vroeger altijd HTA voor dat soort dingen, geen idee of dat nog steeds mogelijk is?

Acties:
  • 0 Henk 'm!

  • Diumelia
  • Registratie: Augustus 2010
  • Laatst online: 04-06 22:26
Is het geen optie om de HTML weg te schrijven naar een bestand en dit dan als argument meegeven bij het starten van Edge? Ik ben geen held in Powershell, maar ik vermoed dat je dan ook wel een PID te pakken kan krijgen om het process later weer te stoppen.

Acties:
  • 0 Henk 'm!

  • thanx
  • Registratie: Oktober 2002
  • Laatst online: 20-02 14:17
@Diumelia
HTML wegschrijven naar een bestand kan, maar dan kun je niet dynamisch updaten.
Ik weet ook nog niet of het mogelijk is om dan de interface te verbergen, muis een wacht-icoon te geven, etc.

IE kun je prima extern besturen via het com-object.
Misschien niet de beste browser, maar dit was dan wel weer een hele fijne optie. :)

Acties:
  • 0 Henk 'm!

  • Josk79
  • Registratie: September 2013
  • Laatst online: 21:35
Je kunt een lokaal webservertje draaien en in de browser pollen of bijv. websockets gebruiken.

Acties:
  • Beste antwoord
  • +2 Henk 'm!

  • Diumelia
  • Registratie: Augustus 2010
  • Laatst online: 04-06 22:26
Voeg een stukje javascript toe die periodiek de pagina refresht? Zo kan je prima het bestand overschrijven. Styling is dan weer met CSS op te lossen.
Je geeft aan geen developer te zijn, dus dit lijkt mij een haalbare manier.

Wil je persé met WPF werken, dan helpt dit je misschien op weg: https://4sysops.com/archi...wershell-script-with-wpf/

Acties:
  • 0 Henk 'm!

  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 02-06 18:46

edeboeck

mie noow noooothing ...

Diumelia schreef op woensdag 29 juli 2020 @ 00:59:
Voeg een stukje javascript toe die periodiek de pagina refresht? Zo kan je prima het bestand overschrijven. Styling is dan weer met CSS op te lossen.
Je geeft aan geen developer te zijn, dus dit lijkt mij een haalbare manier.
Wat @Diumelia zegt. Voor de refresh heb je zelfs geen JS nodig: meta-attribuut refresh volstaat (https://www.w3.org/TR/WCAG20-TECHS/H76.html)
Pagina: 1