0

Привет, я новичок в powershell, я ищу Get-WmiObject -Class Win32_Product для вывода в форме GUI. Спасибо заранее.Get Get-WmiObject -Class Win32_Product Выход на форме GUI

Ниже приведен код, мне нужно добавить ярлык к кнопкам и назначить функцию каждой кнопке.

Метка: Удаление Функция: Удаление

Start-Process Powershell -verb RunAs # Загрузить Windows Forms сборки [аннулируются] [System.Reflection.Assembly] :: LoadWithPartialName ("System.Windows.Forms") [ void] [System.Windows.Forms.Application] :: EnableVisualStyles() # Создать GUI $ form = New-Object System.Windows.Forms.Form $ form.Size = New-Object System.Drawing.Size (920 500) $ form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle] :: Fixed3D $ form.StartPosition = [System.Windows.Forms.FormStartPosition] :: CenterScreen $ dataGridView = New-Object System.Windows.Forms.DataGridView $ dataGridView.Size = New-Object System.Drawing.Size (900,400) $ button = New-Object System.Windows.Forms.Button $ button.Location = New-Object System.Drawing .Size (400,420) $ button.Size = New-Object System.Drawing.Size (75,25) $ button.text = "Удалить" $ form.Controls.Add ($ button) $ form.Controls.Add ($ dataGridView) # Выберите соответствующие столбцы $ dataGridView.Columns.Insert (0, (New-Object System.Windows.Forms.DataGridViewButtonCell)) $ dataGridView.ColumnCount = 8 $ dataGridView.ColumnHeadersVisible = $ true $ dataGridView.Columns [0] .Name = «Удалить» $ dataGridView.Columns [1] .Name = "Описание" $ dataGridView.Columns [2] .Name = "IdentifyingNumber" $ dataGridView.Columns [3] .Name = "Name" $ ​​dataGridView.Columns [4]. Name = "Vendor" $ dataGridView.Columns [5] .Name = "Version" $ dataGridView.Columns [6] .Name = "Caption" $ dataGridView.Columns [7] .Name = "InstallLocation" $ dataGridView.Columns [0 ] .width = 40 $ dataGridView.Columns [1] .width = 200 # Получить список элементов < # Get-WmiObject -Class Win32_Product | Еогеасп {$ dataGridView.Rows.Add ($ .Проверить, $ .description, $ .IdentifyingNumber, $ .Name, $ .Vendor, $ .Version, $ .Caption, $ .InstallLocation) | out-null} #> # Функция обновления gridClick() {$ rowIndex = $ dataGridView.CurrentRow.Index $ columnIndex0 = $ dataGridView.ColumnIndex + 1 $ columnIndex1 = $ dataGridView.ColumnIndex + 2 $ columnIndex2 = $ dataGridView.ColumnIndex + 3 $ columnIndex3 = $ dataGridView.ColumnIndex + 4 $ columnIndex5 = $ dataGridView.ColumnIndex + 5 # Write-Host $ rowIndex # Write-Host $ columnIndex0 # Write-Host $ dataGridView.Rows [$ rowIndex] .Cells [0] .value Write- Host $ dataGridView.Rows [$ rowIndex] .Cells [$ columnIndex0] .value Write-Host $ dataGridView.Rows [$ rowIndex] .Cells [$ columnIndex1] .value Write-Host $ dataGridView.Rows [$ rowIndex] .Cells [ $ columnIndex5] .value # $ IdentifyNumber = $ dataGridView.Rows [$ rowIndex] .Cells [$ ClassKey] .value # $ Name = $ dataGridView.Rows [$ rowIndex] .Cells [$ columnIndex0] .value # $ classKey = ' IdentifyingNumber = $ IdentifyingNumber.value, Name = $ Name.value, Version = $ Version.value '# Write-Host $ classKey # ([wmi] "\ $ server \ root \ cimv2: Win32_Product. $ ClassKey"). Uninstall ()} $ Uninstall = $ dataGridView.Add_CellMouseClick ({gridCl Ick}) # Показать форму [пустота] $ Form.ShowDialog()

+1

Какой Powershell версии? Маркировка определенной версии означает, что желательно, чтобы решение, которое работает * только * на этой версии. Поскольку PS2/3/4 совершенно разные, пометка всех этих объектов может оказаться нецелесообразной. – vonPryz

+0

Какую форму GUI вы ищете, во всяком случае?Будет ли «Out-GridView» достаточно хорошим? – vonPryz

+0

Спасибо за ответ .. Out-Gridview справедлив для меня, но Matt Szadziul ans - это то, что я ищу. – Deep

ответ

0

Это может быть немного излишним, но вы всегда можете создать настраиваемую форму GUI и краски выход в GridView контроля, как это:

# Load Windows Forms assembly 

[void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
[void][System.Windows.Forms.Application]::EnableVisualStyles() 

# Create a GUI 

$form = New-Object System.Windows.Forms.Form 
$form.Size = New-Object System.Drawing.Size(920,500) 
$form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::Fixed3D 
$form.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen 
$dataGridView = New-Object System.Windows.Forms.DataGridView 
$dataGridView.Size = New-Object System.Drawing.Size(900,400) 
$button = New-Object System.Windows.Forms.Button 
$button.Location = New-Object System.Drawing.Size(400,420) 
$button.Size = New-Object System.Drawing.Size(75,25) 
$button.Text = "Refresh" 
$form.Controls.Add($button) 
$form.Controls.Add($dataGridView) 

# Select appropriate columns 

$dataGridView.ColumnCount = 7 
$dataGridView.ColumnHeadersVisible = $true 
$dataGridView.Columns[0].Name = "Description" 
$dataGridView.Columns[1].Name = "IdentifyingNumber" 
$dataGridView.Columns[2].Name = "Name" 
$dataGridView.Columns[3].Name = "Vendor" 
$dataGridView.Columns[4].Name = "Version" 
$dataGridView.Columns[5].Name = "Caption" 
$dataGridView.Columns[6].Name = "InstallLocation" 

$dataGridView.Columns[0].width = 240 

# Get a list of items 

Get-WmiObject -Class Win32_Product | foreach { 
    $dataGridView.Rows.Add($_.Description,$_.IdentifyingNumber,$_.Name,$_.Vendor,$_.Version,$_.Caption,$_.InstallLocation) | out-null 
} 

# Refresh 

$button.Add_Click({ 

    $dataGridView.Rows.Clear() 

    start-sleep -s 1 

Get-WmiObject -Class Win32_Product | foreach { 
    $dataGridView.Rows.Add($_.Description,$_.IdentifyingNumber,$_.Name,$_.Vendor,$_.Version,$_.Caption,$_.InstallLocation) | out-null 
} 

}) 

# Add a cell click function 

function cellClick(){ 
$rowIndex = $dataGridView.CurrentRow.Index 
$columnIndex = $dataGridView.CurrentCell.ColumnIndex 
$value = $dataGridView.Rows[$rowIndex].Cells[$columnIndex].value 
write-host $value 
} 

$dataGridView.Add_CellMouseClick({cellClick}) 

# Show the form 

[void]$form.ShowDialog() 
+0

Большое спасибо Мэтт это было потрясающе ... – Deep

+0

Рад я мог помочь :) –

+0

Эй, Мэтт, вы можете помочь мне прочитать отдельные данные из сетки для выбранных ячеек. Я изменил сценарий, где мне нужно выбрать элемент и удалить приложение. Я застрял в чтении выбранного элемента. – Deep

3

Вы можете использовать этот метод, чтобы увидеть GUI сетки:

gwmi -Class win32_product | Out-GridView 

, а также вы можете получить пользовательский вывод, как XML и CSV и json и другой форме и использовать для этого специальное программное обеспечение.

 Смежные вопросы

  • Нет связанных вопросов^_^