Hi,
Korte uitleg:
Wij maken gebruik van Windows-servers waar per gebruiker met een apart account op wordt ingelogd.
KA: JansenW
Server: AdminJansenW
Het admin-account heeft niet per definitie administrator-rechten. Standaard logt het "AdminJansenW" account in met gebruikersrechten. Pas als een medewerker vooraf administrator-rechten heeft aangevraagd, krijgt het AdminJansenW-account ook administratorrechten op de betreffende server.
Het wil voorkomen dat medewerkers vergeten deze rechten aan te vragen, aan de slag gaan en er gaandeweg achterkomen dat zij de benodigde rechten missen. Daarom heb ik een Powershell script gemaakt dat na het inloggen kort toont of er wel of geen administratorrechten zijn.
Ik gebruik het volgende stuk code om een messagebox te tonen:
(is nog niet helemaal opgeruimd maar gaat om de werking)
Het probleem dat ik ervaar is dat de messagebox vaak achter het Powershellscherm verdwijnt. Dit is verwarrend voor gebruikers.
Wat zoekwerk leverde op dat dit in de praktijk inderdaad "soms" kan gebeuren. Daarom ben ik op zoek gegaan naar methoden om de MsgBox "on top" te tonen. Hierbij stuit ik echter alleen op VisualBasic-voorbeelden, zoals de volgende.
Bij Microsoft kwam ik de "Interaction.MsgBox Method" tegen (MSDN: Interaction.MsgBox Method (Microsoft.VisualBasic)) met de remark "MsgBoxSetForeground". Maar ook dit zit binnen de "Microsoft.VisualBasic"- assembly.
Ik gebruik echter geen VisualBasic om de MsgBox aan te roepen maar "System.Windows.Forms". Ik las ook dat VisualBasic vooral voor backwards compatability redenen in PS aanwezig is en niet de voorkeur geniet.
Daarom ben ik verder gaan zoeken binnen de "MessageBox Class" (MSDN: MessageBox Class (System.Windows.Forms)). Daar heb ik het volgende achterhaald:
Gezien mijn bestaande script (bericht, titel, icoon, knoppen) denk ik dat ik het volgende nodig heb:
Ik weet echter niet hoe ik dit moet verwerken in mijn huidige script zodat de MsgBox altijd op de voorgrond staat.
Kan iemand hierin adviseren
?
Korte uitleg:
Wij maken gebruik van Windows-servers waar per gebruiker met een apart account op wordt ingelogd.
KA: JansenW
Server: AdminJansenW
Het admin-account heeft niet per definitie administrator-rechten. Standaard logt het "AdminJansenW" account in met gebruikersrechten. Pas als een medewerker vooraf administrator-rechten heeft aangevraagd, krijgt het AdminJansenW-account ook administratorrechten op de betreffende server.
Het wil voorkomen dat medewerkers vergeten deze rechten aan te vragen, aan de slag gaan en er gaandeweg achterkomen dat zij de benodigde rechten missen. Daarom heb ik een Powershell script gemaakt dat na het inloggen kort toont of er wel of geen administratorrechten zijn.
Ik gebruik het volgende stuk code om een messagebox te tonen:
(is nog niet helemaal opgeruimd maar gaat om de werking)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| # Achterhaal of gebruiker administrator is If (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(` [Security.Principal.WindowsBuiltInRole] "Administrator")) { # Laad mogelijkheid tot weergeven foutboxen en verberg laadinformatie [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | out-null # Toon melding en geef gebruiker de mogelijkheid om direct af te melden. $oReturn=[System.Windows.Forms.MessageBox]::Show(" $env:username`n`n If you click YES, you will continue with your current (user) rights.","Continue $env:username without administrator rights?",[System.Windows.Forms.MessageBoxButtons]::YesNo,[System.Windows.Forms.MessageBoxIcon]::Question) switch ($oReturn){ "Yes" { write-host "You pressed Yes" # Enter some code } "No" { write-host "You pressed No" shutdown -l } } |
Het probleem dat ik ervaar is dat de messagebox vaak achter het Powershellscherm verdwijnt. Dit is verwarrend voor gebruikers.
Wat zoekwerk leverde op dat dit in de praktijk inderdaad "soms" kan gebeuren. Daarom ben ik op zoek gegaan naar methoden om de MsgBox "on top" te tonen. Hierbij stuit ik echter alleen op VisualBasic-voorbeelden, zoals de volgende.
code:
1
2
3
| Add-Type -AssemblyName Microsoft.VisualBasic [Microsoft.VisualBasic.Interaction]::MsgBox('My message', 'YesNo,MsgBoxSetForeground,Information', 'MyTitle') |
Bij Microsoft kwam ik de "Interaction.MsgBox Method" tegen (MSDN: Interaction.MsgBox Method (Microsoft.VisualBasic)) met de remark "MsgBoxSetForeground". Maar ook dit zit binnen de "Microsoft.VisualBasic"- assembly.
Ik gebruik echter geen VisualBasic om de MsgBox aan te roepen maar "System.Windows.Forms". Ik las ook dat VisualBasic vooral voor backwards compatability redenen in PS aanwezig is en niet de voorkeur geniet.
Daarom ben ik verder gaan zoeken binnen de "MessageBox Class" (MSDN: MessageBox Class (System.Windows.Forms)). Daar heb ik het volgende achterhaald:
code:
1
| Show(IWin32Window, String) Displays a message box in front of the specified object and with the specified text. |
Gezien mijn bestaande script (bericht, titel, icoon, knoppen) denk ik dat ik het volgende nodig heb:
code:
1
| Show(IWin32Window, String, String, MessageBoxButtons, MessageBoxIcon, MessageBoxDefaultButton) Displays a message box in front of the specified object and with the specified text, caption, buttons, icon, and default button. |
Ik weet echter niet hoe ik dit moet verwerken in mijn huidige script zodat de MsgBox altijd op de voorgrond staat.
Kan iemand hierin adviseren
~ Information security professional & enthousiast ~ EC Twitter ~