Dois-je mettre en œuvre l'interface IPropertyCmdletProvider pour une PowerShell Cmdlet?

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

  •  20-09-2019
  •  | 
  •  
Était-ce utile?

La solution

Wow ces documents sont un peu vieux. Il n'y a pas Get / cmdlets Set-propriété. Celle-ci doit se référer aux Get / cmdlets Set-ItemProperty. Dans le cas du RegistryProvider, ces cmdlets sont essentiels, car il est le seul moyen d'accéder à des valeurs de registre. Autrement dit, les cmdlets ne reviennent Get-Item / ChildItem objets RegistryKey et jamais un objet de valeur de Registre (ils n'existent pas dans .NET). Vous devez utiliser Get / Set-ItemProperty pour obtenir / set regvals spécifiques sous regkey.

OTOH le fournisseur FileSystem vous permet d'accéder directement à des conteneurs (dirs) et (fichiers) leafs. Vous pouvez obtenir le contenu d'un fichier directement. , Vous pouvez toujours utiliser Get-ItemProperty si vous voulez obtenir le LastWriteTime d'un fichier:

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

Cependant, je n'accéder normalement cette propriété de cette façon. Je trouve la sortie est une façon de bavard. Je ferais ceci:

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

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

En ce qui concerne l'orientation, je dirais que vous avez vraiment besoin de mettre en œuvre cette interface si vous prenez l'approche RegistryProvider mais il est moins important si vous allez l'itinéraire le fournisseur FileSystem est allé parce que vous pouvez accéder à easly les propriétés directement des objets retournés par Get-Item / ChildItem.

scroll top