Создавать консоли администратора PowerShell из панели Windows - PullRequest
0 голосов
/ 14 июля 2020

Мне нужно открывать различные консоли PowerShell локального администратора много раз в день. Если я буду держать одну консоль открытой весь день, это нормально, но если она закрывается, мой пароль администратора, управляемый политикой, обычно истек, поэтому, если мне придется позже открыть другую консоль, я должен go в процессе запроса, чтобы получить Пароль администратора и повторно запрашивать его каждый час для моей рабочей среды, что тратит много времени.

Мне бы очень хотелось что-то, что находится в лотке и никогда не закрывается, но которое может порождать несколько процессов, все с правами локального администратора, с которых я его начал. Таким образом, я могу запросить пароль локального администратора утром, затем открыть этот процесс или инструмент в области уведомлений с этим паролем, а затем я могу создать несколько консолей Admin PowerShell (или, возможно, другие процессы, которые мне нужны, например, управление дисками или что-то еще) из там без необходимости повторно запрашивать пароли администратора каждый час, тратя много времени и производительности.

Может быть, это может быть сценарий PowerShell или какой-то известный инструмент, который может действовать как средство запуска приложений из панели задач / область уведомлений, которую я могу повторно использовать для консолей PowerShell или других приложений и т. д. c. Возможно, даже это можно сделать, создав консоль PowerShell, которая никогда не закрывается (как-то (!), Хотя я понятия не имею, как это сделать, где, возможно, 'x' в правом верхнем углу или ввод 'exit' в консоли не закроет ее но вместо этого просто минимизирует эту консоль обратно в системный лоток, готовая всплывать с правами администратора всякий раз, когда мне это нужно).

Я не нашел ничего, что могло бы достичь этого, но это было бы невероятно полезно в моей рабочей среде (и, вероятно, для других типов администраторов DevOps / Sys, которым нужно тратить время на бюрократические c препятствия, которые они заставляют нас преодолевать) и был бы признателен за некоторые указатели в этом отношении.

1 Ответ

1 голос
/ 14 июля 2020

Вы можете довольно легко создать значок в системном трее с помощью Forms, и вы можете запустить его от имени администратора, чтобы иметь правильные права:

# 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 затем использует отображение / скрытие вместо того, чтобы каждый раз запускать новый - вы можете включить управление этим в меню правой кнопки мыши. Попробуйте и разместите код здесь, на SO, если вы застряли.

...