Devo implementare l'interfaccia IPropertyCmdletProvider per un PowerShell Cmdlet?

StackOverflow https://stackoverflow.com/questions/1539840

  •  20-09-2019
  •  | 
  •  

Domanda

Sto scrivendo un NavigationCmdletProvider per PowerShell. Attraverso la GetItem e GetChildItems sostituzioni, ci sono vari tipi di oggetti che sono scritte alla pipeline.

La documentazione per interfaccia IPropertyCmdletProvider noi il seguente detto:

  

Gli sviluppatori dovrebbero implementare questo   interfaccia nella seguente   condizioni:

     
      
  • Quando gli utenti devono utilizzare i cmdlet quali Get-proprietà e Set-proprietà   cmdlet.
  •   
  • Per un provider che derivano dalla ItemCmdletProvider,   ContainerCmdletProvider, o   classi NavigationCmdletProvider.
  •   

Confusione:

Non un sacco di informazioni utili a mio parere, perché come avrebbe un utente sapere se deve utilizzare il Get-proprietà e Set-Proprietà cmdlet di? Immagino che sta a l'autore cmdlet. La grande confusione (almeno per me) è se il cmdlet scrive gli oggetti alla pipeline; e quegli oggetti hanno proprietà che sono esposti richiamabile (cioè get / set); Quali sono i vantaggi di chiamare Get-Proprietà / Set-proprietà hanno oltre manipolare l'oggetto (s) direttamente?

Domanda:

In quali dovrebbe essere attuato l'interfaccia IPropertyCmdletProvider circostanze?

Lo so che mi manca qualcosa qui! Tutta la comprensione sarebbe molto apprezzato.

È stato utile?

Soluzione

Wow quei documenti sono un po 'vecchio. Non ci sono cmdlet get / set-proprietà. Questo deve essere riferita ai cmdlet Get / Set-ItemProperty. Nel caso del RegistryProvider, questi cmdlet sono essenziali, perché è l'unico modo per accedere ai valori del Registro di sistema. Cioè, i cmdlet Get-Item / ChildItem restituiscono solo gli oggetti RegistryKey e mai un oggetto di valore di registro (che non esistono in .NET). Devi usare Get / Set-ItemProperty per ottenere / impostare regvals specifiche sotto un regkey.

OTOH il provider FileSystem permette di accedere direttamente contenitori (directory) e foglie (file). È possibile ottenere il contenuto di un file direttamente. Ancora, è possibile utilizzare Get-ItemProperty se si desidera ottenere il LastWriteTime di un file:

PS> Get-ItemProperty -Path .\DotNetTypes.format.ps1xml -Name LastWriteTime


PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Win
                dows\System32\WindowsPowerShell\v1.0\DotNetT
                ypes.format.ps1xml
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Win
                dows\System32\WindowsPowerShell\v1.0
PSChildName   : DotNetTypes.format.ps1xml
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
LastWriteTime : 4/24/2009 11:21:46 AM

Tuttavia, vorrei normalmente non accedere a questa proprietà in questo modo. Trovo l'uscita è modo di verbose. Vorrei fare questo:

PS> (Get-Item .\DotNetTypes.format.ps1xml).LastWriteTime

Friday, April 24, 2009 11:21:46 AM

Per quanto riguarda la guida, direi che si ha realmente bisogno per implementare questa interfaccia, se si prende l'approccio RegistryProvider ma è meno importante se si va il percorso del provider FileSystem è andato, perché è possibile accedere facilmente alle proprietà direttamente degli oggetti restituiti da Get-Item / ChildItem.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top