2016-09-26 2 views
0

Ich habe ein Formular erstellt und CheckBoxes und CheckBox-Namen dynamisch hinzugefügt. Wie kann ich programmgesteuert eine bestimmte CheckBox von der Get-LicenseDetails Funktion überprüfen? Fehlende Klammer wurde hinzugefügt.Wie greife ich auf CheckBoxes von einer Funktion zu

import-module MSOnline 

Function Get-LicenseDetails { 
    Param ($upn) 
    $licenses = Get-MsolUser -UserPrincipalName $upn 
    ForEach ($license in $licenses.Licenses) { 
     If ($license.AccountSkuId -like '*ENTERPRISEPACK') { 
      $serviceName = $serviceStatus.ServicePlan.ServiceName 
      $checkBox.Checked = $true 
     } 
    } 
} 

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

$System_Drawing_Point = New-Object System.Drawing.Point 
Add-Type -AssemblyName System.Windows.Forms 
$form = New-Object Windows.Forms.Form 
$form.Text = "Office 365 Licensing" 
$form.Name = "Form1" 
$form.Size = New-Object Drawing.Size @(316, 510) 

#SEARCH BUTTON 
$searchBtn = New-Object System.Windows.Forms.Button 
$System_Drawing_Point.X = 226 
$System_Drawing_Point.Y = 38 
$searchBtn.Location = $System_Drawing_Point 
$searchBtn.add_click({Get-LicenseDetails "[email protected]"}) 
$searchBtn.Size = New-Object System.Drawing.Size(67, 23) 
$searchBtn.Text = "Click Me" 
$form.Controls.Add($searchBtn) 

#CHECKBOXES 
$y = 80 
$Services = (Get-MsolAccountSku | Where-Object {$_.SkuPartNumber -eq "ENTERPRISEPACK"}).ServiceStatus.ServicePlan.ServiceName 
ForEach ($service in $Services) { 
    $checkbox = New-Object System.Windows.Forms.CheckBox 
    $checkbox.Text = $service 
    $checkbox.Name = "CheckBox_$service" 
    $checkbox.Size = New-Object System.Drawing.Size(260,17) 
    $checkbox.Location = New-Object System.Drawing.Size(10,$y) 
    $y += 25 
    $form.Controls.Add($checkbox) 
} 

$drc = $form.ShowDialog() 

Antwort

0

Zunächst einmal sind Sie eine eckige Klammer fehlt, wo Sie die System.Drawing Assembly laden.

Sie können auf die CheckBox im Get-LicenseDetails zugreifen, indem Sie sie entweder an die Funktion übergeben oder mit $global: darauf zugreifen. Ich würde jedoch keine GUI-Elemente an diese Funktion übergeben. Stattdessen würde ich ein Modell (neues Objekt) erstellen und dieses an die Get-LicenseDetails-Methode übergeben.

0

OK, ich habe es herausgefunden. Ich habe diese Zeilen in der Funktion verwendet:

$checkBoxName = "CheckBox_" + $serviceName 
$checkbox = $form.Controls | Where-Object {$_.name -eq $checkBoxName} 
$checkbox.Checked = $true 
Verwandte Themen