As you can see, the switch accepted all of the commands without a problem. The macro, including the bogus command, now appears in the running config: macro name SetServerPorts spanning-tree portfast hhhhhh description <[ Server ]> When you apply a macro, the parser gets involved, and applies syntax and validity checking to your commands. This is when you'll see errors if you've entered invalid commands. The macro will not terminate on errors, SO be sure to watch out for them: 3750 (config-if)# macro apply SetServerPorts %Warning: portfast should only be enabled on ports connected to a single host. Connecting hubs, concentrators, switches, bridges, etc to this interface when portfast is enabled, can cause temporary bridging loops. Use with CAUTION %Portfast has been configured on GigabitEthernet1/0/20 but will only have effect when the interface is in a non-trunking mode. hhhhhh % Invalid input detected at '^' marker. 3750(config-if)# Notice also that commands that do not generate output show no indication of being completed. This is because a macro is just a group of commands that are run when the macro is invoked. If you'd like more information about what your macro is doing when you run it, you can include the trace keyword. This will add a line indicating when each command in the macro is run: 1(o(config-if)# macro trace SetServerPorts Applying command spanning-tree - portfast Chapter 18: Catalyst 3750 Features %Warning: portfast should only be enabled on ports connected to a single host. Connecting hubs, concentrators, switches, bridges, etc to this interface when portfast is enabled, can cause temporary bridging loops. Use with CAUTION %Portfast has been configured on GigabitEthernet1/0/20 but will only have effect when the interface is in a non-trunking mode. Applying command 'hhhhhh' hhhhhh % Invalid input detected at '^' marker. Applying command. description <[ Server ]>' 3750(config-if)# When you run a macro, a macro description is added to the interface or interfaces to which the macro has been applied.