Búsqueda de sitios web

PowerShell: cree un acceso directo gráfico en el escritorio con información de la computadora y vincúlelo al sistema de tickets (servicio de asistencia)


Como administrador, no solo eres responsable de asignar políticas de grupo o de hacer de policía que siempre vigila lo que los usuarios hacen o no. Una parte importante de sus deberes es asegurarse de que sus usuarios puedan trabajar lo más cómodamente posible. De esto se trata esta publicación de blog. Le mostraré un ejemplo de código que crea un icono de acceso directo gráfico en el escritorio. Con este ícono de escritorio, los usuarios pueden obtener información sobre su computadora y, si es necesario, un enlace al sistema de tickets de TI.

El objetivo

El objetivo es hacer que esta pantalla aparezca cuando un usuario hace clic en un acceso directo en su escritorio.

Todo esto contribuye al hecho de que el usuario puede recuperar fácilmente información sobre su computadora y comunicarse con el servicio de asistencia técnica con esta información.

Lo que me lleva a la siguiente parte. Se trata del código detrás de esta ventana emergente.

El código (Windows Forms)

Puede crear una ventana emergente en PowerShell de dos formas principales: VB y WindowsForms. Decidí utilizar Windows Forms, por lo que el siguiente código está escrito con Forms.

Notas importantes

Código probado en PowerShell 5.1 y PowerShell 7.

Seguramente desea personalizar el código de muestra. He preparado algunos consejos útiles y una referencia a las líneas que conviene adaptar.

Línea 9: editar encabezado

Línea 12: edición del ícono en la parte superior izquierda (si falta el ícono, se usa el ícono predeterminado)

Línea 29,30: editar texto del enlace e hipervínculo al sistema de ayuda

Y finalmente, aquí está el código.

Cópielo en su editor favorito, como PowerShell ISE o VS Code.


$ErrorActionPreference = "SilentlyContinue"

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$font = New-Object System.Drawing.Font("Arial", 9)

$form = New-Object System.Windows.Forms.Form
$form.Text = 'Computer-Info'
$form.Size = New-Object System.Drawing.Size(325,225)
$form.StartPosition = 'CenterScreen'
$form.Icon = 'C:\users\patri\OneDrive\Bilder\favicon.ico'

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(120,150)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = 'OK'
$OKButton.TextAlign = 'MiddleCenter'
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)

$LinkLabel = New-Object System.Windows.Forms.LinkLabel
$LinkLabel.Location = New-Object System.Drawing.Point(81,110)
$LinkLabel.Size = New-Object System.Drawing.Size(280,20)
$LinkLabel.Font = $font
$LinkLabel.LinkColor = "BLUE"
$LinkLabel.ActiveLinkColor = "RED"
$LinkLabel.Text = "Ticketsystem"
$LinkLabel.add_Click({[system.Diagnostics.Process]::start("https://sid-500.com")})
$Form.Controls.Add($LinkLabel)

$hostn = New-Object System.Windows.Forms.Label
$hostn.Location = New-Object System.Drawing.Point(10,10)
$hostn.Size = New-Object System.Drawing.Size(280,20)
$hostn.Font = $font
$hostn.Text = "Computer: $(hostname)"
$form.Controls.Add($hostn)

$os = New-Object System.Windows.Forms.Label
$os.Location = New-Object System.Drawing.Point(10,90)
$os.Size = New-Object System.Drawing.Size(280,20)
$os.Font = $font
$os.Text = "OS: $((Get-CimInstance win32_operatingsystem).Caption.Trimstart('Microsoft '))"
$form.Controls.Add($os)

$mac = New-Object System.Windows.Forms.Label
$mac.Location = New-Object System.Drawing.Point(10,50)
$mac.Size = New-Object System.Drawing.Size(280,20)
$mac.Font = $font
$mac.Text = "MAC: $((Get-NetAdapter | Where-Object Status -EQ 'up').MacAddress)"
$form.Controls.Add($mac)

$user = New-Object System.Windows.Forms.Label
$user.Location = New-Object System.Drawing.Point(10,30)
$user.Size = New-Object System.Drawing.Size(280,20)
$user.Font = $font
$user.Text = "User: $env:username"
$form.Controls.Add($user)

$ip = New-Object System.Windows.Forms.Label
$ip.Location = New-Object System.Drawing.Point(10,70)
$ip.Size = New-Object System.Drawing.Size(280,20)
$ip.Font = $font
$ip.Text = "IP: $((Get-NetAdapter | Where-Object Status -EQ 'up' | Get-NetIPAddress -AddressFamily IPv4).IPAddress)"
$form.Controls.Add($ip)

$help = New-Object System.Windows.Forms.Label
$help.Location = New-Object System.Drawing.Point(10,110)
$help.Font = $font
$help.Size = New-Object System.Drawing.Size(280,20)
$help.Text = "Help:"
$form.Controls.Add($help)

$form.Topmost = $true

$form.ShowDialog()

Ahora es su turno de distribuir el código como un enlace a sus estaciones de trabajo a través de GPO.

Artículos relacionados