Sliding Window Dictionary String Matching
The set of all $k$-length strings that contain every pattern in $\Pi$ is regular; call it $L$.  (It is $(\Sigma^* \pi_1 \Sigma^* \cap \dots \cap \Sigma^* \pi_m \Sigma^*) \cap \Sigma^k$.)  From this, you can form a nondeterministic finite-state automaton (NFA) that recognizes $\Sigma^* L$.  Next, convert this to a DFA.  Finally, run the DFA across the input string $s$.  You can then obtain all locations in the string where the DFA is in an accepting state; each such location  is an index $i+k$ so that $s[i:i+k]$ matches all patterns in $\Pi$.

The running time will be linear in $|s|$ and the size of the DFA.  I expect the size of the DFA to be exponential in $\Pi$ and $k$, but independent of $|s|$.  So, if you only care about the dependence on $|s|$, this algorithm might meet your requirements.  If you additionally care about the dependence on $\Pi$ and/or $k$, I do not expect this will meet your requirements.