Soll ich die IPropertyCmdletProvider Schnittstelle für ein Powershell-Cmdlets implementieren?

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

  •  20-09-2019
  •  | 
  •  

Frage

Ich schreibe eine NavigationCmdletProvider für Powershell. Durch die GetItem und IPropertyCmdletProvider Schnittstelle sagen uns die folgenden:

  

Entwickler sollten diese implementieren   Schnittstelle unter der folgenden   Bedingungen:

     
      
  • Wenn Benutzer müssen Cmdlets wie Get-Property und Set-Liegenschaften   Cmdlets.
  •   
  • Für einen Anbieter, die von den ItemCmdletProvider ableiten,   ContainerCmdletProvider oder   NavigationCmdletProvider Klassen.
  •   

Verwirrung:

Nicht viele nützliche Informationen meiner Meinung nach, denn wie würde ein Benutzer wissen, ob sie müssen verwenden Sie die Get-Property und Set-Property-Cmdlets des? Ich könnte mir vorstellen, das ist zum Cmdlets Autor auf. Die große Verwirrung (zumindest für mich) ist, wenn die Cmdlets die Objekte in die Pipeline schreibt; und diese Objekte haben Eigenschaften ausgesetzt, die aufrufbar sind (das heißt get / set); Welche Vorteile bietet Get-Property / Set-Eigenschaft, um das Objekt zu manipulieren hat über Telefonnummer (n) direkt?

Frage:

Unter welchen Umständen sollte die IPropertyCmdletProvider umgesetzt werden Schnittstelle?

Ich weiß, ich bin hier fehlt etwas! Einsicht wäre sehr geschätzt.

War es hilfreich?

Lösung

Wow diese Dokumente sind ein bisschen alt. Es gibt keine Get / Set-Property-Cmdlets. Dies muss auf die Get / Set-ItemProperty-Cmdlets beziehen werden. Im Falle des RegistryProvider sind diese Cmdlets wichtig, weil es die einzige Möglichkeit, den Zugriff auf Registry-Werte ist. Das heißt, das Get-Item / ChildItem Cmdlets Rückkehr nur RegistryKey Objekte und nie einen Registrierungswert Objekt (sie existieren nicht in .NET). Sie müssen verwenden Get / Set-ItemProperty zu bekommen / set spezifische regvals unter einem regkey.

OTOH die Filesystem-Anbieter können Sie direkt Zugang Container (dirs) und Blätter (Dateien). Sie können direkt den Inhalt einer Datei. Dennoch können Sie Get-ItemProperty verwenden, wenn Sie die Lastwritetime einer Datei erhalten möchten:

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

Allerdings würde ich nicht normalerweise Zugriff auf diese Eigenschaft in dieser Art und Weise. Ich finde die Ausgabe Art und Weise zu ausführlich. Ich würde dies tun:

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

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

Wie für die Führung, würde ich sagen, dass Sie wirklich diese Schnittstelle implementieren müssen, wenn Sie den RegistryProvider Ansatz nehmen, aber es ist weniger wichtig, wenn Sie die Route mit den Filesystem-Anbietern gehen gingen, weil Sie easly die Eigenschaften direkt zugreifen können von den zurückgegebenen Objekten von Get-Item / ChildItem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top