You can only Push/Pull one face at a time, and you must Push/Pull raw geometry–a face–not the outside of a group or component.
From an engineering perspective, it would probably be preferable to design the parts to fit so that each part would have a hole and they would line up when assembled instead of having to be “match drilled.” However, if you must match drill them after their assembly, try something like this:
- Create a cylinder the diameter of the hole and long enough to pass through all the parts.
- Position the cylinder.
- Enter the context (double click to edit) of each part that needs a hole, one at a time. Then triple-click or hit Ctrl-A to select all geometry in the group.
- Right-click > Intersect with Model.
That will cut the hole in the cylinder surface, but to obtain the wall of the hole, you would need to perform the Intersect command with both the part and the cylinder in the same context, so that the piece of the cylinder that passes through the part becomes the wall of the hole, and then repaeat that for each part. You would have been better off constructing the parts around the holes in the first place, as I said.
Since your original idea of Push/Pulling through a bunch of groups is completely unworkable (not to mention impossible), why not tell us more (any) about what you’re trying to accomplish so we can better advise you?