Add-Type (Microsoft.PowerShell.Utility)
Add-Type
- โมดูล :
- Microsoft.PowerShell.Utility
เพิ่มคลาส Microsoft .NET ให้กับเซสชัน PowerShell
ไวยากรณ์
Add-Type
[-TypeDefinition] <String>
[-Language <Language>]
[-ReferencedAssemblies <String[]>]
[-OutputAssembly <String>]
[-OutputType <OutputAssemblyType>]
[-PassThru]
[-IgnoreWarnings]
[-CompilerOptions <String[]>]
[<CommonParameters>]Add-Type
[-Name] <String>
[-MemberDefinition] <String[]>
[-Namespace <String>]
[-UsingNamespace <String[]>]
[-Language <Language>]
[-ReferencedAssemblies <String[]>]
[-OutputAssembly <String>]
[-OutputType <OutputAssemblyType>]
[-PassThru]
[-IgnoreWarnings]
[-CompilerOptions <String[]>]
[<CommonParameters>]Add-Type
[-Path] <String[]>
[-ReferencedAssemblies <String[]>]
[-OutputAssembly <String>]
[-OutputType <OutputAssemblyType>]
[-PassThru]
[-IgnoreWarnings]
[-CompilerOptions <String[]>]
[<CommonParameters>]Add-Type
-LiteralPath <String[]>
[-ReferencedAssemblies <String[]>]
[-OutputAssembly <String>]
[-OutputType <OutputAssemblyType>]
[-PassThru]
[-IgnoreWarnings]
[-CompilerOptions <String[]>]
[<CommonParameters>]Add-Type
-AssemblyName <String[]>
[-PassThru]
[<CommonParameters>]คำอธิบาย
Add-Type cmdlet ช่วยให้คุณกำหนดคลาส Microsoft .NET Core ในเซสชัน PowerShell ของคุณ จากนั้นคุณสามารถยกตัวอย่างวัตถุได้โดยใช้ cmdlet New-Object และใช้วัตถุเช่นเดียวกับที่คุณใช้วัตถุ .NET Core ใดๆ หากคุณเพิ่มคำสั่ง Add-Type ลงในโปรไฟล์ PowerShell ของคุณ คลาสจะพร้อมใช้งานในเซสชัน PowerShell ทั้งหมด
คุณสามารถระบุประเภทได้โดยการระบุแอสเซมบลีหรือไฟล์ซอร์สโค้ดที่มีอยู่ หรือคุณสามารถระบุซอร์สโค้ดแบบอินไลน์หรือบันทึกไว้ในตัวแปรก็ได้ คุณยังสามารถระบุเฉพาะวิธีการและ Add-Type กำหนดและสร้างคลาสได้ บน Windows คุณสามารถใช้คุณสมบัตินี้เพื่อทำการเรียก Platform (P/Inrigg) ไปยังฟังก์ชันที่ไม่มีการจัดการใน PowerShell หากคุณระบุซอร์สโค้ด Add-Type จะคอมไพล์ซอร์สโค้ดที่ระบุและสร้างแอสเซมบลีในหน่วยความจำที่มีประเภท .NET Core ใหม่
คุณสามารถใช้พารามิเตอร์ของ Add-Type เพื่อระบุภาษาอื่นและคอมไพเลอร์ C# เป็นค่าเริ่มต้น ตัวเลือกคอมไพเลอร์ การพึ่งพาแอสเซมบลี เนมสเปซคลาส ชื่อของประเภท และแอสเซมบลีผลลัพธ์
เริ่มต้นใน PowerShell 7 Add-Type จะไม่คอมไพล์ประเภทหากมีประเภทที่มีชื่อเดียวกันอยู่แล้ว นอกจากนี้ Add-Type จะค้นหาแอสเซมบลีในโฟลเดอร์ ref ใต้โฟลเดอร์ที่มี pwsh.dll
ตัวอย่าง
ตัวอย่างที่ 1: เพิ่มประเภท .NET ให้กับเซสชัน
ตัวอย่างนี้เพิ่มคลาส BasicTest ให้กับเซสชันโดยการระบุซอร์สโค้ดที่จัดเก็บไว้ในตัวแปร คลาส BasicTest ใช้เพื่อเพิ่มจำนวนเต็ม สร้างวัตถุ และคูณจำนวนเต็ม
$Source = @"
public class BasicTest
{
public static int Add(int a, int b)
{
return (a + b);
}
public int Multiply(int a, int b)
{
return (a * b);
}
}
"@
Add-Type -TypeDefinition $Source
[BasicTest]::Add(4, 3)
$BasicTestObject = New-Object BasicTest
$BasicTestObject.Multiply(5, 2)ตัวแปร $Source เก็บซอร์สโค้ดสำหรับชั้นเรียน ประเภทนี้มีวิธีการแบบคงที่ที่เรียกว่า เพิ่ม และวิธีที่ไม่คงที่ที่เรียกว่า คูณ
Add-Type cmdlet เพิ่มคลาสในเซสชัน เนื่องจากใช้ซอร์สโค้ดอินไลน์ คำสั่งจึงใช้พารามิเตอร์ TypeDefinition เพื่อระบุโค้ดในตัวแปร $Source
วิธีการ เพิ่ม แบบคงที่ของคลาส BasicTest ใช้อักขระโคลอนคู่ (::) เพื่อระบุสมาชิกแบบคงที่ของชั้นเรียน จำนวนเต็มจะถูกบวกและแสดงผลรวม
New-Object cmdlet สร้างอินสแตนซ์ของคลาส BasicTest โดยจะบันทึกออบเจ็กต์ใหม่ในตัวแปร $BasicTestObject
$BasicTestObject ใช้เมธอด คูณ จำนวนเต็มจะถูกคูณและผลิตภัณฑ์จะปรากฏขึ้น
ตัวอย่างที่ 2: ตรวจสอบประเภทที่เพิ่ม
ตัวอย่างนี้ใช้ cmdlet Get-Member เพื่อตรวจสอบออบเจ็กต์ที่ cmdlet Add-Type และ New-Object สร้างขึ้นใน ตัวอย่างที่ 1 .
[BasicTest] | Get-Member
TypeName: System.RuntimeType
Name MemberType Definition
---- ---------- ----------
AsType Method type AsType()
Clone Method System.Object Clone(), System.Object ICloneable.Clone()
Equals Method bool Equals(System.Object obj), bool Equals(type o)
FindInterfaces Method type[] FindInterfaces(System.Reflection.TypeFilter filter...
...
[BasicTest] | Get-Member -Static
TypeName: BasicTest
Name MemberType Definition
---- ---------- ----------
Add Method static int Add(int a, int b)
Equals Method static bool Equals(System.Object objA, System.Object objB)
new Method BasicTest new()
ReferenceEquals Method static bool ReferenceEquals(System.Object objA, System.Object objB)
$BasicTestObject | Get-Member
TypeName: BasicTest
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
Multiply Method int Multiply(int a, int b)
ToString Method string ToString()Get-Member cmdlet รับประเภทและสมาชิกของคลาส BasicTest ที่ Add-Type เพิ่มในเซสชัน คำสั่ง Get-Member เปิดเผยว่าเป็นอ็อบเจ็กต์ System.RuntimeType ซึ่งได้มาจากคลาส System.Object
พารามิเตอร์ Get-Member Static รับคุณสมบัติคงที่และวิธีการของคลาส BasicTest ผลลัพธ์แสดงให้เห็นว่ามีการรวมวิธี Add ไว้ด้วย
Get-Member cmdlet รับสมาชิกของออบเจ็กต์ที่จัดเก็บไว้ในตัวแปร $BasicTestObject $BasicTestObject ถูกสร้างขึ้นโดยใช้ cmdlet New-Object พร้อมด้วยคลาส BasicTest ผลลัพธ์เผยให้เห็นว่าค่าของตัวแปร $BasicTestObject เป็นอินสแตนซ์ของคลาส BasicTest และมีสมาชิกชื่อ คูณ
ตัวอย่างที่ 3: เพิ่มประเภทจากชุดประกอบ
ตัวอย่างนี้เพิ่มคลาสจากแอสเซมบลี JsonSchema.NET.dll ไปยังเซสชันปัจจุบัน
Set-Location -Path $PSHOME
$AccType = Add-Type -AssemblyName *jsonschema* -PassThruSet-Location ใช้พารามิเตอร์ Path เพื่อระบุตัวแปร $PSHOME ตัวแปรอ้างอิงถึงไดเร็กทอรีการติดตั้ง PowerShell ซึ่งมีไฟล์ DLL อยู่
ตัวแปร $AccType เก็บวัตถุที่สร้างขึ้นด้วย cmdlet Add-Type Add-Type ใช้พารามิเตอร์ AssemblyName เพื่อระบุชื่อของแอสเซมบลี อักขระตัวแทนเครื่องหมายดอกจัน (*) ช่วยให้คุณได้ชุดประกอบที่ถูกต้อง แม้ว่าคุณจะไม่แน่ใจชื่อหรือตัวสะกดก็ตาม พารามิเตอร์ PassThru จะสร้างออบเจ็กต์ที่แสดงถึงคลาสที่เพิ่มในเซสชัน
ตัวอย่างที่ 4: เรียก Windows API ดั้งเดิม
ตัวอย่างนี้สาธิตวิธีการเรียก Windows API ดั้งเดิมใน PowerShell Add-Type ใช้กลไกการเรียกใช้แพลตฟอร์ม (P/Inrigg) เพื่อเรียกใช้ฟังก์ชันใน User32.dll จาก PowerShell ตัวอย่างนี้ใช้ได้กับคอมพิวเตอร์ที่ใช้ระบบปฏิบัติการ Windows เท่านั้น
$Signature = @"
[DllImport("user32.dll")]public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
"@
$addTypeSplat = @{
MemberDefinition = $Signature
Name = "Win32ShowWindowAsync"
Namespace = 'Win32Functions'
PassThru = $true
}
$ShowWindowAsync = Add-Type @addTypeSplat
# Minimize the PowerShell console
$ShowWindowAsync::ShowWindowAsync((Get-Process -Id $pid).MainWindowHandle, 2)
# Restore the PowerShell console
$ShowWindowAsync::ShowWindowAsync((Get-Process -Id $Pid).MainWindowHandle, 4)ตัวแปร $Signature เก็บลายเซ็น C# ของฟังก์ชัน ShowWindowAsync เพื่อให้แน่ใจว่าวิธีการผลลัพธ์จะปรากฏในเซสชัน PowerShell คำสำคัญ public จะถูกเพิ่มลงในลายเซ็นมาตรฐาน สำหรับข้อมูลเพิ่มเติม โปรดดูที่ฟังก์ชัน ShowWindowAsync
ตัวแปร $ShowWindowAsync จะจัดเก็บออบเจ็กต์ที่สร้างโดยพารามิเตอร์ Add-Type PassThru Add-Type cmdlet เพิ่มฟังก์ชัน ShowWindowAsync ให้กับเซสชัน PowerShell เป็นวิธีแบบคงที่ คำสั่งใช้พารามิเตอร์ MemberDefinition เพื่อระบุคำจำกัดความของวิธีการที่บันทึกไว้ในตัวแปร $Signature คำสั่งใช้พารามิเตอร์ ชื่อ และ เนมสเปซ เพื่อระบุชื่อและเนมสเปซสำหรับคลาส พารามิเตอร์ PassThru จะสร้างออบเจ็กต์ที่แสดงถึงประเภท
วิธีการคงที่ ShowWindowAsync ใหม่ถูกใช้ในคำสั่งเพื่อย่อขนาดและคืนค่าคอนโซล PowerShell วิธีการนี้ใช้พารามิเตอร์สองตัว: หมายเลขอ้างอิงของหน้าต่าง และจำนวนเต็มที่ระบุวิธีการแสดงหน้าต่าง
หากต้องการย่อขนาดคอนโซล PowerShell ให้เล็กสุด ShowWindowAsync จะใช้ Get-Process cmdlet พร้อมด้วยตัวแปรอัตโนมัติ $PID เพื่อรับกระบวนการที่โฮสต์ PowerShell ปัจจุบัน การประชุม. จากนั้นจะใช้คุณสมบัติ MainWindowHandle ของกระบวนการปัจจุบันและค่า 2 ซึ่งแสดงถึงค่า SW_MINIMIZE
หากต้องการคืนค่าหน้าต่าง ShowWindowAsync จะใช้ค่า 4 สำหรับตำแหน่งหน้าต่าง ซึ่งแสดงถึงค่า SW_RESTORE
หากต้องการขยายหน้าต่างให้ใหญ่สุด ให้ใช้ค่า 3 ที่แสดงถึง SW_MAXIMIZE
พารามิเตอร์
-AssemblyName
ระบุชื่อของแอสเซมบลีที่มีชนิดต่างๆ Add-Type รับประเภทจากชุดประกอบที่ระบุ พารามิเตอร์นี้จำเป็นเมื่อคุณสร้างประเภทตามชื่อแอสเซมบลี
ป้อนชื่อเต็มหรือชื่อธรรมดา หรือที่เรียกว่าชื่อบางส่วนของแอสเซมบลี อนุญาตให้ใช้อักขระตัวแทนในชื่อชุดประกอบ หากคุณป้อนชื่อที่เรียบง่ายหรือบางส่วน Add-Type จะแก้ไขให้เป็นชื่อเต็ม จากนั้นใช้ชื่อเต็มเพื่อโหลดแอสเซมบลี
การใช้พารามิเตอร์ Path หรือ LiteralPath รับประกันว่าคุณกำลังโหลดแอสเซมบลีที่คุณต้องการโหลด เมื่อคุณใช้พารามิเตอร์ AssemblyName PowerShell จะขอให้ .NET แก้ไขชื่อแอสเซมบลีโดยใช้กระบวนการแก้ไขแอสเซมบลี .NET มาตรฐาน เนื่องจาก .NET ค้นหาโฟลเดอร์แอปพลิเคชันก่อน Add-Type อาจโหลดแอสเซมบลีจาก $PSHOME แทนที่จะเป็นเวอร์ชันในโฟลเดอร์ปัจจุบัน สำหรับข้อมูลเพิ่มเติม โปรดดูสถานที่ประกอบ
หาก .NET ไม่สามารถแก้ไขชื่อได้ PowerShell จะค้นหาตำแหน่งปัจจุบันเพื่อค้นหาแอสเซมบลี เมื่อคุณใช้อักขระตัวแทนในพารามิเตอร์ AssemblyName กระบวนการแก้ไขแอสเซมบลี .NET ล้มเหลวทำให้ PowerShell ค้นหาในตำแหน่งปัจจุบัน
- พิมพ์ :
String[]
- นามแฝง :
AN
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
True
-CompilerOptions
ระบุตัวเลือกสำหรับคอมไพลเลอร์ซอร์สโค้ด ตัวเลือกเหล่านี้จะถูกส่งไปยังคอมไพเลอร์โดยไม่มีการแก้ไข
พารามิเตอร์นี้อนุญาตให้คุณสั่งให้คอมไพลเลอร์สร้างไฟล์ปฏิบัติการ ทรัพยากรที่ฝังไว้ หรือตั้งค่าตัวเลือกบรรทัดคำสั่ง เช่น ตัวเลือก /unsafe
- พิมพ์ :
String[]
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-IgnoreWarnings
ละเว้นคำเตือนของคอมไพเลอร์ ใช้พารามิเตอร์นี้เพื่อป้องกันไม่ให้ Add-Type จัดการกับคำเตือนของคอมไพเลอร์ว่าเป็นข้อผิดพลาด
- พิมพ์ :
SwitchParameter
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
False
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-Language
ระบุภาษาที่ใช้ในซอร์สโค้ด ค่าที่ยอมรับได้สำหรับพารามิเตอร์นี้คือ CSharp
- พิมพ์ :
ภาษา
- ค่าที่ยอมรับ:
ซีชาร์ป
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
ซีชาร์ป
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-LiteralPath
ระบุเส้นทางไปยังไฟล์ซอร์สโค้ดหรือไฟล์ DLL แอสเซมบลีที่มีประเภทต่างๆ ต่างจาก เส้นทาง ค่าของพารามิเตอร์ LiteralPath จะถูกใช้ตรงตามที่พิมพ์ทุกประการ ไม่มีอักขระใดที่ถูกตีความว่าเป็นไวด์การ์ด หากเส้นทางมีอักขระเลี่ยง ให้ใส่เครื่องหมายคำพูดเดี่ยว เครื่องหมายคำพูดเดี่ยวบอกให้ PowerShell ไม่ต้องตีความอักขระใดๆ เป็นลำดับหลีก
การใช้พารามิเตอร์ Path หรือ LiteralPath รับประกันว่าคุณกำลังโหลดแอสเซมบลีที่คุณต้องการโหลด
- พิมพ์ :
String[]
- นามแฝง :
PSPath, LP
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-MemberDefinition
ระบุคุณสมบัติหรือวิธีการใหม่สำหรับชั้นเรียน Add-Type สร้างโค้ดเทมเพลตที่จำเป็นในการสนับสนุนคุณสมบัติหรือเมธอด
บน Windows คุณสามารถใช้คุณสมบัตินี้เพื่อทำการเรียก Platform (P/Inrigg) ไปยังฟังก์ชันที่ไม่มีการจัดการใน PowerShell
- พิมพ์ :
String[]
- ตำแหน่ง:
1
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-Name
ระบุชื่อของคลาสที่จะสร้าง พารามิเตอร์นี้จำเป็นเมื่อสร้างประเภทจากคำจำกัดความสมาชิก
ชื่อประเภทและเนมสเปซต้องไม่ซ้ำกันภายในเซสชัน คุณไม่สามารถยกเลิกการโหลดประเภทหรือเปลี่ยนแปลงได้ หากต้องการเปลี่ยนรหัสสำหรับประเภท คุณต้องเปลี่ยนชื่อหรือเริ่มเซสชัน PowerShell ใหม่ มิฉะนั้นคำสั่งจะล้มเหลว
- พิมพ์ :
String
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-Namespace
ระบุเนมสเปซสำหรับประเภท
หากพารามิเตอร์นี้ไม่รวมอยู่ในคำสั่ง ชนิดจะถูกสร้างขึ้นในเนมสเปซ Microsoft.PowerShell.Commands.AddType.AutoGeneratedTypes หากพารามิเตอร์ถูกรวมไว้ในคำสั่งที่มีค่าสตริงว่างหรือค่า $Null ประเภทจะถูกสร้างขึ้นในเนมสเปซส่วนกลาง
- พิมพ์ :
String
- นามแฝง :
NS
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-OutputAssembly
สร้างไฟล์ DLL สำหรับแอสเซมบลีที่มีชื่อที่ระบุในตำแหน่ง ป้อนเส้นทางและชื่อไฟล์เพิ่มเติม อนุญาตให้ใช้อักขระตัวแทนได้ ตามค่าเริ่มต้น Add-Type จะสร้างแอสเซมบลีในหน่วยความจำเท่านั้น
- พิมพ์ :
String
- นามแฝง :
OA
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
True
-OutputType
ระบุประเภทเอาต์พุตของชุดประกอบเอาต์พุต ตามค่าเริ่มต้น ไม่มีการระบุประเภทเอาต์พุต พารามิเตอร์นี้ใช้ได้เฉพาะเมื่อมีการระบุชุดประกอบเอาต์พุตในคำสั่ง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับค่า โปรดดูการแจงนับ OutputAssemblyType
ค่าที่ยอมรับได้สำหรับพารามิเตอร์นี้มีดังนี้:
ConsoleApplicationLibraryWindowsApplicationมันเป็นสิ่งสำคัญ
ใน PowerShell 7.1 ไม่รองรับ ConsoleApplication และ WindowsApplication และ PowerShell จะแสดงข้อผิดพลาดในการยุติหากมีการระบุเป็นค่าสำหรับพารามิเตอร์ OutputType
- พิมพ์ :
ประเภทการประกอบเอาท์พุต
- นามแฝง :
OT
- ค่าที่ยอมรับ:
ConsoleApplication, ไลบรารี, WindowsApplication
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-PassThru
ส่งกลับวัตถุ System.Runtime ที่แสดงถึงประเภทที่ถูกเพิ่ม ตามค่าเริ่มต้น cmdlet นี้ไม่สร้างผลลัพธ์ใดๆ
- พิมพ์ :
SwitchParameter
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
False
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-Path
ระบุเส้นทางไปยังไฟล์ซอร์สโค้ดหรือไฟล์ DLL แอสเซมบลีที่มีประเภทต่างๆ
หากคุณส่งไฟล์ซอร์สโค้ด Add-Type จะคอมไพล์โค้ดในไฟล์และสร้างแอสเซมบลีประเภทในหน่วยความจำ นามสกุลไฟล์ที่ระบุในค่า เส้นทาง จะกำหนดคอมไพลเลอร์ที่ Add-Type ใช้
การใช้พารามิเตอร์ Path หรือ LiteralPath รับประกันว่าคุณกำลังโหลดแอสเซมบลีที่คุณต้องการโหลด
- พิมพ์ :
String[]
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-ReferencedAssemblies
ระบุแอสเซมบลีที่ชนิดขึ้นอยู่กับ ตามค่าเริ่มต้น Add-Type อ้างอิงถึง System.dll และ System.Management.Automation.dll แอสเซมบลีที่คุณระบุโดยใช้พารามิเตอร์นี้จะถูกอ้างอิงเพิ่มเติมจากแอสเซมบลีเริ่มต้น
เริ่มต้นใน PowerShell 6 ReferencedAssemblies จะไม่รวมแอสเซมบลี .NET เริ่มต้น คุณต้องรวมการอ้างอิงเฉพาะในค่าที่ส่งไปยังพารามิเตอร์นี้
- พิมพ์ :
String[]
- นามแฝง :
RA
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-TypeDefinition
ระบุซอร์สโค้ดที่มีคำจำกัดความของประเภท ป้อนซอร์สโค้ดในสตริงหรือสตริงที่นี่ หรือป้อนตัวแปรที่มีซอร์สโค้ด สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสตริงที่นี่ โปรดดูที่ about_Quoting_Rules
รวมการประกาศเนมสเปซในคำจำกัดความประเภทของคุณ หากคุณละเว้นการประกาศเนมสเปซ ประเภทของคุณอาจมีชื่อเหมือนกับประเภทอื่นหรือมีทางลัดสำหรับประเภทอื่น ทำให้เกิดการเขียนทับโดยไม่ได้ตั้งใจ ตัวอย่างเช่น หากคุณกำหนดประเภทที่เรียกว่า ข้อยกเว้น สคริปต์ที่ใช้ ข้อยกเว้น เป็นทางลัดสำหรับ System.Exception จะล้มเหลว
- พิมพ์ :
String
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-UsingNamespace
ระบุเนมสเปซอื่นที่จำเป็นสำหรับคลาส ซึ่งคล้ายกับคำหลัก C# การใช้
ตามค่าเริ่มต้น Add-Type อ้างอิงเนมสเปซ ระบบ เมื่อใช้พารามิเตอร์ MemberDefinition Add-Type จะอ้างอิงเนมสเปซ System.Runtime.InteropServices ตามค่าเริ่มต้นด้วย เนมสเปซที่คุณเพิ่มโดยใช้พารามิเตอร์ UsingNamespace จะถูกอ้างอิงนอกเหนือจากเนมสเปซเริ่มต้น
- พิมพ์ :
String[]
- นามแฝง :
Using
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
เนมสเปซของระบบ
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
อินพุต
ไม่มี
คุณไม่สามารถไปป์วัตถุกับ cmdlet นี้
เอาท์พุต
ไม่มี
ตามค่าเริ่มต้น cmdlet นี้จะส่งกลับไม่มีผลลัพธ์
ประเภท
เมื่อคุณใช้พารามิเตอร์ PassThru cmdlet นี้จะส่งคืนออบเจ็กต์ System.Type ที่แสดงประเภทใหม่
หมายเหตุ
ประเภทที่คุณเพิ่มมีอยู่ในเซสชันปัจจุบันเท่านั้น หากต้องการใช้ประเภทในเซสชันทั้งหมด ให้เพิ่มลงในโปรไฟล์ PowerShell ของคุณ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับโปรไฟล์ โปรดดู about_Profiles
ชื่อประเภทและเนมสเปซต้องไม่ซ้ำกันภายในเซสชัน คุณไม่สามารถยกเลิกการโหลดประเภทหรือเปลี่ยนแปลงได้ หากคุณต้องการเปลี่ยนรหัสสำหรับประเภท คุณต้องเปลี่ยนชื่อหรือเริ่มเซสชัน PowerShell ใหม่ มิฉะนั้นคำสั่งจะล้มเหลว
ใน Windows PowerShell (เวอร์ชัน 5.1 และต่ำกว่า) คุณต้องใช้ Add-Type สำหรับอะไรก็ตามที่ยังไม่ได้โหลด โดยทั่วไปสิ่งนี้ใช้กับแอสเซมบลีที่พบใน Global Assembly Cache (GAC) ใน PowerShell 6 และสูงกว่านั้น ไม่มี GAC ดังนั้น PowerShell จึงติดตั้งแอสเซมบลีของตัวเองใน $PSHOME แอสเซมบลีเหล่านี้จะถูกโหลดโดยอัตโนมัติตามคำขอ ดังนั้นจึงไม่จำเป็นต้องใช้ Add-Type เพื่อโหลด อย่างไรก็ตาม การใช้ Add-Type ยังคงได้รับอนุญาตให้อนุญาตให้สคริปต์เข้ากันได้กับ PowerShell เวอร์ชันใดก็ได้โดยปริยาย
แอสเซมบลีใน GAC สามารถโหลดได้ตามชื่อประเภท แทนที่จะโหลดตามเส้นทาง การโหลดแอสเซมบลีจากเส้นทางที่กำหนดเองต้องใช้ Add-Type เนื่องจากแอสเซมบลีเหล่านั้นไม่สามารถโหลดได้โดยอัตโนมัติ