Tworzenie polecenia cmdlet, które modyfikuje systemCreating a Cmdlet that Modifies the System

Czasami polecenie cmdlet musi zmodyfikować stan uruchomienia systemu, a nie tylko stan środowiska uruchomieniowego programu Windows PowerShell.Sometimes a cmdlet must modify the running state of the system, not just the state of the Windows PowerShell runtime. W takich przypadkach polecenie cmdlet powinno pozwolić użytkownikowi na potwierdzenie, czy zmiana została dokonana.In these cases, the cmdlet should allow the user a chance to confirm whether or not to make the change.

Aby można było obsługiwać potwierdzenie, polecenie cmdlet musi mieć dwie rzeczy.To support confirmation a cmdlet must do two things.

Dzięki obsłudze potwierdzeń polecenie cmdlet Confirm udostępnia WhatIf Parametry i, które są dostarczane przez program Windows PowerShell, a także spełnia wskazówki dotyczące programowania dla poleceń cmdlet (Aby uzyskać więcej informacji na temat wytycznych dotyczących programowania poleceń cmdlet, zobacz wskazówki dotyczące programowania poleceń cmdlet.).By supporting confirmation, a cmdlet exposes the Confirm and WhatIf parameters that are provided by Windows PowerShell, and also meets the development guidelines for cmdlets (For more information about cmdlet development guidelines, see Cmdlet Development Guidelines.).

Zmiana systemuChanging the System

Czynność "zmiana systemu" dotyczy wszystkich poleceń cmdlet, które potencjalnie zmieniają stan systemu poza programem Windows PowerShell.The act of "changing the system" refers to any cmdlet that potentially changes the state of the system outside Windows PowerShell. Na przykład zatrzymywanie procesu, Włączanie lub wyłączanie konta użytkownika lub Dodawanie wiersza do tabeli bazy danych to wszystkie zmiany w systemie, który powinien zostać potwierdzony.For example, stopping a process, enabling or disabling a user account, or adding a row to a database table are all changes to the system that should be confirmed. Natomiast operacje odczytujące dane lub ustanawiania połączeń przejściowych nie zmieniają systemu i generalnie nie wymagają potwierdzenia.In contrast, operations that read data or establish transient connections do not change the system and generally do not require confirmation. Potwierdzenie nie jest również potrzebne w przypadku akcji, których wpływ jest ograniczony do środowiska uruchomieniowego programu Windows PowerShell, na przykład set-variable .Confirmation is also not needed for actions whose effect is limited to inside the Windows PowerShell runtime, such as set-variable. Polecenia cmdlet, które mogą lub nie mogą wprowadzać trwałej zmiany, powinny deklarować SupportsShouldProcess i wywoływać System. Management. Automation. cmdlet. ShouldProcess tylko wtedy, gdy zamierzają wprowadzić trwałą zmianę.Cmdlets that might or might not make a persistent change should declare SupportsShouldProcess and call System.Management.Automation.Cmdlet.ShouldProcess only if they are about to make a persistent change.

Uwaga

Potwierdzenie ShouldProcess ma zastosowanie tylko do poleceń cmdlet.ShouldProcess confirmation applies only to cmdlets. Jeśli polecenie lub skrypt modyfikuje stan uruchomienia systemu przez bezpośrednie wywoływanie metod lub właściwości .NET lub wywoływanie aplikacji poza programem Windows PowerShell, ta forma potwierdzenia nie będzie dostępna.If a command or script modifies the running state of a system by directly calling .NET methods or properties, or by calling applications outside of Windows PowerShell, this form of confirmation will not be available.

Polecenie cmdlet StopProcThe StopProc Cmdlet

W tym temacie opisano polecenie cmdlet Stop-proc, które próbuje zatrzymać procesy, które są pobierane za pomocą polecenia cmdlet Get-proc (opisanego w temacie Tworzenie pierwszego polecenia cmdlet).This topic describes a Stop-Proc cmdlet that attempts to stop processes that are retrieved using the Get-Proc cmdlet (described in Creating Your First Cmdlet).

Definiowanie polecenia cmdletDefining the Cmdlet

Pierwszym krokiem w tworzeniu poleceń cmdlet jest zawsze nazywanie polecenia cmdlet i deklarowanie klasy .NET, która implementuje polecenie cmdlet.The first step in cmdlet creation is always naming the cmdlet and declaring the .NET class that implements the cmdlet. Ponieważ piszesz polecenie cmdlet w celu zmiany systemu, powinno ono zostać odpowiednio nazwane.Because you are writing a cmdlet to change the system, it should be named accordingly. To polecenie cmdlet zatrzymuje procesy systemowe, więc wybrana tutaj nazwa zlecenia ma wartość "Stop", zdefiniowaną przez klasę System. Management. Automation. Verbslifecycle z rzeczownikiem "proc", aby wskazać, że polecenie cmdlet zatrzymuje procesy.This cmdlet stops system processes, so the verb name chosen here is "Stop", defined by the System.Management.Automation.Verbslifecycle class, with the noun "Proc" to indicate that the cmdlet stops processes. Aby uzyskać więcej informacji na temat zatwierdzonych zleceń poleceń cmdlet, zobacz nazwy zleceń poleceń cmdlet.For more information about approved cmdlet verbs, see Cmdlet Verb Names.

Poniżej znajduje się definicja klasy dla tego polecenia cmdlet Stop-proc.The following is the class definition for this Stop-Proc cmdlet.

[Cmdlet(VerbsLifecycle.Stop, "Proc",
        SupportsShouldProcess = true)]
public class StopProcCommand : Cmdlet

Należy pamiętać, że w deklaracji System. Management. Automation. cmdletattribute , SupportsShouldProcess słowo kluczowe atrybutu jest ustawione na, aby true umożliwić poleceniu cmdlet wykonywanie wywołań do System. Management. Automation. cmdlet. ShouldProcess i System. Management. Automation. cmdlet. ShouldContinue.Be aware that in the System.Management.Automation.CmdletAttribute declaration, the SupportsShouldProcess attribute keyword is set to true to enable the cmdlet to make calls to System.Management.Automation.Cmdlet.ShouldProcess and System.Management.Automation.Cmdlet.ShouldContinue. Bez tego słowa kluczowego, Confirm WhatIf Parametry i nie będą dostępne dla użytkownika.Without this keyword set, the Confirm and WhatIf parameters will not be available to the user.

Niezwykle szkodliwe akcjeExtremely Destructive Actions

Niektóre operacje są niezwykle szkodliwe, takie jak ponowne formatowanie aktywnej partycji dysku twardego.Some operations are extremely destructive, such as reformatting an active hard disk partition. W takich przypadkach polecenie cmdlet powinno być ustawiane ConfirmImpact = ConfirmImpact.High podczas deklarowania atrybutu System. Management. Automation. cmdletattribute .In these cases, the cmdlet should set ConfirmImpact = ConfirmImpact.High when declaring the System.Management.Automation.CmdletAttribute attribute. To ustawienie wymusza, aby polecenie cmdlet zażądało potwierdzenia przez użytkownika nawet wtedy, gdy użytkownik nie określił Confirm parametru.This setting forces the cmdlet to request user confirmation even when the user has not specified the Confirm parameter. Jednak deweloperzy poleceń cmdlet powinni unikać używania ConfirmImpact w przypadku operacji, które są potencjalnie destrukcyjne, takich jak usuwanie konta użytkownika.However, cmdlet developers should avoid overusing ConfirmImpact for operations that are just potentially destructive, such as deleting a user account. Należy pamiętać, że jeśli ConfirmImpact jest ustawiona na System. Management. Automation. ConfirmImpact High.Remember that if ConfirmImpact is set to System.Management.Automation.ConfirmImpact High.

Podobnie niektóre operacje mogą być szkodliwe, chociaż są one teoretycznie zmodyfikowane stan działania systemu poza programem Windows PowerShell.Similarly, some operations are unlikely to be destructive, although they do in theory modify the running state of a system outside Windows PowerShell. Takie polecenia cmdlet można ustawić ConfirmImpact na System. Management. Automation. Confirmimpact. Low.Such cmdlets can set ConfirmImpact to System.Management.Automation.Confirmimpact.Low. Spowoduje to obejście żądań potwierdzenia, w przypadku których użytkownik zażądał potwierdzenia tylko średniego wpływu na działania i dużego wpływu.This will bypass confirmation requests where the user has asked to confirm only medium-impact and high-impact operations.

Definiowanie parametrów modyfikacji systemuDefining Parameters for System Modification

W tej sekcji opisano sposób definiowania parametrów polecenia cmdlet, w tym tych, które są konieczne do obsługi modyfikacji systemu.This section describes how to define the cmdlet parameters, including those that are needed to support system modification. Zobacz Dodawanie parametrów, które przetwarzają dane wejściowe wiersza polecenia, Jeśli potrzebujesz ogólnych informacji na temat definiowania parametrów.See Adding Parameters that Process CommandLine Input if you need general information about defining parameters.

Polecenie cmdlet Stop-proc definiuje trzy parametry: Name , Force , i PassThru .The Stop-Proc cmdlet defines three parameters: Name, Force, and PassThru.

NameParametr odnosi się do Name właściwości obiektu wejściowego procesu.The Name parameter corresponds to the Name property of the process input object. Należy pamiętać, że Name parametr w tym przykładzie jest obowiązkowy, ponieważ polecenie cmdlet zakończy się niepowodzeniem, jeśli nie ma go do zatrzymania.Be aware that the Name parameter in this sample is mandatory, as the cmdlet will fail if it does not have a named process to stop.

ForceParametr umożliwia użytkownikowi przesłonięcie wywołań do System. Management. Automation. cmdlet. ShouldContinue.The Force parameter allows the user to override calls to System.Management.Automation.Cmdlet.ShouldContinue. W rzeczywistości każde polecenie cmdlet, które wywołuje System. Management. Automation. cmdlet. ShouldContinue powinien mieć Force parametr, tak że gdy Force jest określony, polecenie cmdlet pomija wywołanie metody System. Management. Automation. cmdlet. ShouldContinue i kontynuuje wykonywanie operacji.In fact, any cmdlet that calls System.Management.Automation.Cmdlet.ShouldContinue should have a Force parameter so that when Force is specified, the cmdlet skips the call to System.Management.Automation.Cmdlet.ShouldContinue and proceeds with the operation. Należy pamiętać, że nie ma to wpływu na wywołania metody System. Management. Automation. cmdlet. ShouldProcess.Be aware that this does not affect calls to System.Management.Automation.Cmdlet.ShouldProcess.

PassThruParametr pozwala użytkownikowi wskazać, czy polecenie cmdlet przekazuje obiekt danych wyjściowych za pomocą potoku, w tym przypadku po zatrzymaniu procesu.The PassThru parameter allows the user to indicate whether the cmdlet passes an output object through the pipeline, in this case, after a process is stopped. Należy pamiętać, że ten parametr jest powiązany z poleceniem cmdlet, a nie z właściwością obiektu wejściowego.Be aware that this parameter is tied to the cmdlet itself instead of to a property of the input object.

Oto deklaracja parametrów dla polecenia cmdlet Stop-proc.Here is the parameter declaration for the Stop-Proc cmdlet.

[Parameter(
           Position = 0,
           Mandatory = true,
           ValueFromPipeline = true,
           ValueFromPipelineByPropertyName = true
)]
public string[] Name
{
  get { return processNames; }
  set { processNames = value; }
}
private string[] processNames;

/// <summary>
/// Specify the Force parameter that allows the user to override
/// the ShouldContinue call to force the stop operation. This
/// parameter should always be used with caution.
/// </summary>
[Parameter]
public SwitchParameter Force
{
  get { return force; }
  set { force = value; }
}
private bool force;

/// <summary>
/// Specify the PassThru parameter that allows the user to specify
/// that the cmdlet should pass the process object down the pipeline
/// after the process has been stopped.
/// </summary>
[Parameter]
public SwitchParameter PassThru
{
  get { return passThru; }
  set { passThru = value; }
}
private bool passThru;

Zastępowanie metody przetwarzania wejściowegoOverriding an Input Processing Method

Polecenie cmdlet musi zastąpić metodę przetwarzania wejściowego.The cmdlet must override an input processing method. Poniższy kod ilustruje przesłonięcie System. Management. Automation. cmdlet. ProcessRecord użyte w przykładowym poleceniu cmdlet Stop-proc.The following code illustrates the System.Management.Automation.Cmdlet.ProcessRecord override used in the sample Stop-Proc cmdlet. Dla każdej żądanej nazwy procesu ta metoda zapewnia, że proces nie jest procesem specjalnym, próbuje zatrzymać proces, a następnie wysyła obiekt wyjściowy, jeśli PassThru parametr jest określony.For each requested process name, this method ensures that the process is not a special process, tries to stop the process, and then sends an output object if the PassThru parameter is specified.

protected override void ProcessRecord()
{
  foreach (string name in processNames)
  {
    // For every process name passed to the cmdlet, get the associated
    // process(es). For failures, write a non-terminating error
    Process[] processes;

    try
    {
      processes = Process.GetProcessesByName(name);
    }
    catch (InvalidOperationException ioe)
    {
      WriteError(new ErrorRecord(ioe,"Unable to access the target process by name",
                 ErrorCategory.InvalidOperation, name));
      continue;
    }

    // Try to stop the process(es) that have been retrieved for a name
    foreach (Process process in processes)
    {
      string processName;

      try
      {
        processName = process.ProcessName;
      }

      catch (Win32Exception e)
        {
          WriteError(new ErrorRecord(e, "ProcessNameNotFound",
                     ErrorCategory.ReadError, process));
          continue;
        }

        // Call Should Process to confirm the operation first.
        // This is always false if WhatIf is set.
        if (!ShouldProcess(string.Format("{0} ({1})", processName,
                           process.Id)))
        {
          continue;
        }
        // Call ShouldContinue to make sure the user really does want
        // to stop a critical process that could possibly stop the computer.
        bool criticalProcess =
             criticalProcessNames.Contains(processName.ToLower());

        if (criticalProcess &&!force)
        {
          string message = String.Format
                ("The process \"{0}\" is a critical process and should not be stopped. Are you sure you wish to stop the process?",
                processName);

          // It is possible that ProcessRecord is called multiple times
          // when the Name parameter receives objects as input from the
          // pipeline. So to retain YesToAll and NoToAll input that the
          // user may enter across multiple calls to ProcessRecord, this
          // information is stored as private members of the cmdlet.
          if (!ShouldContinue(message, "Warning!",
                              ref yesToAll,
                              ref noToAll))
          {
            continue;
          }
        } // if (criticalProcess...
        // Stop the named process.
        try
        {
          process.Kill();
        }
        catch (Exception e)
        {
          if ((e is Win32Exception) || (e is SystemException) ||
              (e is InvalidOperationException))
          {
            // This process could not be stopped so write
            // a non-terminating error.
            string message = String.Format("{0} {1} {2}",
                             "Could not stop process \"", processName,
                             "\".");
            WriteError(new ErrorRecord(e, message,
                       ErrorCategory.CloseError, process));
                       continue;
          } // if ((e is...
          else throw;
        } // catch

        // If the PassThru parameter argument is
        // True, pass the terminated process on.
        if (passThru)
        {
          WriteObject(process);
        }
    } // foreach (Process...
  } // foreach (string...
} // ProcessRecord

Wywoływanie metody ShouldProcessCalling the ShouldProcess Method

Metoda przetwarzania wejściowego polecenia cmdlet powinna wywołać metodę System. Management. Automation. cmdlet. ShouldProcess , aby potwierdzić wykonanie operacji przed zmianą (np. usunięciem plików) w stanie uruchomienia systemu.The input processing method of your cmdlet should call the System.Management.Automation.Cmdlet.ShouldProcess method to confirm execution of an operation before a change (for example, deleting files) is made to the running state of the system. Dzięki temu środowisko uruchomieniowe programu Windows PowerShell może podawać poprawne zachowanie "WhatIf" i "Confirm" w ramach powłoki.This allows the Windows PowerShell runtime to supply the correct "WhatIf" and "Confirm" behavior within the shell.

Uwaga

Jeśli polecenie cmdlet wskazuje, że obsługa powinna być przetwarzana i nie można wykonać wywołania System. Management. Automation. cmdlet. ShouldProcess , użytkownik może nieoczekiwanie zmodyfikować system.If a cmdlet states that it supports should process and fails to make the System.Management.Automation.Cmdlet.ShouldProcess call, the user might modify the system unexpectedly.

Wywołanie metody System. Management. Automation. cmdlet. ShouldProcess wysyła nazwę zasobu, który ma zostać zmieniony na użytkownika, przy czym środowisko uruchomieniowe programu Windows PowerShell uwzględnia wszystkie ustawienia wiersza polecenia lub zmienne preferencji w celu określenia, co ma być wyświetlane użytkownikowi.The call to System.Management.Automation.Cmdlet.ShouldProcess sends the name of the resource to be changed to the user, with the Windows PowerShell runtime taking into account any command-line settings or preference variables in determining what should be displayed to the user.

W poniższym przykładzie pokazano wywołanie metody System. Management. Automation. cmdlet. ShouldProcess z zastąpienia klasy System. Management. Automation. cmdlet. ProcessRecord w przykładowym poleceniu cmdlet Stop-proc.The following example shows the call to System.Management.Automation.Cmdlet.ShouldProcess from the override of the System.Management.Automation.Cmdlet.ProcessRecord method in the sample Stop-Proc cmdlet.

if (!ShouldProcess(string.Format("{0} ({1})", processName,
                   process.Id)))
{
  continue;
}

Wywoływanie metody ShouldContinueCalling the ShouldContinue Method

Wywołanie metody System. Management. Automation. cmdlet. ShouldContinue wysyła komunikat pomocniczy do użytkownika.The call to the System.Management.Automation.Cmdlet.ShouldContinue method sends a secondary message to the user. To wywołanie jest wykonywane po wywołaniu metody System. Management. Automation. cmdlet. ShouldProcess true i jeśli Force parametr nie został ustawiony na wartość true .This call is made after the call to System.Management.Automation.Cmdlet.ShouldProcess returns true and if the Force parameter was not set to true. Użytkownik może następnie przekazać Opinie, aby powiedzieć, czy operacja powinna być kontynuowana.The user can then provide feedback to say whether the operation should be continued. Polecenie cmdlet wywołuje System. Management. Automation. cmdlet. ShouldContinue jako dodatkowe sprawdzenie dla potencjalnie niebezpiecznych modyfikacji systemu lub w przypadku, gdy użytkownik chce udostępnić użytkownikom opcje "tak-wszystkie" i "nie do wszystkich".Your cmdlet calls System.Management.Automation.Cmdlet.ShouldContinue as an additional check for potentially dangerous system modifications or when you want to provide yes-to-all and no-to-all options to the user.

W poniższym przykładzie pokazano wywołanie metody System. Management. Automation. cmdlet. ShouldContinue z zastąpienia klasy System. Management. Automation. cmdlet. ProcessRecord w przykładowym poleceniu cmdlet Stop-proc.The following example shows the call to System.Management.Automation.Cmdlet.ShouldContinue from the override of the System.Management.Automation.Cmdlet.ProcessRecord method in the sample Stop-Proc cmdlet.

if (criticalProcess &&!force)
{
  string message = String.Format
        ("The process \"{0}\" is a critical process and should not be stopped. Are you sure you wish to stop the process?",
        processName);

  // It is possible that ProcessRecord is called multiple times
  // when the Name parameter receives objects as input from the
  // pipeline. So to retain YesToAll and NoToAll input that the
  // user may enter across multiple calls to ProcessRecord, this
  // information is stored as private members of the cmdlet.
  if (!ShouldContinue(message, "Warning!",
                      ref yesToAll,
                      ref noToAll))
  {
    continue;
  }
} // if (criticalProcess...

Zatrzymywanie przetwarzania danych wejściowychStopping Input Processing

Metoda przetwarzania danych wejściowych polecenia cmdlet, które wprowadza modyfikacje systemu, musi umożliwiać zatrzymywanie przetwarzania danych wejściowych.The input processing method of a cmdlet that makes system modifications must provide a way of stopping the processing of input. W przypadku tego polecenia cmdlet Stop-proc wywołanie jest nawiązywane z metody System. Management. Automation. cmdlet. ProcessRecord do metody System. Diagnostics. Process. Kill * .In the case of this Stop-Proc cmdlet, a call is made from the System.Management.Automation.Cmdlet.ProcessRecord method to the System.Diagnostics.Process.Kill* method. Ponieważ PassThru parametr jest ustawiony na true , System. Management. Automation. cmdlet. ProcessRecord również wywołuje System. Management. Automation. cmdlet. WriteObject , aby wysłać obiekt Process do potoku.Because the PassThru parameter is set to true, System.Management.Automation.Cmdlet.ProcessRecord also calls System.Management.Automation.Cmdlet.WriteObject to send the process object to the pipeline.

Przykładowy kodCode Sample

Aby uzyskać kompletny przykładowy kod w języku C#, zobacz przykład StopProcessSample01.For the complete C# sample code, see StopProcessSample01 Sample.

Definiowanie typów i formatowania obiektówDefining Object Types and Formatting

Program Windows PowerShell przekazuje informacje między poleceniami cmdlet przy użyciu obiektów .NET.Windows PowerShell passes information between cmdlets using .Net objects. W związku z tym może być konieczne zdefiniowanie własnego typu polecenia cmdlet lub może być konieczne poszerzenie istniejącego typu dostarczonego przez inne polecenie cmdlet.Consequently, a cmdlet may need to define its own type, or the cmdlet may need to extend an existing type provided by another cmdlet. Aby uzyskać więcej informacji na temat definiowania nowych typów lub rozszerzania istniejących typów, zobacz rozszerzanie typów obiektów i formatowanie.For more information about defining new types or extending existing types, see Extending Object Types and Formatting.

Kompilowanie polecenia cmdletBuilding the Cmdlet

Po wdrożeniu polecenia cmdlet należy je zarejestrować w programie Windows PowerShell za pomocą przystawki programu Windows PowerShell.After implementing a cmdlet, it must be registered with Windows PowerShell through a Windows PowerShell snap-in. Aby uzyskać więcej informacji na temat rejestrowania poleceń cmdlet, zobacz jak zarejestrować polecenia cmdlet, dostawców i aplikacje hosta.For more information about registering cmdlets, see How to Register Cmdlets, Providers, and Host Applications.

Testowanie polecenia cmdletTesting the Cmdlet

Gdy polecenie cmdlet zostało zarejestrowane w programie Windows PowerShell, można je przetestować, uruchamiając je w wierszu polecenia.When your cmdlet has been registered with Windows PowerShell, you can test it by running it on the command line. Oto kilka testów, które testują polecenie cmdlet Stop-proc.Here are several tests that test the Stop-Proc cmdlet. Aby uzyskać więcej informacji na temat używania poleceń cmdlet z wiersza polecenia, zobacz wprowadzenie w programie Windows PowerShell.For more information about using cmdlets from the command line, see the Getting Started with Windows PowerShell.

  • Uruchom program Windows PowerShell i użyj polecenia cmdlet Stop-proc, aby zatrzymać przetwarzanie, jak pokazano poniżej.Start Windows PowerShell and use the Stop-Proc cmdlet to stop processing as shown below. Ponieważ polecenie cmdlet określa Name parametr jako obowiązkowy, polecenie cmdlet wykonuje zapytanie dla parametru.Because the cmdlet specifies the Name parameter as mandatory, the cmdlet queries for the parameter.

    PS> stop-proc
    

    Pojawią się następujące dane wyjściowe.The following output appears.

    Cmdlet stop-proc at command pipeline position 1
    Supply values for the following parameters:
    Name[0]:
    
  • Teraz użyjemy polecenia cmdlet, aby zatrzymać proces o nazwie "NOTEPAD".Now let's use the cmdlet to stop the process named "NOTEPAD". Polecenie cmdlet monituje o potwierdzenie akcji.The cmdlet asks you to confirm the action.

    PS> stop-proc -Name notepad
    

    Pojawią się następujące dane wyjściowe.The following output appears.

    Confirm
    Are you sure you want to perform this action?
    Performing operation "stop-proc" on Target "notepad (4996)".
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y
    
  • Aby zatrzymać proces krytyczny o nazwie "WINLOGON", należy użyć elementu Stop-proc.Use Stop-Proc as shown to stop the critical process named "WINLOGON". Zostanie wyświetlony monit z ostrzeżeniem dotyczącym wykonania tej akcji, ponieważ spowoduje to ponowne uruchomienie systemu operacyjnego.You are prompted and warned about performing this action because it will cause the operating system to reboot.

    PS> stop-proc -Name Winlogon
    

    Pojawią się następujące dane wyjściowe.The following output appears.

    Confirm
    Are you sure you want to perform this action?
    Performing operation "stop-proc" on Target "winlogon (656)".
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y
    Warning!
    The process " winlogon " is a critical process and should not be stopped. Are you sure you wish to stop the process?
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): N
    
  • Spróbujmy teraz zatrzymać proces WINLOGON bez otrzymywania ostrzeżenia.Let's now try to stop the WINLOGON process without receiving a warning. Należy pamiętać, że ten wpis polecenia używa Force parametru, aby przesłonić ostrzeżenie.Be aware that this command entry uses the Force parameter to override the warning.

    PS> stop-proc -Name winlogon -Force
    

    Pojawią się następujące dane wyjściowe.The following output appears.

    Confirm
    Are you sure you want to perform this action?
    Performing operation "stop-proc" on Target "winlogon (656)".
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): N
    

Zobacz teżSee Also

Dodawanie parametrów przetwarzających dane wejściowe wiersza poleceniaAdding Parameters that Process Command-Line Input

Rozszerzanie typów i formatowania obiektówExtending Object Types and Formatting

Jak zarejestrować polecenia cmdlet, dostawców i aplikacje hostaHow to Register Cmdlets, Providers, and Host Applications

Windows PowerShell SDKWindows PowerShell SDK

Przykłady poleceń cmdletCmdlet Samples