मिल-मॉड्यूल -ListAvailable: क्यों या कैसे कर रहे हैं मॉड्यूल मुद्रित वर्गों में विभाजित करके निर्देशिका?

0

सवाल

जब मैं पाने के लिए "-मॉड्यूल -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 = प्राप्त करें-मॉड्यूल -ListAvailable" यह की तरह लगता है सिर्फ एक सरल सरणी, अभी तक यह भी प्रिंट में इन वर्गों की है ।

कैसे किया जाता है?

वहाँ भी नहीं लग रहे हो एक "निर्देशिका" पर संपत्ति PSModuleInfo वस्तुओं.

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

सबसे अच्छा जवाब

4

Powershell अपने स्वयं के स्वरूपण इंजन है । जब भी आप का उपयोग करें कि cmdlet, आप आउटपुट की एक सूची System.Management.Automation.PSModuleInfo वस्तुओं.

मुद्रण से पहले वस्तु "कच्चे", Powershell की जाँच करें अगर वहाँ है एक पूर्वनिर्धारित स्वरूपण के लिए उपलब्ध के प्रकार और यदि हां, तो इसे लागू होते हैं. क्या आप देखने का परिणाम है कि परिवर्तन है.

अप करने के लिए पी एस 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 कस्टम दर्शनों की संख्या प्रकार के लिए. के लिए एक टेबल देखें (डिफ़ॉल्ट है, जो दिखाया गया है), के लिए एक सूची और विस्तृत है, जो हिदायत करने के लिए क्या दिखाने के लिए जब आप का उपयोग Format-List & Format-Wide.

एमएस से डॉक्टर

प्रदर्शन के प्रारूप के लिए वस्तुओं है कि कर रहे हैं द्वारा दिए आदेश (cmdlets, कार्यों, और स्क्रिप्ट) द्वारा परिभाषित कर रहे हैं का उपयोग कर स्वरूपण फ़ाइलें (प्रारूप.ps1xml फ़ाइलें) । कई के इन फ़ाइलों द्वारा प्रदान की जाती हैं PowerShell को परिभाषित करने के लिए प्रदर्शन स्वरूप के लिए उन वस्तुओं से लौटे PowerShell-प्रदान की आज्ञाओं, इस तरह के रूप में प्रणाली.निदान । प्रक्रिया वस्तु लौटे द्वारा मिल-प्रक्रिया cmdlet. हालांकि, आप भी कर सकते हैं बनाने के अपने स्वयं के कस्टम स्वरूपण फ़ाइलों को अधिलेखित करने के लिए डिफ़ॉल्ट प्रदर्शन प्रारूपों के लिए या आप लिख सकते हैं एक कस्टम स्वरूपण फ़ाइल को परिभाषित करने के लिए प्रदर्शन की वस्तुओं से लौटे अपने खुद के आदेशों.

PowerShell का उपयोग करता है डेटा में इन फ़ाइलों स्वरूपण निर्धारित करने के लिए क्या प्रदर्शित किया जाता है और कैसे प्रदर्शित डेटा स्वरूपित है. प्रदर्शित डेटा शामिल कर सकते हैं एक वस्तु के गुणों या मूल्य के लिए एक स्क्रिप्ट है.

आप अपने खुद बना सकते हैं फ़ाइलें (*.ps1xml) और उन्हें में शामिल अपने मॉड्यूल या उन्हें लोड में अपने सत्र को संशोधित करने के लिए जिस तरह से उत्पादन में प्रदर्शित किया जाता है ।

आप भी जोड़ सकते हैं स्वरूपण का उत्पादन करने के लिए अपने कार्यों को परिभाषित द्वारा एक डिफ़ॉल्ट प्रदर्शन सेट (उर्फ क्या गुण प्रदर्शित किया जाना चाहिए).

उदाहरण के लिए, इस साधारण समारोह:


  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

दोनों outputs करते हैं एक ही जानकारी है, लेकिन सांत्वना एक विशेष स्वरूपण लागू करने के लिए यह दिखाने के लिए है कि क्या केवल सबसे महत्वपूर्ण, उपयोगी है, आदि...

आप उपयोग कर सकते हैं स्वरूपण विचार करने के लिए:

  • Colorize उत्पादन
  • पेड़ बनाने के लिए
  • परिवर्तन के उत्पादन के आधार पर शर्त
  • जोड़ें आभासी गुण
  • स्तंभ चौड़ाई को परिभाषित
  • परिभाषित प्रदर्शित स्तंभ शीर्षक
  • आदि...

संदर्भ:

स्वरूपण फ़ाइल अवलोकन

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 के साथ एक सरणी के मॉड्यूल वस्तुओं का उपयोग उपयोगकर्ता के लिए डिफ़ॉल्ट स्वरूप है, इसे चलाने के लिए होगा स्क्रिप्ट ब्लॉक में GroupByScriptBlock प्रत्येक वस्तु पर पहली बार बाहर काम करने के लिए समूहीकरण.

2021-11-23 21:29:07

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में