Ukázka Events01

Tento příklad ukazuje, jak vytvořit rutinu, která umožňuje uživateli registrovat události, které jsou vyvolány System. IO. FileSystemWatcher. Pomocí této rutiny můžou uživatelé zaregistrovat akci, která se má provést, když se v určitém adresáři vytvoří soubor. Tato ukázka je odvozena z základní třídy Microsoft. PowerShell. Commands. ObjectEventRegistrationBase .

Postup sestavení ukázky pomocí Visual Studio.

  1. s nainstalovanou sadou Windows PowerShell 2,0 SDK přejděte do složky Events01. Výchozí umístění je C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\WindowsPowerShell\csharp\Events01 .

  2. Dvakrát klikněte na ikonu pro soubor řešení (. sln). Tím se otevře vzorový projekt v Microsoft Visual Studio.

  3. V nabídce sestavení vyberte Sestavit řešení. Knihovna pro ukázku bude sestavena ve výchozích \bin \bin\debug složkách nebo.

Spuštění ukázky

  1. Vytvořte následující složku modulu:

    [user]/documents/windowspowershell/modules/events01

  2. Zkopírujte soubor knihovny pro ukázku do složky modul.

  3. Spusťte prostředí Windows PowerShell.

  4. Spusťte následující příkaz, který načte rutinu do Windows PowerShell:

    import-module events01
    
  5. Pomocí rutiny Register-FileSystemEvent Zaregistrujte akci, která při vytvoření souboru v DOČASNÉm adresáři zapíše zprávu.

    Register-FileSystemEvent $env:temp Created -filter "*.txt" -action { Write-Host "A file was created in the TEMP directory" }
    
  6. V DOČASNÉm adresáři vytvořte soubor a Všimněte si, že se tato akce provede (zpráva se zobrazí).

Toto je ukázkový výstup, který je výsledkem těchto kroků.

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

Požadavky

tato ukázka vyžaduje Windows PowerShell 2,0.

Demonstruje

Tato ukázka demonstruje následující.

Zápis rutiny pro registraci události

Rutina je odvozena z třídy Microsoft. PowerShell. Commands. ObjectEventRegistrationBase , která poskytuje podporu pro parametry společné Register-*Event rutinám. Rutiny, které jsou odvozeny z Microsoft. PowerShell. Commands. ObjectEventRegistrationBase stačí definovat jejich konkrétní parametry a přepsat GetSourceObject GetSourceObjectEventName abstraktní metody a.

Příklad

V této ukázce se dozvíte, jak se zaregistrovat pro události vyvolané 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;
        }
    }
}

Viz také

Vytvoření rutiny Windows PowerShellu