In general, an easy way to create a postprocessing script is to first do it in the GUI and then use the "To-Python" function (available via right-click on the algorithm in the Explorer window).
Here is what the auto-generated script looks like for a simple pipeline with a Crop Filter:
# Creating the analysis pipeline
# Adding a new SimulationExtractor
simulation = document.AllSimulations["EM"]
simulation_extractor = simulation.Results()
# Adding a new EmSensorExtractor
em_sensor_extractor = simulation_extractor["Overall Field"]
em_sensor_extractor.FrequencySettings.ExtractedFrequency = u"All"
em_sensor_extractor.Normalization.Normalize = True
em_sensor_extractor.SurfaceCurrent.SurfaceResolution = 0.001, units.Meters
document.AllAlgorithms.Add(em_sensor_extractor)
# Adding a new FieldCropFilter
inputs = [em_sensor_extractor.Outputs["EM E(x,y,z,f0)"]]
field_crop_filter = analysis.core.FieldCropFilter(inputs=inputs)
field_crop_filter.LowerExtent = numpy.array([1, 3, 2])
field_crop_filter.UpperExtent = numpy.array([21, 21, 21])
field_crop_filter.UpdateAttributes()
document.AllAlgorithms.Add(field_crop_filter)
Note fyi that you don't actually need to pass a Numpy array to UpperExtent or LowerExtent, it also works if you pass any iterable, like a list or a tuple.