/********************************************************************++ Copyright (c) Microsoft Corporation. All rights reserved. --********************************************************************/ using System.Diagnostics.CodeAnalysis; using System.Collections.Generic; using System.Reflection; using Dbg = System.Management.Automation.Diagnostics; namespace System.Management.Automation { #region VERBS /// /// Verbs that are commonly used in cmdlet names. /// /// /// /// These verbs are recommended over their synonyms when used as the verb name /// for cmdlets. /// public static class VerbsCommon { /// /// Synonyms: Add to, append or attach. /// public const string Add = "Add"; /// /// Remove all the elements or content of a container /// public const string Clear = "Clear"; /// /// Change the state of a resource to make it inaccessible, unavailable, or unusable /// public const string Close = "Close"; /// /// Copy a resource to another name or another container /// public const string Copy = "Copy"; /// /// Enters a context /// public const string Enter = "Enter"; /// /// Exits a context /// public const string Exit = "Exit"; /// /// Search for an object /// public const string Find = "Find"; /// /// Formats an object for output. /// public const string Format = "Format"; /// /// Get the contents/object/children/properties/relations/... of a resource /// public const string Get = "Get"; /// /// Remove from visibility /// public const string Hide = "Hide"; /// /// Combines resources into one resource /// public const string Join = "Join"; /// /// Lock a resource. /// public const string Lock = "Lock"; /// /// Move a resource /// public const string Move = "Move"; /// /// Create a new resource /// public const string New = "New"; /// /// Change the state of a resource to make it accessible, available, or usable /// public const string Open = "Open"; /// /// Increases the effectiveness of a resource /// public const string Optimize = "Optimize"; /// /// To set as the current context, including the ability /// to reverse this action /// public const string Push = "Push"; /// /// To restore a context saved by a Push operation /// public const string Pop = "Pop"; /// /// Act on a resource again. /// public const string Redo = "Redo"; /// /// Remove a resource from a container /// public const string Remove = "Remove"; /// /// Give a resource a new name /// public const string Rename = "Rename"; /// /// Set/reset the contents/object/properties/relations... of a resource /// public const string Reset = "Reset"; /// /// Changes the size of a resource /// public const string Resize = "Resize"; /// /// Get a reference to a resource or summary information about a resource by looking in a specified collection. /// Does not actually retrieve that resource. /// public const string Search = "Search"; /// /// To take as a choice from among several; pick out /// public const string Select = "Select"; /// /// Set the contents/object/properties/relations... of a resource /// public const string Set = "Set"; /// /// Makes visible, or displays information. Combines get, format, and out verbs. /// public const string Show = "Show"; /// /// Pass from one resource or point to another while disregarding or omitting intervening resources or points /// public const string Skip = "Skip"; /// /// Split an object into portions. parts or fragments /// public const string Split = "Split"; /// /// Move to the next point or resource /// public const string Step = "Step"; /// /// /// public const string Switch = "Switch"; /// /// Reverse an action or process. /// public const string Undo = "Undo"; /// /// Unlock a resource. /// public const string Unlock = "Unlock"; /// /// Continually inspect a resource for changes /// public const string Watch = "Watch"; }//VerbsCommon /// /// Verbs that are commonly used in cmdlet names when the cmdlet manipulates data. /// /// /// /// These verbs are recommended over their synonyms when used as the verb name /// for cmdlets. /// public static class VerbsData { /// /// backup /// public const string Backup = "Backup"; /// /// Establish a well defined state to be able to roll back to /// public const string Checkpoint = "Checkpoint"; /// /// Compare this resource with another one and produce a set of differences /// public const string Compare = "Compare"; /// /// Reduce in size /// public const string Compress = "Compress"; /// /// Change from one encoding to another or from one unit base to another (e.g. feet to meters) /// public const string Convert = "Convert"; /// /// Convert from the format named in the noun to a general-purpose format (e.g. string or int). /// public const string ConvertFrom = "ConvertFrom"; /// /// Convert from a general-purpose format (e.g. string or int) to the format named in the noun. /// public const string ConvertTo = "ConvertTo"; /// /// To dismount - to get off. To detach. /// public const string Dismount = "Dismount"; /// /// Performs an in-place modification of a resource. /// public const string Edit = "Edit"; /// /// Uncompress or increase in size /// public const string Expand = "Expand"; /// /// Make a copy of a set of resources using an interchange format /// public const string Export = "Export"; /// /// Arrange or associate one or more resources /// public const string Group = "Group"; /// /// Create a set of resources using an interchange format /// public const string Import = "Import"; /// /// Prepare a resource for use. Assign a beginning value to something /// public const string Initialize = "Initialize"; /// /// Limit the consumption of a resource or apply a constraint on a resource /// public const string Limit = "Limit"; /// /// Take multiple instances and create a single instance /// public const string Merge = "Merge"; /// /// To mount - to attache a named entity to a hierarchy at the pathname location. To set in position. /// public const string Mount = "Mount"; /// /// Out - direct to a port. Output something to a port. /// public const string Out = "Out"; /// /// Make known and accessible to another /// public const string Publish = "Publish"; /// /// Rollback state to a predefined snapshot/checkpoint /// public const string Restore = "Restore"; /// /// Store state in a permanent location /// public const string Save = "Save"; /// /// Coerce one or more resources to the same state /// public const string Sync = "Sync"; /// /// Remove from public access and visibility /// [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Unpublish")] public const string Unpublish = "Unpublish"; /// /// Update a resource with new elements or refresh from a source of truth /// public const string Update = "Update"; }//VerbsData /// /// Verbs that are commonly used in cmdlet names when the cmdlet manipulates the lifecycle of something. /// /// /// /// These verbs are recommended over their synonyms when used as the verb name /// for cmdlets. /// public static class VerbsLifecycle { /// /// Agree to the status of a resource or process /// public const string Approve = "Approve"; /// /// State or affirm the state of an object /// public const string Assert = "Assert"; /// /// Creates an artifact (usually a binary or document) out of some set of input files (usually source code or declarative documents) /// public const string Build = "Build"; /// /// Finalize an interruptable activity. Makes pending changes permanent. /// public const string Complete = "Complete"; /// /// Acknowledge, verify, or validate the state of a resource /// public const string Confirm = "Confirm"; /// /// Refuse, object, block, or oppose the state of a resource or process /// public const string Deny = "Deny"; /// /// Sends an application, website, or solution to a remote target[s] in such a way that a consumer of that solution can access it after deployment is complete. /// public const string Deploy = "Deploy"; /// /// Stop and/or configure something to be unavailable (e.g unable to not start again) /// public const string Disable = "Disable"; /// /// Configure to be available (e.g. able to start) /// public const string Enable = "Enable"; /// /// Settle in an indicated place or condition (optionally initializing for use) /// public const string Install = "Install"; /// /// Calls or launches an activity that cannot be stopped /// public const string Invoke = "Invoke"; /// /// Record details about an item in a public store or publishing location /// /// public const string Register = "Register"; /// /// Ask for a resource or permissions /// public const string Request = "Request"; /// /// Terminate existing activity and begin it again (with the same configuration) /// public const string Restart = "Restart"; /// /// Begin an activity again after it was suspended /// public const string Resume = "Resume"; /// /// Begin an activity /// public const string Start = "Start"; /// ///Discontinue or cease an activity /// public const string Stop = "Stop"; /// /// Present a resource for approval /// public const string Submit = "Submit"; /// /// Suspend an activity temporarily /// public const string Suspend = "Suspend"; /// /// Remove or disassociate /// public const string Uninstall = "Uninstall"; /// /// Remove details of an item from a public store or publishing location /// /// public const string Unregister = "Unregister"; /// /// Suspend execution until an expected event /// /// public const string Wait = "Wait"; } /// /// Verbs that are commonly used in cmdlet names when the cmdlet is used to diagnose the health of something. /// /// /// /// These verbs are recommended over their synonyms when used as the verb name /// for cmdlets. /// public static class VerbsDiagnostic { /// /// Iteratively interact with a resource or activity for the purpose finding a flaw or better understanding of what is occurring. /// public const string Debug = "Debug"; /// /// calculate/identify resources consumed by a specified operation or retrieve statistics about a resource /// public const string Measure = "Measure"; /// /// Determine whether a resource is alive and responding to requests /// public const string Ping = "Ping"; /// /// Detect and correct problems /// public const string Repair = "Repair"; /// /// Map a shorthand name will be bound to a longname /// public const string Resolve = "Resolve"; /// /// Verify the operational validity or consistency of a resource /// public const string Test = "Test"; /// /// Trace activities performed by a specified operation /// public const string Trace = "Trace"; }//VerbsDiagnostic /// /// Verbs that are commonly used in cmdlet names when the cmdlet is used to communicate with something. /// /// /// /// These verbs are recommended over their synonyms when used as the verb name /// for cmdlets. /// public static class VerbsCommunications { /// /// Associate subsequent activities with a resource /// public const string Connect = "Connect"; /// /// Disassociate from a resource /// public const string Disconnect = "Disconnect"; /// /// To read - to obtain (data) from a storage medium or port /// public const string Read = "Read"; /// /// Take or acquire from a source /// public const string Receive = "Receive"; /// /// Convey by an intermediary to a destination /// public const string Send = "Send"; /// /// TO write - communicate or express. Display data. /// public const string Write = "Write"; }//VerbsCommunications /// /// Verbs that are commonly used in cmdlet names when the cmdlet is used to secure a resource. /// /// /// /// These verbs are recommended over their synonyms when used as the verb name /// for cmdlets. /// public static class VerbsSecurity { /// /// Prevent access to or usage of a resource. /// public const string Block = "Block"; /// /// Gives access to a resource. /// public const string Grant = "Grant"; /// /// Guard a resource from attack or loss /// public const string Protect = "Protect"; /// /// Removes access to a resource. /// public const string Revoke = "Revoke"; /// /// Allow access to or usage of a resource. /// public const string Unblock = "Unblock"; /// /// Remove guards from a resource that prevent it from attack or loss /// public const string Unprotect = "Unprotect"; }//VerbsSecurity /// /// Canonical verbs that don't fit into any of the other categories. /// public static class VerbsOther { /// /// To use or include a resource. To set as the context of an action. /// public const string Use = "Use"; } /// /// Class for Verbs and Groups /// public class VerbInfo { /// /// Verb Name /// public string Verb { get;set; } /// /// Group Name /// public string Group { get;set; } } internal static class Verbs { static Verbs() { Type[] verbTypes = new Type[] { typeof(VerbsCommon), typeof(VerbsCommunications), typeof(VerbsData), typeof(VerbsDiagnostic), typeof(VerbsLifecycle), typeof(VerbsOther), typeof(VerbsSecurity) }; foreach (Type type in verbTypes) { foreach (FieldInfo field in type.GetFields()) { if (field.IsLiteral) { s_validVerbs.Add((string)field.GetValue(null), true); } } } s_recommendedAlternateVerbs.Add("accept", new string[] { "Receive" }); s_recommendedAlternateVerbs.Add("acquire", new string[] { "Get", "Read" }); s_recommendedAlternateVerbs.Add("allocate", new string[] { "New" }); s_recommendedAlternateVerbs.Add("allow", new string[] { "Enable", "Grant", "Unblock" }); s_recommendedAlternateVerbs.Add("amend", new string[] { "Edit" }); s_recommendedAlternateVerbs.Add("analyze", new string[] { "Measure", "Test" }); s_recommendedAlternateVerbs.Add("append", new string[] { "Add" }); s_recommendedAlternateVerbs.Add("assign", new string[] { "Set" }); s_recommendedAlternateVerbs.Add("associate", new string[] { "Join", "Merge" }); s_recommendedAlternateVerbs.Add("attach", new string[] { "Add", "Debug" }); s_recommendedAlternateVerbs.Add("bc", new string[] { "Compare" }); s_recommendedAlternateVerbs.Add("boot", new string[] { "Start" }); s_recommendedAlternateVerbs.Add("break", new string[] { "Disconnect" }); s_recommendedAlternateVerbs.Add("broadcast", new string[] { "Send" }); s_recommendedAlternateVerbs.Add("burn", new string[] { "Backup" }); s_recommendedAlternateVerbs.Add("calculate", new string[] { "Measure" }); s_recommendedAlternateVerbs.Add("cancel", new string[] { "Stop" }); s_recommendedAlternateVerbs.Add("cat", new string[] { "Get" }); s_recommendedAlternateVerbs.Add("change", new string[] { "Convert", "Edit", "Rename" }); s_recommendedAlternateVerbs.Add("clean", new string[] { "Uninstall" }); s_recommendedAlternateVerbs.Add("clone", new string[] { "Copy" }); s_recommendedAlternateVerbs.Add("combine", new string[] { "Join", "Merge" }); s_recommendedAlternateVerbs.Add("compact", new string[] { "Compress" }); s_recommendedAlternateVerbs.Add("compile", new string[] { "Build" }); s_recommendedAlternateVerbs.Add("concatenate", new string[] { "Add" }); s_recommendedAlternateVerbs.Add("configure", new string[] { "Set" }); s_recommendedAlternateVerbs.Add("create", new string[] { "New" }); s_recommendedAlternateVerbs.Add("cut", new string[] { "Remove" }); //recommendedAlternateVerbs.Add("debug", new string[] {"Ping"}); s_recommendedAlternateVerbs.Add("delete", new string[] { "Remove" }); s_recommendedAlternateVerbs.Add("detach", new string[] { "Dismount", "Remove" }); s_recommendedAlternateVerbs.Add("determine", new string[] { "Measure", "Resolve" }); s_recommendedAlternateVerbs.Add("diagnose", new string[] { "Debug", "Test" }); s_recommendedAlternateVerbs.Add("diff", new string[] { "Checkpoint", "Compare" }); s_recommendedAlternateVerbs.Add("difference", new string[] { "Checkpoint", "Compare" }); s_recommendedAlternateVerbs.Add("dig", new string[] { "Trace" }); s_recommendedAlternateVerbs.Add("dir", new string[] { "Get" }); s_recommendedAlternateVerbs.Add("discard", new string[] { "Remove" }); s_recommendedAlternateVerbs.Add("display", new string[] { "Show", "Write" }); s_recommendedAlternateVerbs.Add("dispose", new string[] { "Remove" }); s_recommendedAlternateVerbs.Add("divide", new string[] { "Split" }); s_recommendedAlternateVerbs.Add("dump", new string[] { "Get" }); s_recommendedAlternateVerbs.Add("duplicate", new string[] { "Copy" }); s_recommendedAlternateVerbs.Add("empty", new string[] { "Clear" }); s_recommendedAlternateVerbs.Add("end", new string[] { "Stop" }); s_recommendedAlternateVerbs.Add("erase", new string[] { "Clear", "Remove" }); s_recommendedAlternateVerbs.Add("examine", new string[] { "Get" }); s_recommendedAlternateVerbs.Add("execute", new string[] { "Invoke" }); s_recommendedAlternateVerbs.Add("explode", new string[] { "Expand" }); s_recommendedAlternateVerbs.Add("extract", new string[] { "Export" }); s_recommendedAlternateVerbs.Add("fix", new string[] { "Repair", "Restore" }); s_recommendedAlternateVerbs.Add("flush", new string[] { "Clear" }); s_recommendedAlternateVerbs.Add("follow", new string[] { "Trace" }); s_recommendedAlternateVerbs.Add("generate", new string[] { "New" }); //recommendedAlternateVerbs.Add("get", new string[] {"Read"}); s_recommendedAlternateVerbs.Add("halt", new string[] { "Disable" }); s_recommendedAlternateVerbs.Add("in", new string[] { "ConvertTo" }); s_recommendedAlternateVerbs.Add("index", new string[] { "Update" }); s_recommendedAlternateVerbs.Add("initiate", new string[] { "Start" }); s_recommendedAlternateVerbs.Add("input", new string[] { "ConvertTo", "Unregister" }); s_recommendedAlternateVerbs.Add("insert", new string[] { "Add", "Unregister" }); s_recommendedAlternateVerbs.Add("inspect", new string[] { "Trace" }); s_recommendedAlternateVerbs.Add("kill", new string[] { "Stop" }); s_recommendedAlternateVerbs.Add("launch", new string[] { "Start" }); s_recommendedAlternateVerbs.Add("load", new string[] { "Import" }); s_recommendedAlternateVerbs.Add("locate", new string[] { "Search", "Select" }); s_recommendedAlternateVerbs.Add("logoff", new string[] { "Disconnect" }); s_recommendedAlternateVerbs.Add("mail", new string[] { "Send" }); s_recommendedAlternateVerbs.Add("make", new string[] { "New" }); s_recommendedAlternateVerbs.Add("match", new string[] { "Select" }); s_recommendedAlternateVerbs.Add("migrate", new string[] { "Move" }); s_recommendedAlternateVerbs.Add("modify", new string[] { "Edit" }); s_recommendedAlternateVerbs.Add("name", new string[] { "Move" }); s_recommendedAlternateVerbs.Add("nullify", new string[] { "Clear" }); s_recommendedAlternateVerbs.Add("obtain", new string[] { "Get" }); //recommendedAlternateVerbs.Add("out", new string[] {"ConvertFrom"}); s_recommendedAlternateVerbs.Add("output", new string[] { "ConvertFrom" }); s_recommendedAlternateVerbs.Add("pause", new string[] { "Suspend", "Wait" }); s_recommendedAlternateVerbs.Add("peek", new string[] { "Receive" }); s_recommendedAlternateVerbs.Add("permit", new string[] { "Enable" }); s_recommendedAlternateVerbs.Add("purge", new string[] { "Clear", "Remove" }); s_recommendedAlternateVerbs.Add("pick", new string[] { "Select" }); //recommendedAlternateVerbs.Add("pop", new string[] {"Enter", "Exit"}); s_recommendedAlternateVerbs.Add("prevent", new string[] { "Block" }); s_recommendedAlternateVerbs.Add("print", new string[] { "Write" }); s_recommendedAlternateVerbs.Add("prompt", new string[] { "Read" }); //recommendedAlternateVerbs.Add("push", new string[] {"Enter", "Exit"}); s_recommendedAlternateVerbs.Add("put", new string[] { "Send", "Write" }); s_recommendedAlternateVerbs.Add("puts", new string[] { "Write" }); s_recommendedAlternateVerbs.Add("quota", new string[] { "Limit" }); s_recommendedAlternateVerbs.Add("quote", new string[] { "Limit" }); s_recommendedAlternateVerbs.Add("rebuild", new string[] { "Initialize" }); s_recommendedAlternateVerbs.Add("recycle", new string[] { "Restart" }); s_recommendedAlternateVerbs.Add("refresh", new string[] { "Update" }); s_recommendedAlternateVerbs.Add("reinitialize", new string[] { "Initialize" }); s_recommendedAlternateVerbs.Add("release", new string[] { "Clear", "Install", "Publish", "Unlock" }); s_recommendedAlternateVerbs.Add("reload", new string[] { "Update" }); s_recommendedAlternateVerbs.Add("renew", new string[] { "Initialize", "Update" }); s_recommendedAlternateVerbs.Add("replicate", new string[] { "Copy" }); s_recommendedAlternateVerbs.Add("resample", new string[] { "Convert" }); //recommendedAlternateVerbs.Add("reset", new string[] {"Set"}); //recommendedAlternateVerbs.Add("resize", new string[] {"Convert"}); s_recommendedAlternateVerbs.Add("restrict", new string[] { "Lock" }); s_recommendedAlternateVerbs.Add("return", new string[] { "Repair", "Restore" }); s_recommendedAlternateVerbs.Add("revert", new string[] { "Unpublish" }); s_recommendedAlternateVerbs.Add("revise", new string[] { "Edit" }); s_recommendedAlternateVerbs.Add("run", new string[] { "Invoke", "Start" }); s_recommendedAlternateVerbs.Add("salvage", new string[] { "Test" }); //recommendedAlternateVerbs.Add("save", new string[] {"Backup"}); s_recommendedAlternateVerbs.Add("secure", new string[] { "Lock" }); s_recommendedAlternateVerbs.Add("separate", new string[] { "Split" }); s_recommendedAlternateVerbs.Add("setup", new string[] { "Initialize", "Install" }); s_recommendedAlternateVerbs.Add("sleep", new string[] { "Suspend", "Wait" }); s_recommendedAlternateVerbs.Add("starttransaction", new string[] { "Checkpoint" }); s_recommendedAlternateVerbs.Add("telnet", new string[] { "Connect" }); s_recommendedAlternateVerbs.Add("terminate", new string[] { "Stop" }); s_recommendedAlternateVerbs.Add("track", new string[] { "Trace" }); s_recommendedAlternateVerbs.Add("transfer", new string[] { "Move" }); s_recommendedAlternateVerbs.Add("type", new string[] { "Get" }); //recommendedAlternateVerbs.Add("undo", new string[] {"Repair", "Restore"}); s_recommendedAlternateVerbs.Add("unite", new string[] { "Join", "Merge" }); s_recommendedAlternateVerbs.Add("unlink", new string[] { "Dismount" }); s_recommendedAlternateVerbs.Add("unmark", new string[] { "Clear" }); s_recommendedAlternateVerbs.Add("unrestrict", new string[] { "Unlock" }); s_recommendedAlternateVerbs.Add("unsecure", new string[] { "Unlock" }); s_recommendedAlternateVerbs.Add("unset", new string[] { "Clear" }); s_recommendedAlternateVerbs.Add("verify", new string[] { "Test" }); #if DEBUG foreach (KeyValuePair entry in s_recommendedAlternateVerbs) { Dbg.Assert(!IsStandard(entry.Key), "prohibited verb is standard"); foreach (string suggested in entry.Value) { Dbg.Assert(IsStandard(suggested), "suggested verb is not standard"); } } #endif } private static Dictionary s_validVerbs = new Dictionary(StringComparer.OrdinalIgnoreCase); private static Dictionary s_recommendedAlternateVerbs = new Dictionary(StringComparer.OrdinalIgnoreCase); internal static bool IsStandard(string verb) { return s_validVerbs.ContainsKey(verb); } internal static string[] SuggestedAlternates(string verb) { string[] result = null; s_recommendedAlternateVerbs.TryGetValue(verb, out result); return result; } } #endregion VERBS }