ค้นหาเว็บไซต์

การสร้างผู้ให้บริการนำทาง Windows PowerShell


หัวข้อนี้อธิบายวิธีการสร้างผู้ให้บริการนำทาง Windows PowerShell ที่สามารถนำทางที่เก็บข้อมูลได้ ผู้ให้บริการประเภทนี้รองรับคำสั่งแบบเรียกซ้ำ คอนเทนเนอร์ที่ซ้อนกัน และเส้นทางสัมพัทธ์

บันทึก

คุณสามารถดาวน์โหลดไฟล์ต้นฉบับ C# (AccessDBSampleProvider05.cs) สำหรับผู้ให้บริการรายนี้โดยใช้ Microsoft Windows Software Development Kit สำหรับ Windows Vista และ .NET Framework 3.0 Runtime Components สำหรับคำแนะนำในการดาวน์โหลด โปรดดูวิธีการติดตั้ง Windows PowerShell และดาวน์โหลด Windows PowerShell SDK ไฟล์ต้นฉบับที่ดาวน์โหลดมีอยู่ในไดเร็กทอรี สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้งานผู้ให้บริการ Windows PowerShell อื่นๆ ดูการออกแบบผู้ให้บริการ Windows PowerShell ของคุณ

ผู้ให้บริการที่อธิบายไว้ที่นี่ช่วยให้ผู้ใช้จัดการฐานข้อมูล Access เป็นไดรฟ์เพื่อให้ผู้ใช้สามารถนำทางไปยังตารางข้อมูลในฐานข้อมูลได้ เมื่อสร้างผู้ให้บริการการนำทางของคุณเอง คุณสามารถใช้วิธีการที่สามารถสร้างเส้นทางที่มีคุณสมบัติตามไดรฟ์ที่จำเป็นสำหรับการนำทาง ปรับเส้นทางสัมพัทธ์ให้เป็นมาตรฐาน ย้ายรายการของการจัดเก็บข้อมูล ตลอดจนวิธีการรับชื่อลูก รับเส้นทางหลักของรายการ และทดสอบเพื่อระบุว่ารายการนั้นเป็นคอนเทนเนอร์หรือไม่

คำเตือน

โปรดทราบว่าการออกแบบนี้จะถือว่าฐานข้อมูลที่มีเขตข้อมูลที่มีรหัสชื่อ และชนิดของเขตข้อมูลนั้นเป็น LongInteger

กำหนดผู้ให้บริการ Windows PowerShell

ผู้ให้บริการนำทาง Windows PowerShell ต้องสร้างคลาส .NET ที่ได้มาจากคลาสพื้นฐานของ System.Management.Automation.Provider.Navigationcmdletprovider นี่คือคำจำกัดความของคลาสสำหรับผู้ให้บริการนำทางที่อธิบายไว้ในส่วนนี้

[CmdletProvider("AccessDB", ProviderCapabilities.None)]
public class AccessDBProvider : NavigationCmdletProvider

โปรดทราบว่าในผู้ให้บริการนี้ แอ็ตทริบิวต์ System.Management.Automation.Provider.Cmdletproviderattribute ประกอบด้วยพารามิเตอร์สองตัว พารามิเตอร์แรกระบุชื่อที่เป็นมิตรต่อผู้ใช้สำหรับผู้ให้บริการที่ใช้โดย Windows PowerShell พารามิเตอร์ตัวที่สองระบุความสามารถเฉพาะของ Windows PowerShell ที่ผู้ให้บริการเปิดเผยต่อรันไทม์ของ Windows PowerShell ในระหว่างการประมวลผลคำสั่ง สำหรับผู้ให้บริการรายนี้ ไม่มีการเพิ่มความสามารถเฉพาะของ Windows PowerShell

การกำหนดฟังก์ชันพื้นฐาน

ตามที่อธิบายไว้ในการออกแบบผู้ให้บริการ PS ของคุณ คลาสพื้นฐานของผู้ให้บริการ System.Management.Automation.Provider.Navigationcmdlet มาจากคลาสอื่นๆ อีกหลายคลาสที่มีฟังก์ชันการทำงานของผู้ให้บริการที่แตกต่างกัน ดังนั้นผู้ให้บริการนำทาง Windows PowerShell จะต้องกำหนดฟังก์ชันการทำงานทั้งหมดที่คลาสเหล่านั้นมีให้

หากต้องการใช้ฟังก์ชันการทำงานสำหรับการเพิ่มข้อมูลการเริ่มต้นเฉพาะเซสชัน และสำหรับการปล่อยทรัพยากรที่ผู้ให้บริการใช้ โปรดดูที่การสร้างผู้ให้บริการ PS ขั้นพื้นฐาน อย่างไรก็ตาม ผู้ให้บริการส่วนใหญ่ (รวมถึงผู้ให้บริการที่อธิบายไว้ที่นี่) สามารถใช้การใช้งานเริ่มต้นของฟังก์ชันนี้ที่ได้รับจาก Windows PowerShell

ในการเข้าถึงที่เก็บข้อมูลผ่านไดรฟ์ Windows PowerShell คุณต้องใช้วิธีการของคลาสพื้นฐานของ System.Management.Automation.Provider.Drivecmdletprovider สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการเหล่านี้ โปรดดูที่การสร้างผู้ให้บริการไดรฟ์ Windows PowerShell

เมื่อต้องการจัดการรายการต่างๆ ของที่เก็บข้อมูล เช่น การรับ การตั้งค่า และการล้างรายการ ผู้ให้บริการจะต้องใช้วิธีการที่มีให้โดยคลาสพื้นฐานของ System.Management.Automation.Provider.Itemcmdletprovider สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการเหล่านี้ โปรดดูที่การสร้างตัวให้บริการรายการ Windows PowerShell

เมื่อต้องการเข้าถึงรายการลูกหรือชื่อของที่เก็บข้อมูล ตลอดจนวิธีการสร้าง คัดลอก เปลี่ยนชื่อ และลบรายการ คุณต้องใช้วิธีการที่คลาสฐาน System.Management.Automation.Provider.Containercmdletprovider จัดเตรียมไว้ . สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้วิธีการเหล่านี้ โปรดดูที่การสร้าง Windows PowerShell Container Provider

การสร้างเส้นทาง Windows PowerShell

ผู้ให้บริการการนำทาง Windows PowerShell ใช้เส้นทาง Windows PowerShell ภายในของผู้ให้บริการเพื่อนำทางรายการต่างๆ ของที่เก็บข้อมูล ในการสร้างเส้นทางภายในของผู้ให้บริการ ผู้ให้บริการต้องใช้เมธอด System.Management.Automation.Provider.Navigationcmdletprovider.Makepath* เพื่อรองรับการโทรจาก Combine-Path cmdlet วิธีนี้จะรวมพาธพาเรนต์และพาธรองเข้ากับพาธภายในของผู้ให้บริการ โดยใช้ตัวคั่นพาธเฉพาะของผู้ให้บริการระหว่างพาธพาเรนต์และพาธลูก

การใช้งานเริ่มต้นจะใช้พาธที่มี "/" หรือ "\" เป็นตัวคั่นพาธ ทำให้ตัวคั่นพาธเป็นมาตรฐานเป็น "\" รวมส่วนพาธพาเรนต์และพาธย่อยด้วยตัวคั่นระหว่างพาธเหล่านั้น และจากนั้นส่งคืนสตริงที่มีพาธแบบรวม .

ผู้ให้บริการนำทางรายนี้ไม่ได้ใช้วิธีนี้ อย่างไรก็ตาม รหัสต่อไปนี้เป็นการใช้งานเริ่มต้นของเมธอด System.Management.Automation.Provider.Navigationcmdletprovider.Makepath*

สิ่งที่ต้องจำเกี่ยวกับการใช้ MakePath

เงื่อนไขต่อไปนี้อาจนำไปใช้กับการใช้งาน System.Management.Automation.Provider.Navigationcmdletprovider.Makepath* ของคุณ:

  • การใช้งานเมธอด System.Management.Automation.Provider.Navigationcmdletprovider.Makepath* ของคุณไม่ควรตรวจสอบเส้นทางเป็นเส้นทางที่มีคุณสมบัติครบถ้วนตามกฎหมายในเนมสเปซของผู้ให้บริการ โปรดทราบว่าแต่ละพารามิเตอร์สามารถแสดงได้เพียงส่วนหนึ่งของเส้นทางเท่านั้น และส่วนที่รวมกันอาจไม่สร้างเส้นทางที่มีคุณสมบัติครบถ้วน ตัวอย่างเช่น เมธอด System.Management.Automation.Provider.Navigationcmdletprovider.Makepath* สำหรับผู้ให้บริการระบบไฟล์อาจได้รับ "windows\system32" ในพารามิเตอร์ parent และ "abc.dll" ใน เด็กพารามิเตอร์ วิธีการรวมค่าเหล่านี้ด้วยตัวคั่น "\" และส่งกลับ "windows\system32\abc.dll" ซึ่งไม่ใช่เส้นทางระบบไฟล์ที่มีคุณสมบัติครบถ้วน

    มันเป็นสิ่งสำคัญ

    ส่วนเส้นทางที่ให้ไว้ในการเรียก System.Management.Automation.Provider.Navigationcmdletprovider.Makepath* อาจมีอักขระที่ไม่ได้รับอนุญาตในเนมสเปซของผู้ให้บริการ อักขระเหล่านี้มักจะใช้สำหรับการขยายไวด์การ์ด และการนำวิธีนี้ไปใช้ไม่ควรลบออก

การดึงข้อมูลเส้นทางผู้ปกครอง

ผู้ให้บริการการนำทางของ Windows PowerShell ใช้เมธอด System.Management.Automation.Provider.Navigationcmdletprovider.Getparentpath* เพื่อดึงข้อมูลส่วนหลักของเส้นทางเฉพาะของผู้ให้บริการแบบเต็มหรือบางส่วนที่ระบุ วิธีการลบส่วนลูกของเส้นทางและส่งกลับส่วนเส้นทางหลัก พารามิเตอร์ root ระบุเส้นทางที่มีคุณสมบัติครบถ้วนไปยังรากของไดรฟ์ พารามิเตอร์นี้สามารถเป็นค่าว่างหรือว่างเปล่าได้หากไม่ได้ใช้ไดรฟ์ที่เมาท์สำหรับการดำเนินการดึงข้อมูล หากมีการระบุรูท วิธีการจะต้องส่งคืนเส้นทางไปยังคอนเทนเนอร์ในแผนผังเดียวกันกับรูท

ผู้ให้บริการนำทางตัวอย่างไม่ได้แทนที่วิธีนี้ แต่ใช้การใช้งานเริ่มต้น ยอมรับเส้นทางที่ใช้ทั้ง "/" และ "\" เป็นตัวคั่นเส้นทาง ขั้นแรกจะทำให้เส้นทางเป็นมาตรฐานเพื่อให้มีเพียงตัวคั่น "\" จากนั้นแยกเส้นทางหลักออกที่ "\" สุดท้ายและส่งกลับเส้นทางหลัก

สิ่งที่ต้องจำเกี่ยวกับการใช้ GetParentPath

การใช้งานเมธอด System.Management.Automation.Provider.Navigationcmdletprovider.Getparentpath* ของคุณควรแบ่งเส้นทางแบบคำศัพท์บนตัวแยกเส้นทางสำหรับเนมสเปซของผู้ให้บริการ ตัวอย่างเช่น ผู้ให้บริการระบบไฟล์ใช้วิธีนี้เพื่อค้นหา "\" สุดท้าย และส่งคืนทุกอย่างทางด้านซ้ายของตัวคั่น

ดึงข้อมูลชื่อเส้นทางลูก

ผู้ให้บริการการนำทางของคุณใช้เมธอด System.Management.Automation.Provider.Navigationcmdletprovider.Getchildname* เพื่อดึงข้อมูลชื่อ (องค์ประกอบลีฟ) ของรายการย่อยที่อยู่ในเส้นทางเฉพาะของผู้ให้บริการแบบเต็มหรือบางส่วนที่ระบุ

ผู้ให้บริการการนำทางตัวอย่างไม่ได้แทนที่วิธีนี้ การใช้งานเริ่มต้นจะแสดงอยู่ด้านล่าง ยอมรับเส้นทางที่ใช้ทั้ง "/" และ "\" เป็นตัวคั่นเส้นทาง ขั้นแรกจะทำให้เส้นทางเป็นมาตรฐานเพื่อให้มีเพียงตัวคั่น "\" จากนั้นแยกเส้นทางหลักออกที่ส่วนสุดท้าย "\" และส่งกลับชื่อของส่วนเส้นทางลูก

สิ่งที่ต้องจำเกี่ยวกับการนำ GetChildName ไปใช้

การใช้งานเมธอด System.Management.Automation.Provider.Navigationcmdletprovider.Getchildname* ของคุณควรแยกเส้นทางตามคำศัพท์ในตัวแยกเส้นทาง หากเส้นทางที่ให้มาไม่มีตัวคั่นเส้นทาง วิธีการควรส่งคืนเส้นทางที่ไม่มีการแก้ไข

มันเป็นสิ่งสำคัญ

เส้นทางที่ระบุในการเรียกเมธอดนี้อาจมีอักขระที่ผิดกฎหมายในเนมสเปซของผู้ให้บริการ อักขระเหล่านี้มักจะใช้สำหรับการขยายไวด์การ์ดหรือการจับคู่นิพจน์ทั่วไป และการนำวิธีนี้ไปใช้ไม่ควรลบอักขระเหล่านี้ออก

การพิจารณาว่ารายการนั้นเป็นคอนเทนเนอร์หรือไม่

ผู้ให้บริการการนำทางสามารถใช้เมธอด System.Management.Automation.Provider.Navigationcmdletprovider.Isitemcontainer* เพื่อตรวจสอบว่าพาธที่ระบุบ่งชี้ถึงคอนเทนเนอร์หรือไม่ หากเส้นทางแสดงถึงคอนเทนเนอร์ จะส่งคืนค่าจริง หากเป็นอย่างอื่นจะเป็นเท็จ ผู้ใช้ต้องการวิธีนี้เพื่อให้สามารถใช้ cmdlet Test-Path สำหรับเส้นทางที่ให้มา

รหัสต่อไปนี้แสดงการใช้งาน System.Management.Automation.Provider.Navigationcmdletprovider.Isitemcontainer* ในผู้ให้บริการการนำทางตัวอย่างของเรา วิธีการตรวจสอบว่าเส้นทางที่ระบุนั้นถูกต้องและมีตารางอยู่หรือไม่ และส่งคืนค่าจริงหากเส้นทางระบุคอนเทนเนอร์

protected override bool IsItemContainer(string path)
{
   if (PathIsDrive(path)) 
   { 
       return true; 
   }
   
   string[] pathChunks = ChunkPath(path);
   string tableName;
   int rowNumber;

   PathType type = GetNamesFromPath(path, out tableName, out rowNumber);
   
   if (type == PathType.Table)
   {
      foreach (DatabaseTableInfo ti in GetTables())
      {
          if (string.Equals(ti.Name, tableName, StringComparison.OrdinalIgnoreCase))
          {
              return true;
          }
      } // foreach (DatabaseTableInfo...
   } // if (pathChunks...

   return false;
} // IsItemContainer

สิ่งที่ต้องจำเกี่ยวกับการใช้งาน IsItemContainer

คลาส .NET ของผู้ให้บริการนำทางของคุณอาจประกาศความสามารถของผู้ให้บริการของ ExpandWildcards, Filter, Included หรือ Exclude จากการแจงนับ System.Management.Automation.Provider.Providercapabilities ในกรณีนี้ การใช้งาน System.Management.Automation.Provider.Navigationcmdletprovider.Isitemcontainer* จำเป็นต้องตรวจสอบให้แน่ใจว่าเส้นทางที่ส่งผ่านนั้นตรงตามข้อกำหนด เมื่อต้องการทำเช่นนี้ วิธีการควรเข้าถึงคุณสมบัติที่เหมาะสม ตัวอย่างเช่น คุณสมบัติ System.Management.Automation.Provider.Cmdletprovider.Exclude*

การย้ายรายการ

เพื่อสนับสนุน Move-Item cmdlet ผู้ให้บริการการนำทางของคุณจะใช้เมธอด System.Management.Automation.Provider.Navigationcmdletprovider.Moveitem* วิธีนี้จะย้ายรายการที่ระบุโดยพารามิเตอร์ path ไปยังคอนเทนเนอร์ที่เส้นทางที่ระบุในพารามิเตอร์ destination

ผู้ให้บริการการนำทางตัวอย่างไม่ได้แทนที่เมธอด System.Management.Automation.Provider.Navigationcmdletprovider.Moveitem* ต่อไปนี้เป็นการใช้งานเริ่มต้น

สิ่งที่ต้องจำเกี่ยวกับการนำ MoveItem ไปใช้

คลาส .NET ของผู้ให้บริการนำทางของคุณอาจประกาศความสามารถของผู้ให้บริการของ ExpandWildcards, Filter, Included หรือ Exclude จากการแจงนับ System.Management.Automation.Provider.Providercapabilities ในกรณีนี้ การใช้งาน System.Management.Automation.Provider.Navigationcmdletprovider.Moveitem* ต้องแน่ใจว่าเส้นทางที่ส่งผ่านนั้นตรงตามข้อกำหนด เมื่อต้องการทำเช่นนี้ วิธีการควรเข้าถึงคุณสมบัติที่เหมาะสม ตัวอย่างเช่น คุณสมบัติ CmdletProvider.Exclude

ตามค่าเริ่มต้น การแทนที่ของวิธีนี้ไม่ควรย้ายวัตถุไปไว้เหนือวัตถุที่มีอยู่ เว้นแต่ว่าคุณสมบัติ System.Management.Automation.Provider.Cmdletprovider.Force* ถูกตั้งค่าเป็น true ตัวอย่างเช่น ผู้ให้บริการระบบไฟล์จะไม่คัดลอก c:\temp\abc.txt บนไฟล์ c:\bar.txt ที่มีอยู่ เว้นแต่คุณสมบัติ System.Management.Automation.Provider.Cmdletprovider.Force* จะถูกตั้งค่าเป็น true. หากเส้นทางที่ระบุในพารามิเตอร์ destination มีอยู่และเป็นคอนเทนเนอร์ ก็ไม่จำเป็นต้องมีคุณสมบัติ System.Management.Automation.Provider.Cmdletprovider.Force* ในกรณีนี้ System.Management.Automation.Provider.Navigationcmdletprovider.Moveitem* ควรย้ายรายการที่ระบุโดยพารามิเตอร์ path ไปยังคอนเทนเนอร์ที่ระบุโดยพารามิเตอร์ destination ในฐานะลูก .

การใช้งานเมธอด System.Management.Automation.Provider.Navigationcmdletprovider.Moveitem* ของคุณควรเรียก System.Management.Automation.Provider.Cmdletprovider.ShouldProcess และตรวจสอบค่าที่ส่งคืนก่อนทำการเปลี่ยนแปลงใดๆ กับที่เก็บข้อมูล วิธีการนี้ใช้เพื่อยืนยันการดำเนินการเมื่อมีการเปลี่ยนแปลงสถานะระบบ เช่น การลบไฟล์ System.Management.Automation.Provider.Cmdletprovider.ShouldProcess ส่งชื่อของทรัพยากรที่จะเปลี่ยนให้กับผู้ใช้ โดยรันไทม์ของ Windows PowerShell จะคำนึงถึงการตั้งค่าบรรทัดคำสั่งหรือตัวแปรการกำหนดลักษณะในการกำหนดสิ่งที่ควรแสดงต่อผู้ใช้

หลังจากการเรียกไปยัง System.Management.Automation.Provider.Cmdletprovider.ShouldProcess ส่งกลับค่า true เมธอด System.Management.Automation.Provider.Navigationcmdletprovider.Moveitem* ควรเรียกเมธอด System.Management.Automation.Provider Cmdletprovider.ShouldContinue วิธีการ เมธอดนี้ส่งข้อความถึงผู้ใช้เพื่ออนุญาตให้มีข้อเสนอแนะเพื่อบอกว่าควรดำเนินการต่อไปหรือไม่ ผู้ให้บริการของคุณควรโทรติดต่อ System.Management.Automation.Provider.Cmdletprovider.ShouldContinue เพื่อตรวจสอบเพิ่มเติมสำหรับการแก้ไขระบบที่อาจเป็นอันตราย

การแนบพารามิเตอร์แบบไดนามิกเข้ากับ Move-Item Cmdlet

บางครั้ง cmdlet Move-Item จำเป็นต้องมีพารามิเตอร์เพิ่มเติมที่ให้ไว้แบบไดนามิก ณ รันไทม์ เพื่อจัดเตรียมพารามิเตอร์แบบไดนามิกเหล่านี้ ผู้ให้บริการการนำทางต้องใช้เมธอด System.Management.Automation.Provider.Navigationcmdletprovider.Moveitemdynamicparameters* เพื่อรับค่าพารามิเตอร์ที่ต้องการจากรายการที่เส้นทางที่ระบุ และส่งคืนออบเจ็กต์ที่มีคุณสมบัติและฟิลด์ที่มีการแยกวิเคราะห์ คุณลักษณะที่คล้ายกับคลาส cmdlet หรือวัตถุ System.Management.Automation.Runtimedesignparameterdictionary

ผู้ให้บริการนำทางรายนี้ไม่ได้ใช้วิธีนี้ อย่างไรก็ตาม รหัสต่อไปนี้เป็นการใช้งานเริ่มต้นของ System.Management.Automation.Provider.Navigationcmdletprovider.Moveitemdynamicparameters*

การทำให้เส้นทางสัมพัทธ์เป็นมาตรฐาน

ผู้ให้บริการนำทางของคุณใช้เมธอด System.Management.Automation.Provider.Navigationcmdletprovider.Normalizerelativepath* เพื่อทำให้พาธที่มีคุณสมบัติครบถ้วนที่ระบุในพารามิเตอร์ path เป็นมาตรฐานโดยสัมพันธ์กับพาธที่ระบุโดย basePath พารามิเตอร์ วิธีการส่งกลับการแสดงสตริงของเส้นทางปกติ จะเขียนข้อผิดพลาดหากพารามิเตอร์ path ระบุเส้นทางที่ไม่มีอยู่

ผู้ให้บริการการนำทางตัวอย่างไม่ได้แทนที่วิธีนี้ ต่อไปนี้เป็นการใช้งานเริ่มต้น

สิ่งที่ต้องจำเกี่ยวกับการนำ NormalizeRelativePath ไปใช้

การใช้งาน System.Management.Automation.Provider.Navigationcmdletprovider.Normalizerelativepath* ของคุณควรแยกวิเคราะห์พารามิเตอร์ path แต่ไม่จำเป็นต้องใช้การแยกวิเคราะห์ทางวากยสัมพันธ์เพียงอย่างเดียว ขอแนะนำให้คุณออกแบบวิธีนี้เพื่อใช้พาธเพื่อค้นหาข้อมูลพาธในที่เก็บข้อมูล และสร้างพาธที่ตรงกับรูปแบบตัวพิมพ์และไวยากรณ์พาธมาตรฐาน

ตัวอย่างโค้ด

สำหรับโค้ดตัวอย่างที่สมบูรณ์ โปรดดูตัวอย่างโค้ด AccessDbProviderSample05

การกำหนดประเภทวัตถุและการจัดรูปแบบ

เป็นไปได้ที่ผู้ให้บริการจะเพิ่มสมาชิกให้กับออบเจ็กต์ที่มีอยู่หรือกำหนดออบเจ็กต์ใหม่ สำหรับข้อมูลเพิ่มเติม โปรดดูการขยายประเภทออบเจ็กต์และการจัดรูปแบบ

การสร้างผู้ให้บริการ Windows PowerShell

สำหรับข้อมูลเพิ่มเติม โปรดดูวิธีการลงทะเบียน Cmdlets ผู้ให้บริการ และแอปพลิเคชันโฮสต์

การทดสอบผู้ให้บริการ Windows PowerShell

เมื่อผู้ให้บริการ Windows PowerShell ของคุณลงทะเบียนกับ Windows PowerShell แล้ว คุณสามารถทดสอบได้โดยการเรียกใช้ cmdlets ที่ได้รับการสนับสนุนบนบรรทัดคำสั่ง รวมถึง cmdlets ที่ทำให้พร้อมใช้งานโดยการสืบทอดมา ตัวอย่างนี้จะทดสอบผู้ให้บริการนำทางตัวอย่าง

  1. เรียกใช้เชลล์ใหม่ของคุณและใช้ Set-Location cmdlet เพื่อกำหนดเส้นทางเพื่อระบุฐานข้อมูล Access

    Set-Location mydb:
    
  2. ตอนนี้ให้รัน cmdlet Get-Childitem เพื่อดึงรายการของรายการฐานข้อมูล ซึ่งเป็นตารางฐานข้อมูลที่มีอยู่ สำหรับแต่ละตาราง cmdlet นี้จะดึงข้อมูลจำนวนแถวของตารางด้วย

    Get-ChildItem | Format-Table rowcount,name -AutoSize
    
    RowCount   Name
    --------   ----
         180   MSysAccessObjects
           0   MSysACEs
           1   MSysCmdbars
           0   MSysIMEXColumns
           0   MSysIMEXSpecs
           0   MSysObjects
           0   MSysQueries
           7   MSysRelationships
           8   Categories
          91   Customers
           9   Employees
        2155   Order Details
         830   Orders
          77   Products
           3   Shippers
          29   Suppliers
    
  3. ใช้ cmdlet Set-Location อีกครั้งเพื่อตั้งค่าตำแหน่งของตารางข้อมูลพนักงาน

    Set-Location Employees
    
  4. ตอนนี้ลองใช้ cmdlet Get-Location เพื่อดึงข้อมูลเส้นทางไปยังตารางพนักงาน

    Get-Location
    
    Path
    ----
    mydb:\Employees
    
  5. ตอนนี้ใช้ cmdlet Get-Childitem ที่ส่งไปยัง cmdlet Format-Table cmdlets ชุดนี้จะดึงข้อมูลรายการสำหรับตารางข้อมูลพนักงานซึ่งเป็นแถวของตาราง มีการจัดรูปแบบตามที่ระบุโดย Format-Table cmdlet

    Get-ChildItem | Format-Table rownumber,psiscontainer,data -AutoSize
    
    RowNumber   PSIsContainer   Data
    ---------   --------------   ----
    0           False            System.Data.DataRow
    1           False            System.Data.DataRow
    2           False            System.Data.DataRow
    3           False            System.Data.DataRow
    4           False            System.Data.DataRow
    5           False            System.Data.DataRow
    6           False            System.Data.DataRow
    7           False            System.Data.DataRow
    8           False            System.Data.DataRow
    
  6. ตอนนี้คุณสามารถเรียกใช้ cmdlet Get-Item เพื่อดึงข้อมูลรายการสำหรับแถว 0 ของตารางข้อมูลพนักงานได้แล้ว

    Get-Item 0
    
    PSPath        : AccessDB::C:\PS\Northwind.mdb\Employees\0
    PSParentPath  : AccessDB::C:\PS\Northwind.mdb\Employees
    PSChildName   : 0
    PSDrive       : mydb
    PSProvider    : System.Management.Automation.ProviderInfo
    PSIsContainer : False
    Data           : System.Data.DataRow
    RowNumber      : 0
    
  7. ใช้ cmdlet Get-Item อีกครั้งเพื่อดึงข้อมูลพนักงานสำหรับรายการในแถว 0

    (Get-Item 0).data
    
    EmployeeID      : 1
    LastName        : Davis
    FirstName       : Sara
    Title           : Sales Representative
    TitleOfCourtesy : Ms.
    BirthDate       : 12/8/1968 12:00:00 AM
    HireDate        : 5/1/1992 12:00:00 AM
    Address         : 4567 Main Street
                      Apt. 2A
    City            : Buffalo
    Region          : NY
    PostalCode      : 98052
    Country         : USA
    HomePhone       : (206) 555-9857
    Extension       : 5467
    Photo           : EmpID1.bmp
    Notes           : Education includes a BA in psychology from
                      Colorado State University. She also completed "The
                      Art of the Cold Call."  Nancy is a member of
                      Toastmasters International.
    ReportsTo       : 2
    

ดูเพิ่มเติม

การสร้างผู้ให้บริการ Windows PowerShell

ออกแบบผู้ให้บริการ Windows PowerShell ของคุณ

การขยายประเภทวัตถุและการจัดรูปแบบ

ใช้ผู้ให้บริการคอนเทนเนอร์ Windows PowerShell

วิธีลงทะเบียน Cmdlets ผู้ให้บริการ และแอปพลิเคชันโฮสต์

คู่มือโปรแกรมเมอร์ Windows PowerShell

Windows PowerShell SDK

บทความที่เกี่ยวข้อง