ทางเดียวที่จะช่วยฉันศูนย์ควบคุม kde ในโมดูล-ListAvailable:ทำไมหรือว่าเป็นมอดูลพิมพ์ออกของส่วนหนึ่งถูกแบ่งแยกโดยไดเรกทอรี?

0

คำถาม

ตอนที่ฉันทำ"ทางเดียวที่จะช่วยฉันศูนย์ควบคุม kde ในโมดูล-ListAvailable",powershell จะพิมพ์ 169 มอดูล สำหรับตัวอย่าง:

    Directory: C:\Program Files (x86)\Microsoft SQL Server\150\Tools\PowerShell\Modules


ModuleType Version    Name                                ExportedCommands                                                               
---------- -------    ----                                ----------------                                                               
Manifest   15.0       SQLPS                               {Backup-SqlDatabase, Save-SqlMigrationReport, Invoke-PolicyEvaluation, Resto...


    Directory: C:\Users\user\Documents\WindowsPowerShell\Modules


ModuleType Version    Name                                ExportedCommands                                                               
---------- -------    ----                                ----------------                                                               
Script     3.0.1      DotNetVersionLister                 Get-STDotNetVersion                                                            
Script     1.4.7      PackageManagement                   {Find-Package, Get-Package, Get-PackageProvider, Get-PackageSource...}         
Script     2.2.5      PowerShellGet                       {Find-Command, Find-DSCResource, Find-Module, Find-RoleCapability...}          
Script     2.2.16     VSSetup                             {Get-VSSetupInstance, Select-VSSetupInstance}                                  


    Directory: C:\Program Files\WindowsPowerShell\Modules


ModuleType Version    Name                                ExportedCommands                                                               
---------- -------    ----                                ----------------                                                               
Script     1.3.1      Configuration                       {Import-Configuration, Export-Configuration, Get-StoragePath, Add-MetadataCo...

ตอนที่ฉันถูกจับนี้ในตารางคู่ลำดับ:"$m=ทางเดียวที่จะช่วยฉันศูนย์ควบคุม kde ในโมดูล-ListAvailable" มันดูเหมือนแบบอาเรย์แต่มันก็ยังรอยนิ้วมือในพวกนี้ของส่วนหนึ่ง.

เป็นไงบ้างเรื่องเสร็จเรียบร้อย?

นั่นไม่แม้แต่ดูเหมือนจะเป็นไดเรกทอรี"ทรัพย์สินบน PSModuleInfo™à§à±à•à-à.

powershell
2021-11-23 19:46:21
2

คำตอบที่ดีที่สุด

4

Powershell ต้องของการฟอร์แมตเครื่องยนต์ เมื่อไรก็ตามที่คุณใช้มัน cmdlet คุณส่งออกเป็นรายชื่อของ System.Management.Automation.PSModuleInfo วัตถุ.

ก่อนที่การพิมพ์ของ"แบบ raw",Powershell ตรวจสอบว่ามันมีค่าที่นิยามไว้แล้วทำการฟอร์แมตพร้อมใช้งานสำหรับคนประเภทและถ้างั้น,ปรับใช้มัน. สิ่งที่คุณเห็นคือผลของนรกลายร่างน่ะ

ขึ้น PS 5.1 มันจบลงที่ธุรกิจการฟอร์แมตการปรับแต่งแฟ้มกำหนดไว้เช่น*.ps1xml งแฟ้ม จาก PS6.0 และใหม่กว่าที่,งค่าเส้นขอบด้านบนรูปแบบตอนนี้รวมไปในรหัสต้นทางของแต่คุณยังสามารถสร้างเพิ่มเติมรูปแบบแฟ้มที่ต้องการ

คุณสามารถมุมมองโหลดรูปแบบชนิดใช้ Get-FormatData cmdlet.

ถ้าคุณสนใจ Get-Module cmdlet โดยเฉพาะตรวจออกไป (Get-FormatData -TypeName System.Management.Automation.PSModuleInfo).FormatViewDefinition. คุณจะเห็นบางอย่างเหมือนนี้:

Name   Control
----   -------
Module System.Management.Automation.TableControl
Module System.Management.Automation.WideControl
Module System.Management.Automation.ListControl

นี่หมายความว่ามีวัตถุของประเภทต้องพิเศษคำแนะนำเรื่องของแบบที่มันควรจะส่งออกของมันค้า. ในกรณีนั้นมันเกี่ยวการจัดกลุ่มโดนเส้นทางและแสดงที่เจาะจงคอลัมน์(ModuleType,เวอร์ชั่นชื่อของ ExportedCommands). Powershell ไม่ได้เลือกที่จะแสดงคุณสมบัติของพวกนั้นโดยตัวมันเองมันต้องคำสั่งจากค่าที่นิยามไว้แล้วชอบอะไรที่ต้องแสดงผล

ในกรณีของ PSModuleInfo ประเภทเราสามารถเห็นว่ามันมี 3 มุมมองกำหนดเองสำหรับคนประเภทนี้ หนึ่งสำหรับโต๊ะมุมมอง(ซึ่งเป็นค่าปริยายแสดง),หนึ่งสำหรับรายการและกว้างซึ่ง instruct อะไรที่ต้องแสดงตอนที่คุณใช้ Format-List & Format-Wide.

จากคุณหมอ

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

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

คุณสามารถสร้างของตัวเองแฟ้ม(*.ps1xml)และรวมพวกเขาอยู่ในมอดูลหรือเรียกใช้พวกเขาอยู่ในกลุ่มเพื่อแก้ไขวิธีที่ส่งออกได้คือแสดง

คุณยังสามารถเพิ่มการฟอร์แมตต้องการส่งออกของคุณฟังก์ชันโดย defining เป็นค่าปริยายการแสดงตั้ง(หรือสิ่งที่คุณสมบัติของจะให้แสดง).

สำหรับตัวอย่าเอาเรื่องนี้ง่ายกฟังก์ชัน:


  Function Get-EmployeesInfos() {
    $Output = @(
        
        [PSCustomObject]@{
            FirstName            = 'RObert'
            LastName             = 'Samson'
            SocialSecurityNumber = '123 344 555'
            Age                  = '32'
            Salary               = '100000'
        },
        
        [PSCustomObject]@{
            FirstName            = 'Pablo'
            LastName             = 'Morrison'
            SocialSecurityNumber = '123 345 555'
            Age                  = '22'
            Salary               = '10000'
        }


    )
    
    # Default display set
    $defaultDisplaySet = 'FirstName', 'LastName'
    $defaultDisplayPropertySet = New-Object System.Management.Automation.PSPropertySet('DefaultDisplayPropertySet', [string[]]$defaultDisplaySet)
    $Output | Add-Member MemberSet PSStandardMembers ([System.Management.Automation.PSMemberInfo[]]@($defaultDisplayPropertySet)) -Force
    return $Output


    return $Output
  }

โดยที่ไม่มีปริยายการแสดงตั้งค่าคุณจะเอาของมาตรฐานส่งผลกับทั้งหมดคุณสมบัติของในรายการนะ

enter image description here

กับค่าปริยายการแสดงตั้งค่าเพิ่มอยู่นี่เป็นคนรุ่นใหม่ส่วนส่งออก

enter image description here

ทั้งสองแสดงผลทำอย่างจะบรรจุข้อมูลที่เหมือนกันแต่งคอนโซลมีคนพิเศษณะฟอร์แมตที่ถูกใช้เพื่อให้แสดงเฉพาะคืออะไรสำคัญที่สุด,มีประโยชน์เป็นต้...

คุณสามารถใช้รูปแบบมุมมองไปยัง:

  • ปรับสีแสดงผล
  • สร้างต้นไม้
  • เปลี่ยนผลลัพธ์จากสภาพ
  • เพิ่มเสมือนคุณสมบัติ
  • กำหนดความกว้างคอลัมน์@label
  • กำหนดให้แสดงหัวเรื่องคอลัมน์
  • etc...

จะอ้างอิงไปยัง:

รูปแบบแฟ้มมุมมองภาพรวม

4Sysops-รูปแบบวัตถุผลส่งออกใน Powershell กับรูปแบบps1xml แฟ้ม

ปรับปรุง-FormatData

2021-11-24 00:29:40
1

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

นี่คือสะดวกสถานที่ในอนายพลเพราะว่าคุณสามารถใช้ cmdlets อย่างเช่น Sort-Object แล้ว Where-Object ต้องเรียนและตัวกรองผลลัพธ์และจากนั้นมีผลตรวจแสดงอยู่ในกลุ่มหลังจากสิ่งที่เกิดขึ้น

ในความกตัวอย่างได้ผลลัพธ์ที่เข้าเงื่อนไขการกรองแล้วก็แสดงในกลุ่ม มีความหมายสำคัญนั่นคือไม่ Get-Module หรือ Where-Object คือรู้ไหมว่าผลสุดท้ายก็จบลงจะแสดงในกลุ่มพวกเขาแค่ตกลงกับวัตถุ.

PS> Get-Module -ListAvailable | Where-Object Name -Match Read

    Directory: C:\program files\powershell\7\Modules

ModuleType Version    PreRelease Name
---------- -------    ---------- ----
Script     2.1.0                 PSReadLine                          ...
Binary     2.0.3                 ThreadJob                           ...

    Directory: C:\Program Files\WindowsPowerShell\Modules

ModuleType Version    PreRelease Name
---------- -------    ---------- ----
Script     2.0.0      beta2      PSReadline                          ...

คุณสามารถเห็นสิ่งที่ PowerShell กำลังทำอะไรอยู่ในนี้เฉพาะคดีจากการดูค อนปริยายรูปแบบรหัสสำหรับมอดูล บ GitHub. คนที่เกี่ยวข้องส่วนหนึ่งคือ GroupByScriptBlock เรียก(กับเล็กน้อย reformatting เพื่อคุมห้องระบบประสาทพวกสายความยาว):

yield return new FormatViewDefinition("Module",
    TableControl.Create()
        .GroupByScriptBlock(@"
            Split-Path -Parent $_.Path | ForEach-Object {
                if([Version]::TryParse((Split-Path $_ -Leaf), [ref]$null)) {
                    Split-Path -Parent $_
                } else {
                    $_
                }
            } | Split-Path -Parent", customControl: sharedControls[0])
        .AddHeader(Alignment.Left, width: 10)

        ...

ตอนที่ PowerShell แสดงถึงการตารางคู่ลำดับของศูนย์ควบคุม kde ในโมดูลวัตถุต้องของผู้ใช้โดยใช้รูปแบบปริยาย,มันจะหมดสคริปต์ในบล็อก GroupByScriptBlock กับสิ่งแรกที่ต้องทำงานออกจากการจัดกลุ่ม.

2021-11-23 21:29:07

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่