Forms Powershell:创建动态表单

Forms Powershell:创建动态表单,forms,powershell,dynamic,Forms,Powershell,Dynamic,我尝试创建一个带有目录名的按钮的动态表单。单击按钮应获取目录名并对其进行处理 代码SINPED: {function convert_it($arg) $dir = "$source\$arg" $dir_liste = Get-ChildItem $dir | Where-Object {$_.mode -match "d"} $dir_count_total = $dir_liste.count ... ... ... } foreach ($di

我尝试创建一个带有目录名的按钮的动态表单。单击按钮应获取目录名并对其进行处理

代码SINPED:

{function convert_it($arg)

    $dir = "$source\$arg"
    $dir_liste =  Get-ChildItem $dir | Where-Object {$_.mode -match "d"} 
    $dir_count_total = $dir_liste.count

...

...

...

}



foreach ($dir in $dir_list)

{   
# Button
if ($split_count -eq 25){
    $x=250
    $y=50
}
elseif ($split_count -eq 50){
    $x=500
    $y=50
}

$dir_numbers = (get-childitem -Path $source\$dir -recurse | where-object { 
$_.PSIsContainer }).Count

$run = New-Object System.Windows.Forms.Button
$run.Location = New-Object System.Drawing.Size($x,$y)
$run.Size = New-Object System.Drawing.Size(100,20)
if ($dir_numbers -eq 0) {
    $run.Enabled = $false
}
$run.Text = "#$dir_count -> $dir -> $dir_numbers"

$run.Add_Click({ convert_it($dir) }.GetNewClosure())

$testForm.Controls.Add($run)
$Font = New-Object System.Drawing.Font("Times New Roman",14,
[System.Drawing.FontStyle]::Regular)
$run.font = $Font
$run.AutoSize = $True
$y+=30
$split_count+=1
$dir_count+=1

}







$testForm.ShowDialog()
运行脚本时,出现以下错误:

convert_-it:术语“convert_-it”不能识别为cmdlet、函数、脚本文件或可操作程序的名称。检查名称的拼写或路径是否正确 包括,请验证路径是否正确,然后重试

  • $run.Add_Click({convert_it($dir)}.GetNewClosure())
  • ~~~~~~~~~~
    • CategoryInfo:ObjectNotFound:(转换:字符串)[],CommandNotFoundException
    • FullyQualifiedErrorId:CommandNotFoundException
我错在哪里了

$run.Add_Click({ convert_it $dir }.GetNewClosure())

看起来您的函数的左括号位置不正确(应该在行的末尾而不是开头(这使它成为一个脚本块)

应该是这样的:

function convert_it($arg) {

    $dir = "$source\$arg"
    $dir_liste =  Get-ChildItem $dir | Where-Object {$_.mode -match "d"} 
    $dir_count_total = $dir_liste.count
    ...
}