Ukázka GetProcessSample04
V této ukázce se dozvíte, jak implementovat rutinu, která načte procesy na místním počítači. Vygeneruje neukončující chybu, pokud dojde k chybě při načítání procesu. tato rutina je zjednodušená verze Get-Process
rutiny, kterou poskytuje Windows PowerShell 2,0.
Postup sestavení ukázky pomocí Visual Studio.
s nainstalovanou sadou Windows PowerShell 2,0 SDK přejděte do složky GetProcessSample04. výchozí umístění je C:\Program Files (x86) \microsoft sdk \ Windows \v7.0\Samples\sysmgmt\WindowsPowerShell\csharp\GetProcessSample04.
Dvakrát klikněte na ikonu pro soubor řešení (. sln). Tím se otevře vzorový projekt v Visual Studio.
V nabídce sestavení vyberte Sestavit řešení.
Knihovna pro ukázku bude sestavená ve výchozích složkách \bin nebo \bin\debug.
Spuštění ukázky
Vytvořte následující složku modulu:
[user]/documents/windowspowershell/modules/GetProcessSample04
Zkopírujte ukázkové sestavení do složky modul.
Spusťte prostředí Windows PowerShell.
Spusťte následující příkaz, který načte sestavení do Windows PowerShell:
Import-module getprossessample04
Spuštěním následujícího příkazu spusťte rutinu:
get-proc
Požadavky
tato ukázka vyžaduje Windows PowerShell 2,0.
Demonstruje
Tato ukázka demonstruje následující.
Deklarace třídy rutiny pomocí atributu rutiny.
Deklarace parametru rutiny pomocí atributu parametru.
Určení pozice parametru.
Určuje, že parametr přebírá vstup z kanálu. Vstup lze považovat z objektu nebo hodnoty z vlastnosti objektu, jehož název vlastnosti je stejný jako název parametru.
Deklarace ověřovacího atributu pro vstup parametru.
Zachytávání neukončující chyby a zápis chybové zprávy do datového proudu chyb.
Příklad
Tento příklad ukazuje, jak vytvořit rutinu, která zpracovává neukončující chyby a zapisuje chybové zprávy do datového proudu chyb.
namespace Microsoft.Samples.PowerShell.Commands
{
using System;
using System.Diagnostics;
using System.Management.Automation; // Windows PowerShell namespace.
#region GetProcCommand
/// <summary>
/// This class implements the get-proc cmdlet.
/// </summary>
[Cmdlet(VerbsCommon.Get, "Proc")]
public class GetProcCommand : Cmdlet
{
#region Parameters
/// <summary>
/// The names of the processes to act on.
/// </summary>
private string[] processNames;
/// <summary>
/// Gets or sets the list of process names on
/// which the Get-Proc cmdlet will work.
/// </summary>
[Parameter(
Position = 0,
ValueFromPipeline = true,
ValueFromPipelineByPropertyName = true)]
[ValidateNotNullOrEmpty]
public string[] Name
{
get { return this.processNames; }
set { this.processNames = value; }
}
#endregion Parameters
#region Cmdlet Overrides
/// <summary>
/// The ProcessRecord method calls the Process.GetProcesses
/// method to retrieve the processes specified by the Name
/// parameter. Then, the WriteObject method writes the
/// associated processes to the pipeline.
/// </summary>
protected override void ProcessRecord()
{
// If no process names are passed to cmdlet, get all
// processes.
if (this.processNames == null)
{
WriteObject(Process.GetProcesses(), true);
}
else
{
// If process names are passed to the cmdlet, get and write
// the associated processes.
// If a nonterminating error occurs while retrieving processes,
// call the WriteError method to send an error record to the
// error stream.
foreach (string name in this.processNames)
{
Process[] processes;
try
{
processes = Process.GetProcessesByName(name);
}
catch (InvalidOperationException ex)
{
WriteError(new ErrorRecord(
ex,
"UnableToAccessProcessByName",
ErrorCategory.InvalidOperation,
name));
continue;
}
WriteObject(processes, true);
} // foreach (string name...
} // else
} // ProcessRecord
#endregion Overrides
} // End GetProcCommand class.
#endregion GetProcCommand
}
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro