【问题标题】:Issue in importing .Net library in powershell script在 powershell 脚本中导入 .Net 库时出现问题
【发布时间】:2026-02-09 11:15:02
【问题描述】:

我正在尝试使用 powershell 创建一个 GUI 页面。该脚本适用于 powershell 版本 4.0 。但是尝试在 poweshell 3.0 版中执行它时会引发异常

$return = button "Enter Parameters" "Enter Domain" "Enter User" "Enter Server" 
function button ($title,$domain, $user, $Server) { 

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


$form = New-Object "System.Windows.Forms.Form"; 
$form.Width = 500; 
$form.Height = 150; 
$form.Text = $title; 
$form.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen; 

$textLabel1 = New-Object "System.Windows.Forms.Label"; 
$textLabel1.Left = 25; 
$textLabel1.Top = 15; 

例外:

At C:\Users\rights.ps1:16 char:35
+ [void][System.Reflection.Assembly]LoadWithPartialName( System.Windows.Forms)
+                                   ~~~~~~~~~~~~~~~~~~~
Unexpected token 'LoadWithPartialName' in expression or statement.
At C:\Users\rights.ps1:17 char:35
+ [void][System.Reflection.Assembly]LoadWithPartialName( Microsoft.VisualBasic)
+                                   ~~~~~~~~~~~~~~~~~~~
Unexpected token 'LoadWithPartialName' in expression or statement.
At C:\Users\rights.ps1:23 char:67
+     $form.StartPosition = [System.Windows.Forms.FormStartPosition]CenterScreen;
+                                                                   ~~~~~~~~~~~~

谁能帮我解决这个问题。

【问题讨论】:

  • 看起来可能是编码问题 - 如果您将代码复制粘贴到记事本中并将其保存为编码为“ANSI”或“Unicode”的新脚本会发生什么?
  • 我还找到了this answerthis blog。归结为您可以尝试Add-Type 而不是LoadWithPartialName。那为什么你在 PS 4.0 中没有问题我真的不能说..
  • @MathiasR.Jessen...谢谢..用不同的编码保存它对我有用..

标签: powershell


【解决方案1】:

要在命名空间中使用方法,您需要在 ] 末尾加上双引号。前任。 [System.Windows.Forms.FormStartPosition]::CenterScreen()

【讨论】:

  • [system.windows.forms.formstartposition]::CenterScreen 是一个枚举值,而不是一个方法。见here
  • 干杯@Theo,周围没有windows框,但要知道的好信息!