【发布时间】:2019-12-20 22:12:50
【问题描述】:
我在 WinForm 上有一个按钮。单击按钮后,将调用一个函数,该函数应执行 Get-ADUser cmdlet。
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Data
Import-Module ActiveDirectory
$ctl_frm_aduserlist = New-Object System.Windows.Forms.Form -Property @{
Size = New-Object System.Drawing.Size(500,500)
StartPosition = "CenterScreen" }
$ctl_btn_generatepreview = New-Object System.Windows.Forms.Button -Property @{
Size = New-Object System.Drawing.Size(200,30)
Location = New-Object System.Drawing.Point(10,30)
Text = "Generate Preview" }
$ctl_frm_aduserlist.Controls.Add($ctl_btn_generatepreview)
$ctl_btn_generatepreview.Add_Click({ GeneratePreview })
function GeneratePreview(){
Write-Host "GO"
Get-ADUser -Identity "user123" -Properties Name,SamAccountName | select Name,SamAccountName
Write-Host "END" }
$ctl_frm_aduserlist.ShowDialog()
单击按钮只会执行两个“Write-Host”cmdlet。
如果我只在 ISE 控制台中执行单行 Get-ADUser,它会起作用并且我会得到用户对象。 为什么Get-ADUser在按钮触发时不起作用?
谢谢
【问题讨论】:
-
请添加您的 WinForms 按钮的代码
-
尝试将 GeneratePreview()-Function 放在 Add-Type 行之后。
-
@LuttiCoelho 代码在那里..
-
@f6a4 我把它放在那里并再次尝试。还是不行
-
在 ISE 中,默认输出到主机控制台。在表单中,您不会告诉对象“去哪里”。将输出通过管道传输到“Out-Host”以获得您想要的结果。
标签: winforms powershell