Przykład GetProcessSample03
W tym przykładzie pokazano, jak zaimplementować polecenie cmdlet, które pobiera procesy na komputerze lokalnym. Udostępnia parametr, który może akceptować obiekt z potoku lub wartość z właściwości obiektu, którego nazwa właściwości jest taka sama Name
jak nazwa parametru. To polecenie cmdlet jest uproszczoną wersją polecenia cmdlet dostarczanego przez Get-Process
program Windows PowerShell 2.0.
Jak skompilować przykład przy użyciu Visual Studio.
Po zainstalowaniu Windows PowerShell 2.0 SDK przejdź do folderu GetProcessSample03. Domyślna lokalizacja to C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\WindowsPowerShell\csharp\GetProcessSample03.
Kliknij dwukrotnie ikonę pliku rozwiązania (sln). Spowoduje to otwarcie przykładowego projektu w Visual Studio.
W menu Kompilacja wybierz pozycję Build Solution (Skompilowanie rozwiązania).
Biblioteka przykładu zostanie s zbudowana w domyślnych folderach \bin lub \bin\debug.
Jak uruchomić przykład
Utwórz następujący folder modułu:
[user]/documents/windowspowershell/modules/GetProcessSample03
Skopiuj przykładowy zestaw do folderu modułu.
Uruchom program Windows PowerShell.
Uruchom następujące polecenie, aby załadować zestaw do Windows PowerShell:
Import-module getprossessample03
Uruchom następujące polecenie, aby uruchomić polecenie cmdlet :
get-proc
Wymagania
Ten przykład wymaga Windows PowerShell 2.0.
Demonstracje
W tym przykładzie przedstawiono następujące informacje.
Deklarowanie klasy polecenia cmdlet przy użyciu atrybutu polecenia cmdlet.
Deklarowanie parametru polecenia cmdlet przy użyciu atrybutu Parametr.
Określanie pozycji parametru.
Określenie, że parametr przyjmuje dane wejściowe z potoku. Dane wejściowe można uzyskać z obiektu lub wartości z właściwości obiektu, którego nazwa właściwości jest taka sama jak nazwa parametru.
Deklarowanie atrybutu walidacji dla danych wejściowych parametru.
Przykład
Ten przykład przedstawia implementację polecenia cmdlet Get-Proc, które zawiera Name
parametr akceptujący dane wejściowe z potoku.
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 retrieved by the cmdlet.
/// </summary>
private string[] processNames;
/// <summary>
/// Gets or sets the names of the
/// process that the cmdlet will retrieve.
/// </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 the 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.
foreach (string name in this.processNames)
{
WriteObject(Process.GetProcessesByName(name), true);
}
} // End if (processNames ...)
} // End ProcessRecord.
#endregion Overrides
} // End GetProcCommand.
#endregion GetProcCommand
}
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla