Magma can be used to do (1) by taking products of characters, and (2) using the function 'Symmetrization', provided $|\lambda| \le 6$. In either case the output will be a character $\chi$ of a symmetric group. You can then write a short function that calculates all the inner products of $\chi$ with irreducible characters to get the answer in the form you want. The function 'SymmetricCharacter' returns the irreducible character labelled by a given partition.
Edit: Gap also has most of the required functions built-in. To generate the irreducible characters of $S_7$ use 'Irr(SymmetricGroup(7))'. You can then add and multiply characters to get the character of the tensor product of two representations of $S_7$. Then 'Symmetrizations(Irr(SymmetricGroup(7)),s)' computes $S_\lambda \chi$ for all irreducible characters of $S_7$ and all partitions $\lambda$ of $s$. This took almost no time to run, even for $s=10$, a case Magma fails on.
I'm not sure if Gap provides any way to determine the partition labelling an irreducible character of $S_n$. Before 'SymmetricCharacter' was introduced in Magma, I used some code of my own to identify the labelling partition, by first looking at the degree (using the hook-formula), and then resolving any ambiguities using classical formulae for the values of symmetric group characters on cycles of short length. Please send me an email if you'd like more details.
Magma can be used to do (1) by taking products of characters, and (2) using the function 'Symmetrization', provided $|\lambda| \le 6$. In either case the output will be a character $\chi$ of a symmetric group. You can then write a short function that calculates all the inner products of $\chi$ with irreducible characters to get the answer in the form you want. The function 'SymmetricCharacter' returns the irreducible character labelled by a given partition.