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

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


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

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

บันทึก

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

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

คำเตือน

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

การกำหนดคลาสผู้ให้บริการคอนเทนเนอร์ Windows PowerShell

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

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

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

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

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

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

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

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

การดึงข้อมูลรายการย่อย

เมื่อต้องการดึงข้อมูลรายการลูก ผู้ให้บริการคอนเทนเนอร์ Windows PowerShell ต้องแทนที่เมธอด System.Management.Automation.Provider.Containercmdletprovider.Getchilditems* เพื่อรองรับการโทรจาก cmdlet Get-ChildItem วิธีนี้จะดึงรายการลูกจากที่เก็บข้อมูลและเขียนลงในไปป์ไลน์เป็นอ็อบเจ็กต์ หากมีการระบุพารามิเตอร์ recurse ของ cmdlet วิธีการดึงข้อมูลรายการย่อยทั้งหมดโดยไม่คำนึงถึงระดับที่พวกเขาอยู่ที่ระดับใด หากไม่ได้ระบุพารามิเตอร์ recurse วิธีการจะดึงข้อมูลระดับลูกเพียงระดับเดียวเท่านั้น

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

protected override void GetChildItems(string path, bool recurse)
{
    // If path represented is a drive then the children in the path are 
    // tables. Hence all tables in the drive represented will have to be
    // returned
    if (PathIsDrive(path))
    {
        foreach (DatabaseTableInfo table in GetTables())
        {
            WriteItemObject(table, path, true);

            // if the specified item exists and recurse has been set then 
            // all child items within it have to be obtained as well
            if (ItemExists(path) && recurse)
            {
                GetChildItems(path + pathSeparator + table.Name, recurse);
            }
        } // foreach (DatabaseTableInfo...
    } // if (PathIsDrive...
    else
    {
        // Get the table name, row number and type of path from the
        // path specified
        string tableName;
        int rowNumber;

        PathType type = GetNamesFromPath(path, out tableName, out rowNumber);

        if (type == PathType.Table)
        {
            // Obtain all the rows within the table
            foreach (DatabaseRowInfo row in GetRows(tableName))
            {
                WriteItemObject(row, path + pathSeparator + row.RowNumber,
                        false);
            } // foreach (DatabaseRowInfo...
        }
        else if (type == PathType.Row)
        {
            // In this case the user has directly specified a row, hence
            // just give that particular row
            DatabaseRowInfo row = GetRow(tableName, rowNumber);
            WriteItemObject(row, path + pathSeparator + row.RowNumber,
                        false);
        }
        else
        {
            // In this case, the path specified is not valid
            ThrowTerminatingInvalidPathException(path);
        }
    } // else
} // GetChildItems

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

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

  • เมื่อกำหนดคลาสของผู้ให้บริการ ผู้ให้บริการคอนเทนเนอร์ Windows PowerShell อาจประกาศความสามารถของผู้ให้บริการของ ExpandWildcards ตัวกรอง รวม หรือแยก จากการแจงนับ System.Management.Automation.Provider.Providercapabilities ในกรณีเหล่านี้ การใช้งานเมธอด System.Management.Automation.Provider.Containercmdletprovider.Getchilditems* จำเป็นต้องตรวจสอบให้แน่ใจว่าเส้นทางที่ส่งผ่านไปยังเมธอดนั้นตรงตามข้อกำหนดของความสามารถที่ระบุ เมื่อต้องการทำเช่นนี้ วิธีการควรเข้าถึงคุณสมบัติที่เหมาะสม ตัวอย่างเช่น คุณสมบัติ System.Management.Automation.Provider.Cmdletprovider.Exclude* และ System.Management.Automation.Provider.Cmdletprovider.Include*

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

  • เมื่อเขียนหลายรายการ วิธี System.Management.Automation.Provider.Containercmdletprovider.Getchilditems* อาจใช้เวลาสักครู่ คุณสามารถออกแบบผู้ให้บริการของคุณให้เขียนรายการโดยใช้เมธอด System.Management.Automation.Provider.Cmdletprovider.Writeitemobject* ทีละรายการ การใช้เทคนิคนี้จะนำเสนอไอเท็มให้กับผู้ใช้ในสตรีม

  • การใช้งาน System.Management.Automation.Provider.Containercmdletprovider.Getchilditems* ของคุณมีหน้าที่ป้องกันการเรียกซ้ำแบบไม่สิ้นสุดเมื่อมีลิงก์แบบวงกลมและสิ่งที่คล้ายกัน ควรส่งข้อยกเว้นการยุติที่เหมาะสมเพื่อสะท้อนถึงเงื่อนไขดังกล่าว

การแนบพารามิเตอร์แบบไดนามิกกับ Get-ChildItem Cmdlet

บางครั้ง Get-ChildItem cmdlet ที่เรียก System.Management.Automation.Provider.Containercmdletprovider.Getchilditems* จำเป็นต้องมีพารามิเตอร์เพิ่มเติมที่ระบุไว้แบบไดนามิกที่รันไทม์ เพื่อให้พารามิเตอร์แบบไดนามิกเหล่านี้ ผู้ให้บริการคอนเทนเนอร์ Windows PowerShell ต้องใช้เมธอด System.Management.Automation.Provider.Containercmdletprovider.Getchilditemsdynamicparameters* วิธีการนี้ดึงข้อมูลพารามิเตอร์แบบไดนามิกสำหรับรายการที่เส้นทางที่ระบุ และส่งกลับวัตถุที่มีคุณสมบัติและเขตข้อมูลที่มีคุณสมบัติการแยกวิเคราะห์ที่คล้ายกับคลาส cmdlet หรือวัตถุ System.Management.Automation.Runtimedesignparameterdictionary รันไทม์ของ Windows PowerShell ใช้วัตถุที่ส่งคืนเพื่อเพิ่มพารามิเตอร์ลงใน cmdlet Get-ChildItem

ผู้ให้บริการคอนเทนเนอร์ Windows PowerShell นี้ไม่ได้ใช้วิธีนี้ อย่างไรก็ตาม รหัสต่อไปนี้เป็นการใช้งานเริ่มต้นของวิธีนี้

การดึงชื่อรายการลูก

เมื่อต้องการดึงข้อมูลชื่อของรายการลูก ผู้ให้บริการคอนเทนเนอร์ Windows PowerShell ต้องแทนที่เมธอด System.Management.Automation.Provider.Containercmdletprovider.Getchildnames* เพื่อรองรับการโทรจาก cmdlet Get-ChildItem เมื่อ ระบุพารามิเตอร์ชื่อแล้ว วิธีการนี้ดึงข้อมูลชื่อของรายการลูกสำหรับเส้นทางที่ระบุหรือชื่อรายการลูกสำหรับคอนเทนเนอร์ทั้งหมดถ้ามีระบุพารามิเตอร์ returnAllContainers ของ cmdlet ชื่อลูกคือส่วนใบไม้ของเส้นทาง ตัวอย่างเช่น ชื่อลูกสำหรับเส้นทาง c:\windows\system32\abc.dll คือ "abc.dll" ชื่อลูกสำหรับไดเร็กทอรี c:\windows\system32 คือ "system32"

นี่คือการใช้งานเมธอด System.Management.Automation.Provider.Containercmdletprovider.Getchildnames* สำหรับผู้ให้บริการรายนี้ โปรดสังเกตว่าวิธีการดึงชื่อตารางหากเส้นทางที่ระบุระบุฐานข้อมูล Access (ไดรฟ์) และหมายเลขแถวหากเส้นทางระบุตาราง

protected override void GetChildNames(string path,
                              ReturnContainers returnContainers)
{
    // If the path represented is a drive, then the child items are
    // tables. get the names of all the tables in the drive.
    if (PathIsDrive(path))
    {
        foreach (DatabaseTableInfo table in GetTables())
        {
            WriteItemObject(table.Name, path, true);
        } // foreach (DatabaseTableInfo...
    } // if (PathIsDrive...
    else
    {
        // Get type, table name and row number from path specified
        string tableName;
        int rowNumber;

        PathType type = GetNamesFromPath(path, out tableName, out rowNumber);

        if (type == PathType.Table)
        {
            // Get all the rows in the table and then write out the 
            // row numbers.
            foreach (DatabaseRowInfo row in GetRows(tableName))
            {
                WriteItemObject(row.RowNumber, path, false);
            } // foreach (DatabaseRowInfo...
        }
        else if (type == PathType.Row)
        {
            // In this case the user has directly specified a row, hence
            // just give that particular row
            DatabaseRowInfo row = GetRow(tableName, rowNumber);

            WriteItemObject(row.RowNumber, path, false);
        }
        else
        {
            ThrowTerminatingInvalidPathException(path);
        }
    } // else
} // GetChildNames

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

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

  • เมื่อกำหนดคลาสของผู้ให้บริการ ผู้ให้บริการคอนเทนเนอร์ Windows PowerShell อาจประกาศความสามารถของผู้ให้บริการของ ExpandWildcards ตัวกรอง รวม หรือแยก จากการแจงนับ System.Management.Automation.Provider.Providercapabilities ในกรณีเหล่านี้ การใช้งานเมธอด System.Management.Automation.Provider.Containercmdletprovider.Getchilditems* จำเป็นต้องตรวจสอบให้แน่ใจว่าเส้นทางที่ส่งผ่านไปยังเมธอดนั้นตรงตามข้อกำหนดของความสามารถที่ระบุ เมื่อต้องการทำเช่นนี้ วิธีการควรเข้าถึงคุณสมบัติที่เหมาะสม ตัวอย่างเช่น คุณสมบัติ System.Management.Automation.Provider.Cmdletprovider.Exclude* และ System.Management.Automation.Provider.Cmdletprovider.Include*

    บันทึก

    ข้อยกเว้นสำหรับกฎนี้เกิดขึ้นเมื่อมีระบุพารามิเตอร์ returnAllContainers ของ cmdlet ในกรณีนี้ วิธีการควรดึงชื่อลูกใดๆ สำหรับคอนเทนเนอร์ แม้ว่าจะไม่ตรงกับค่าของ System.Management.Automation.Provider.Cmdletprovider.Filter*, System.Management.Automation.Provider.Cmdletprovider.Include* หรือคุณสมบัติ System.Management.Automation.Provider.Cmdletprovider.Exclude*

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

  • การใช้งาน System.Management.Automation.Provider.Containercmdletprovider.Getchildnames* ของคุณมีหน้าที่ป้องกันการเรียกซ้ำแบบไม่สิ้นสุดเมื่อมีลิงก์แบบวงกลมและสิ่งที่คล้ายกัน ควรส่งข้อยกเว้นการยุติที่เหมาะสมเพื่อสะท้อนถึงเงื่อนไขดังกล่าว

การแนบพารามิเตอร์แบบไดนามิกกับ Get-ChildItem Cmdlet (ชื่อ)

บางครั้ง Get-ChildItem cmdlet (ที่มีพารามิเตอร์ Name) จำเป็นต้องมีพารามิเตอร์เพิ่มเติมที่ระบุแบบไดนามิกที่รันไทม์ เพื่อให้พารามิเตอร์แบบไดนามิกเหล่านี้ ผู้ให้บริการคอนเทนเนอร์ Windows PowerShell ต้องใช้เมธอด System.Management.Automation.Provider.Containercmdletprovider.Getchildnamesdynamicparameters* วิธีการนี้ดึงข้อมูลพารามิเตอร์แบบไดนามิกสำหรับรายการที่เส้นทางที่ระบุ และส่งกลับวัตถุที่มีคุณสมบัติและเขตข้อมูลที่มีแอตทริบิวต์การแยกวิเคราะห์ที่คล้ายกับคลาส cmdlet หรือวัตถุ System.Management.Automation.Runtimedesignparameterdictionary รันไทม์ของ Windows PowerShell ใช้วัตถุที่ส่งคืนเพื่อเพิ่มพารามิเตอร์ลงใน cmdlet Get-ChildItem

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

การเปลี่ยนชื่อรายการ

เมื่อต้องการเปลี่ยนชื่อรายการ ผู้ให้บริการคอนเทนเนอร์ Windows PowerShell ต้องแทนที่เมธอด System.Management.Automation.Provider.Containercmdletprovider.Renameitem* เพื่อรองรับการโทรจาก cmdlet Rename-Item วิธีการนี้จะเปลี่ยนชื่อของรายการที่เส้นทางที่ระบุเป็นชื่อใหม่ที่ระบุ ชื่อใหม่จะต้องสัมพันธ์กับรายการหลัก (คอนเทนเนอร์) เสมอ

ตัวให้บริการนี้ไม่ได้แทนที่เมธอด System.Management.Automation.Provider.Containercmdletprovider.Renameitem* อย่างไรก็ตาม ต่อไปนี้คือการใช้งานเริ่มต้น

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

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

  • เมื่อกำหนดคลาสของผู้ให้บริการ ผู้ให้บริการคอนเทนเนอร์ Windows PowerShell อาจประกาศความสามารถของผู้ให้บริการของ ExpandWildcards ตัวกรอง รวม หรือแยก จากการแจงนับ System.Management.Automation.Provider.Providercapabilities ในกรณีเหล่านี้ การใช้งานเมธอด System.Management.Automation.Provider.Containercmdletprovider.Getchilditems* จำเป็นต้องตรวจสอบให้แน่ใจว่าเส้นทางที่ส่งผ่านไปยังเมธอดนั้นตรงตามข้อกำหนดของความสามารถที่ระบุ เมื่อต้องการทำเช่นนี้ วิธีการควรเข้าถึงคุณสมบัติที่เหมาะสม ตัวอย่างเช่น คุณสมบัติ System.Management.Automation.Provider.Cmdletprovider.Exclude* และ System.Management.Automation.Provider.Cmdletprovider.Include*

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

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

  • การใช้งานเมธอด System.Management.Automation.Provider.Containercmdletprovider.Renameitem* ของคุณควรเรียก 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.Containercmdletprovider.Renameitem* วิธีการควรเรียก System.Management.Automation.Provider Cmdletprovider.ShouldContinue วิธีการ วิธีนี้จะส่งข้อความข้อความยืนยันไปยังผู้ใช้เพื่อให้ข้อเสนอแนะเพิ่มเติมเพื่อบอกว่าควรดำเนินการต่อไปหรือไม่ ผู้ให้บริการควรเรียก System.Management.Automation.Provider.Cmdletprovider.ShouldContinue เพื่อตรวจสอบเพิ่มเติมสำหรับการปรับเปลี่ยนระบบที่อาจเป็นอันตราย

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

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

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

การสร้างรายการใหม่

เมื่อต้องการสร้างรายการใหม่ ผู้ให้บริการคอนเทนเนอร์ต้องใช้เมธอด System.Management.Automation.Provider.Containercmdletprovider.Newitem* เพื่อรองรับการเรียกจาก cmdlet New-Item วิธีการนี้จะสร้างรายการข้อมูลที่อยู่ในเส้นทางที่ระบุ พารามิเตอร์ type ของ cmdlet มีประเภทที่ผู้ให้บริการกำหนดสำหรับรายการใหม่ ตัวอย่างเช่น ผู้ให้บริการ FileSystem ใช้พารามิเตอร์ type ที่มีค่าเป็น "file" หรือ "directory" พารามิเตอร์ newItemValue ของ cmdlet ระบุค่าเฉพาะของผู้ให้บริการสำหรับรายการใหม่

นี่คือการใช้งานเมธอด System.Management.Automation.Provider.Containercmdletprovider.Newitem* สำหรับผู้ให้บริการรายนี้

protected override void NewItem( string path, string type, object newItemValue )
{
    // Create the new item here after
    // performing necessary validations
    //
    // WriteItemObject(newItemValue, path, false);

    // Example
    //
    // if (ShouldProcess(path, "new item"))
    // {
    //      // Create a new item and then call WriteObject
    //      WriteObject(newItemValue, path, false);
    // }

} // NewItem
{
    case 1:
        {
            string name = pathChunks[0];

            if (TableNameIsValid(name))
            {
                tableName = name;
                retVal = PathType.Table;
            }
        }
        break;

    case 2:
        {
            string name = pathChunks[0];

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

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

  • เมธอด System.Management.Automation.Provider.Containercmdletprovider.Newitem* ควรทำการเปรียบเทียบสตริงที่ส่งผ่านพารามิเตอร์ type โดยคำนึงถึงขนาดตัวพิมพ์ ควรอนุญาตให้มีการจับคู่ที่ไม่ชัดเจนน้อยที่สุด ตัวอย่างเช่น สำหรับประเภท "ไฟล์" และ "ไดเร็กทอรี" ต้องใช้เพียงอักษรตัวแรกเท่านั้นจึงจะคลายความกำกวมได้ หากพารามิเตอร์ type ระบุประเภทที่ผู้ให้บริการของคุณไม่สามารถสร้างได้ เมธอด System.Management.Automation.Provider.Containercmdletprovider.Newitem* ควรเขียน ArgumentException พร้อมข้อความระบุประเภทที่ผู้ให้บริการสามารถสร้างได้

  • สำหรับพารามิเตอร์ newItemValue แนะนำให้ใช้เมธอด System.Management.Automation.Provider.Containercmdletprovider.Newitem* เพื่อยอมรับสตริงเป็นอย่างน้อย นอกจากนี้ควรยอมรับชนิดของวัตถุที่ถูกดึงข้อมูลโดยเมธอด System.Management.Automation.Provider.Itemcmdletprovider.Getitem* สำหรับเส้นทางเดียวกัน เมธอด System.Management.Automation.Provider.Containercmdletprovider.Newitem* สามารถใช้เมธอด System.Management.Automation.Languageprimitives.Convertto* เพื่อแปลงประเภทเป็นประเภทที่ต้องการ

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

การแนบพารามิเตอร์แบบไดนามิกกับ Cmdlet รายการใหม่

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

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

การลบรายการ

เมื่อต้องการลบรายการ ผู้ให้บริการ Windows PowerShell ต้องแทนที่เมธอด System.Management.Automation.Provider.Containercmdletprovider.Removeite* เพื่อรองรับการโทรจาก cmdlet Remove-Item วิธีนี้จะลบรายการออกจากที่เก็บข้อมูลตามเส้นทางที่ระบุ หากพารามิเตอร์ recurse ของ cmdlet Remove-Item ถูกตั้งค่าเป็น true วิธีการจะลบรายการย่อยทั้งหมดโดยไม่คำนึงถึงระดับ หากตั้งค่าพารามิเตอร์เป็น false วิธีการจะลบเฉพาะรายการเดียวในเส้นทางที่ระบุ

ผู้ให้บริการรายนี้ไม่รองรับการลบรายการ อย่างไรก็ตาม รหัสต่อไปนี้เป็นการใช้งานเริ่มต้นของ System.Management.Automation.Provider.Containercmdletprovider.Removeitem*

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

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

  • เมื่อกำหนดคลาสของผู้ให้บริการ ผู้ให้บริการคอนเทนเนอร์ Windows PowerShell อาจประกาศความสามารถของผู้ให้บริการของ ExpandWildcards ตัวกรอง รวม หรือแยก จากการแจงนับ System.Management.Automation.Provider.Providercapabilities ในกรณีเหล่านี้ การใช้งานเมธอด System.Management.Automation.Provider.Containercmdletprovider.Getchilditems* จำเป็นต้องตรวจสอบให้แน่ใจว่าเส้นทางที่ส่งผ่านไปยังเมธอดนั้นตรงตามข้อกำหนดของความสามารถที่ระบุ เมื่อต้องการทำเช่นนี้ วิธีการควรเข้าถึงคุณสมบัติที่เหมาะสม ตัวอย่างเช่น คุณสมบัติ System.Management.Automation.Provider.Cmdletprovider.Exclude* และ System.Management.Automation.Provider.Cmdletprovider.Include*

  • ตามค่าเริ่มต้น การแทนที่ของวิธีนี้ไม่ควรลบวัตถุเว้นแต่ว่าคุณสมบัติ System.Management.Automation.Provider.Cmdletprovider.Force* ถูกตั้งค่าเป็นจริง หากเส้นทางที่ระบุระบุคอนเทนเนอร์ คุณสมบัติ System.Management.Automation.Provider.Cmdletprovider.Force* ไม่จำเป็นต้องใช้

  • การใช้งาน System.Management.Automation.Provider.Containercmdletprovider.Removeitem* ของคุณมีหน้าที่ป้องกันการเรียกซ้ำแบบไม่สิ้นสุดเมื่อมีลิงก์แบบวงกลมและสิ่งที่คล้ายกัน ควรส่งข้อยกเว้นการยุติที่เหมาะสมเพื่อสะท้อนถึงเงื่อนไขดังกล่าว

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

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

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

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

การสืบค้นรายการย่อย

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

นี่คือการแทนที่สำหรับเมธอด System.Management.Automation.Provider.Containercmdletprovider.Haschilditems* หากมีส่วนของเส้นทางมากกว่าสองส่วนที่สร้างโดยวิธีตัวช่วย ChunkPath วิธีการจะส่งกลับ false เนื่องจากมีการกำหนดเฉพาะคอนเทนเนอร์ฐานข้อมูลและคอนเทนเนอร์ตารางเท่านั้น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการช่วยเหลือนี้ ดูวิธี ChunkPath ที่ถูกกล่าวถึงในการสร้างตัวให้บริการรายการ Windows PowerShell

protected override bool HasChildItems( string path )
{
    return false;
} // HasChildItems
        ErrorCategory.InvalidOperation, tableName));
}

return results;

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

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

  • หากผู้ให้บริการคอนเทนเนอร์เปิดเผยรูทที่ประกอบด้วยจุดเชื่อมต่อที่น่าสนใจ การใช้งานเมธอด System.Management.Automation.Provider.Containercmdletprovider.Haschilditems* ควรส่งคืน true เมื่อส่งผ่านค่า null หรือสตริงว่างใน สำหรับเส้นทาง

การคัดลอกรายการ

เมื่อต้องการคัดลอกรายการ ผู้ให้บริการคอนเทนเนอร์ต้องใช้เมธอด System.Management.Automation.Provider.ContainerCmdletProvider.CopyItem เพื่อรองรับการเรียกจาก cmdlet Copy-Item วิธีนี้จะคัดลอกรายการข้อมูลจากตำแหน่งที่ระบุโดยพารามิเตอร์ path ของ cmdlet ไปยังตำแหน่งที่ระบุโดยพารามิเตอร์ copyPath หากมีการระบุพารามิเตอร์ recurse วิธีการจะคัดลอกคอนเทนเนอร์ย่อยทั้งหมด หากไม่ได้ระบุพารามิเตอร์ วิธีการจะคัดลอกเฉพาะรายการระดับเดียวเท่านั้น

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

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

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

  • เมื่อกำหนดคลาสของผู้ให้บริการ ผู้ให้บริการคอนเทนเนอร์ Windows PowerShell อาจประกาศความสามารถของผู้ให้บริการของ ExpandWildcards ตัวกรอง รวม หรือแยก จากการแจงนับ System.Management.Automation.Provider.Providercapabilities ในกรณีเหล่านี้ การใช้งานเมธอด System.Management.Automation.Provider.Containercmdletprovider.Getchilditems* จำเป็นต้องตรวจสอบให้แน่ใจว่าเส้นทางที่ส่งผ่านไปยังเมธอดนั้นตรงตามข้อกำหนดของความสามารถที่ระบุ เมื่อต้องการทำเช่นนี้ วิธีการควรเข้าถึงคุณสมบัติที่เหมาะสม ตัวอย่างเช่น คุณสมบัติ System.Management.Automation.Provider.Cmdletprovider.Exclude* และ System.Management.Automation.Provider.Cmdletprovider.Include*

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

  • การใช้งาน System.Management.Automation.Provider.ContainerCmdletProvider.CopyItem ของคุณมีหน้าที่ป้องกันการเรียกซ้ำแบบไม่สิ้นสุดเมื่อมีลิงก์แบบวงกลมและสิ่งที่คล้ายกัน ควรส่งข้อยกเว้นการยุติที่เหมาะสมเพื่อสะท้อนถึงเงื่อนไขดังกล่าว

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

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

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

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

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

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

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

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

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

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

  1. เรียกใช้ cmdlet Get-ChildItem เพื่อดึงข้อมูลรายการของรายการย่อยจากตารางลูกค้าในฐานข้อมูล Access

    Get-ChildItem mydb:customers
    

    ผลลัพธ์ต่อไปนี้จะปรากฏขึ้น

    PSPath        : AccessDB::customers
    PSDrive       : mydb
    PSProvider    : System.Management.Automation.ProviderInfo
    PSIsContainer : True
    Data          : System.Data.DataRow
    Name          : Customers
    RowCount      : 91
    Columns       :
    
  2. เรียกใช้ cmdlet Get-ChildItem อีกครั้งเพื่อดึงข้อมูลของตาราง

    (Get-ChildItem mydb:customers).data
    

    ผลลัพธ์ต่อไปนี้จะปรากฏขึ้น

    TABLE_CAT   : c:\PS\northwind
    TABLE_SCHEM :
    TABLE_NAME  : Customers
    TABLE_TYPE  : TABLE
    REMARKS     :
    
  3. ตอนนี้ใช้ cmdlet Get-Item เพื่อดึงรายการที่แถว 0 ในตารางข้อมูล

    Get-Item mydb:\customers\0
    

    ผลลัพธ์ต่อไปนี้จะปรากฏขึ้น

    PSPath        : AccessDB::customers\0
    PSDrive       : mydb
    PSProvider    : System.Management.Automation.ProviderInfo
    PSIsContainer : False
    Data          : System.Data.DataRow
    RowNumber     : 0
    
  4. ใช้ Get-Item ซ้ำเพื่อดึงข้อมูลสำหรับรายการในแถว 0

    (Get-Item mydb:\customers\0).data
    

    ผลลัพธ์ต่อไปนี้จะปรากฏขึ้น

    CustomerID   : 1234
    CompanyName  : Fabrikam
    ContactName  : Eric Gruber
    ContactTitle : President
    Address      : 4567 Main Street
    City         : Buffalo
    Region       : NY
    PostalCode   : 98052
    Country      : USA
    Phone        : (425) 555-0100
    Fax          : (425) 555-0101
    
  5. ตอนนี้ใช้ cmdlet New-Item เพื่อเพิ่มแถวลงในตารางที่มีอยู่ พารามิเตอร์ Path ระบุเส้นทางแบบเต็มไปยังแถว และต้องระบุหมายเลขแถวที่มากกว่าจำนวนแถวที่มีอยู่ในตาราง พารามิเตอร์ Type ระบุ "แถว" เพื่อระบุประเภทของรายการที่จะเพิ่ม สุดท้าย พารามิเตอร์ Value จะระบุรายการค่าคอลัมน์ที่คั่นด้วยเครื่องหมายจุลภาคสำหรับแถว

    New-Item -Path mydb:\Customers\3 -ItemType "row" -Value "3,CustomerFirstName,CustomerLastName,CustomerEmailAddress,CustomerTitle,CustomerCompany,CustomerPhone, CustomerAddress,CustomerCity,CustomerState,CustomerZip,CustomerCountry"
    
  6. ตรวจสอบความถูกต้องของการดำเนินการรายการใหม่ดังต่อไปนี้

    PS mydb:\> cd Customers
    PS mydb:\Customers> (Get-Item 3).data
    

    ผลลัพธ์ต่อไปนี้จะปรากฏขึ้น

    ID        : 3
    FirstName : Eric
    LastName  : Gruber
    Email     : ericgruber@fabrikam.com
    Title     : President
    Company   : Fabrikam
    WorkPhone : (425) 555-0100
    Address   : 4567 Main Street
    City      : Buffalo
    State     : NY
    Zip       : 98052
    Country   : USA
    

ดูเพิ่มเติม

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

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

การใช้งานรายการผู้ให้บริการ Windows PowerShell

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

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

Windows PowerShell SDK

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

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