Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Cet exemple montre comment créer une applet de commande qui permet à l’utilisateur de s’inscrire aux événements déclenchés par System.IO.FileSystemWatcher. Avec cette applet de commande, les utilisateurs peuvent inscrire une action à exécuter lorsqu’un fichier est créé sous un répertoire spécifique. Cet exemple dérive de la classe de base Microsoft.PowerShell.Commands.ObjectEventRegistrationBase.
Comment générer l’exemple à l’aide de Visual Studio
Une fois le Kit de développement logiciel (SDK) Windows PowerShell 2.0 installé, accédez au dossier Events01. L’emplacement par défaut est
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\WindowsPowerShell\csharp\Events01.Double-cliquez sur l’icône du fichier de solution (.sln). L’exemple de projet s’ouvre dans Microsoft Visual Studio.
Dans le menu Générer, sélectionnez Générer la solution pour générer la bibliothèque pour l’exemple dans les dossiers
\binou\bin\debugpar défaut.
Comment exécuter l’exemple
Créez le dossier de module suivant :
[user]\Documents\WindowsPowerShell\Modules\events01Copiez le fichier de bibliothèque de l’exemple dans le dossier du module.
Démarrez Windows PowerShell.
Exécutez la commande suivante pour charger l’applet de commande dans Windows PowerShell :
Import-Module events01Utilisez l’applet de commande Register-FileSystemEvent pour inscrire une action qui écrit un message lorsqu’un fichier est créé sous le répertoire TEMP.
Register-FileSystemEvent $Env:TEMP Created -Filter "*.txt" -Action { Write-Host "A file was created in the TEMP directory" }Créez un fichier sous le répertoire TEMP et notez que l’action est exécutée (le message s’affiche).
Il s’agit d’un exemple de sortie qui résulte en suivant ces étapes.
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
1 26932870-d3b... NotStarted False Write-Host "A f...
Set-Content $Env:TEMP\test.txt "This is a test file"
A file was created in the TEMP directory
Spécifications
Cet exemple nécessite Windows PowerShell 2.0.
Montre ce qui suit
Cet exemple illustre ce qui suit.
Comment écrire une applet de commande pour l’inscription d’événements
L’applet de commande dérive de la classe Microsoft.PowerShell.Commands.ObjectEventRegistrationBase, qui prend en charge les paramètres communs aux applets de commande Register-*Event. Les applets de commande dérivées de Microsoft.PowerShell.Commands.ObjectEventRegistrationBase doivent uniquement définir leurs paramètres particuliers et remplacer les méthodes GetSourceObject et GetSourceObjectEventName abstraites.
Exemple :
Cet exemple montre comment s’inscrire aux événements déclenchés par System.IO.FileSystemWatcher.
namespace Sample
{
using System;
using System.IO;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using Microsoft.PowerShell.Commands;
[Cmdlet(VerbsLifecycle.Register, "FileSystemEvent")]
public class RegisterObjectEventCommand : ObjectEventRegistrationBase
{
/// <summary>The FileSystemWatcher that exposes the events.</summary>
private FileSystemWatcher fileSystemWatcher = new FileSystemWatcher();
/// <summary>Name of the event to which the cmdlet registers.</summary>
private string eventName = null;
/// <summary>
/// Gets or sets the path that will be monitored by the FileSystemWatcher.
/// </summary>
[Parameter(Mandatory = true, Position = 0)]
public string Path
{
get
{
return this.fileSystemWatcher.Path;
}
set
{
this.fileSystemWatcher.Path = value;
}
}
/// <summary>
/// Gets or sets the name of the event to which the cmdlet registers.
/// <para>
/// Currently System.IO.FileSystemWatcher exposes 6 events: Changed, Created,
/// Deleted, Disposed, Error, and Renamed. Check the documentation of
/// FileSystemWatcher for details on each event.
/// </para>
/// </summary>
[Parameter(Mandatory = true, Position = 1)]
public string EventName
{
get
{
return this.eventName;
}
set
{
this.eventName = value;
}
}
/// <summary>
/// Gets or sets the filter that will be user by the FileSystemWatcher.
/// </summary>
[Parameter(Mandatory = false)]
public string Filter
{
get
{
return this.fileSystemWatcher.Filter;
}
set
{
this.fileSystemWatcher.Filter = value;
}
}
/// <summary>
/// Derived classes must implement this method to return the object that generates
/// the events to be monitored.
/// </summary>
/// <returns> This sample returns an instance of System.IO.FileSystemWatcher</returns>
protected override object GetSourceObject()
{
return this.fileSystemWatcher;
}
/// <summary>
/// Derived classes must implement this method to return the name of the event to
/// be monitored. This event must be exposed by the input object.
/// </summary>
/// <returns> This sample returns the event specified by the user with the -EventName parameter.</returns>
protected override string GetSourceObjectEventName()
{
return this.eventName;
}
}
}