从Windows托盘生成PowerShell管理控制台

从Windows托盘生成PowerShell管理控制台,powershell,console,launcher,system-tray,app-launcher,Powershell,Console,Launcher,System Tray,App Launcher,我需要每天多次打开各种本地管理PowerShell控制台。如果我一整天都打开一个控制台,那很好,但如果关闭了,我的策略控制的管理员密码通常已经过期,因此如果我以后必须打开另一个控制台,我必须进入请求过程以获取管理员密码,并为我的工作环境每小时重新请求一次,这浪费了很多时间 我真的很想一些东西,坐在托盘中,永远不会关闭,但它可以产生多个进程,所有与本地管理权限,我开始它。这样,我可以在早上请求一个本地管理员密码,然后用该密码打开这个系统托盘进程或工具,然后我可以生成多个Admin PowerShe

我需要每天多次打开各种本地管理PowerShell控制台。如果我一整天都打开一个控制台,那很好,但如果关闭了,我的策略控制的管理员密码通常已经过期,因此如果我以后必须打开另一个控制台,我必须进入请求过程以获取管理员密码,并为我的工作环境每小时重新请求一次,这浪费了很多时间

我真的很想一些东西,坐在托盘中,永远不会关闭,但它可以产生多个进程,所有与本地管理权限,我开始它。这样,我可以在早上请求一个本地管理员密码,然后用该密码打开这个系统托盘进程或工具,然后我可以生成多个Admin PowerShell控制台(或者可能是我需要的其他进程,如磁盘管理等)从那里开始,无需每小时重新请求管理员密码,浪费大量时间和生产力

可能这是一个PowerShell脚本,或者某人知道的某个工具,可以作为系统托盘/通知区域中的应用程序启动器,我可以将其重新用于PowerShell控制台或其他应用程序等。甚至可以通过创建一个永不关闭的PowerShell控制台来实现(不知何故(!)虽然我不知道如何做到这一点,但可能右上角的“x”或在控制台中键入“exit”不会关闭它,而是会将控制台最小化,使其返回到系统托盘中,以便在需要时随时弹出具有管理员权限的窗口)


我还没有发现任何东西能够实现这一点,但它在我的工作环境中会非常有用(可能对于其他需要在官僚障碍上浪费时间的DevOps/Sys管理员类型来说,他们会让我们跳过这些障碍)并希望在这方面提供一些指导。

您可以使用表单轻松创建系统托盘图标,并且可以作为管理员运行该图标,以获得正确的权限:

# Load Assemblies
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$MyIcon = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command powershell).Path)

# Create Primary form
$objForm = New-Object System.Windows.Forms.Form
$objForm.Visible = $false
$objForm.WindowState = "minimized"
$objForm.ShowInTaskbar = $false
$objForm.add_Closing({ $objForm.ShowInTaskBar = $False })
#
$objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon
$objNotifyIcon.Icon = $MyIcon
$objNotifyIcon.Text = "TrayUtility"
$objNotifyIcon.Visible = $true
#
$objContextMenu = New-Object System.Windows.Forms.ContextMenu
#
# Build the context menu
# Create Menu Item
$ToggleMenuItem1 = New-Object System.Windows.Forms.MenuItem
$ToggleMenuItem1.Index = 1
$ToggleMenuItem1.Text = "Menu Item 1"
$ToggleMenuItem1.add_Click({
    # Action when selected
})

# Create an Exit Menu Item
$ExitMenuItem = New-Object System.Windows.Forms.MenuItem
$ExitMenuItem.Index = 5
$ExitMenuItem.Text = "E&xit"
$ExitMenuItem.add_Click({
    $objForm.Close()
    $objNotifyIcon.visible = $false
})
# Add the Menu Items to the Context Menu
$objContextMenu.MenuItems.Add($ToggleMenuItem1) | Out-Null
$objContextMenu.MenuItems.Add($ExitMenuItem) | Out-Null
#
# Assign the Context Menu
$objNotifyIcon.ContextMenu = $objContextMenu
$objForm.ContextMenu = $objContextMenu

# Show the Form - Keep it open
$objForm.ShowDialog() | Out-Null
$objForm.Dispose()
可以肯定的是,我在某个地方看到过这样的代码:启动一个PS管理员窗口,然后使用show/hide,而不是每次都尝试启动一个新窗口——你可以在图标右键单击菜单中加入对它的控制
给它一个尝试,并在这里张贴代码,这样如果你卡住了。

我创建了3个菜单项,带有开始进程,然后是“powershell.exe”、“explorer.exe”、“regedit.exe”,然后作为管理员启动该工具。这对我来说非常有用(不仅在这里,还有许多其他任务)。非常感谢。