My clunky Pari-GP script (including a print() statement for each term in the sum, and an inevitable superfluous zero term in the sum), my ancient version of Pari-GP, and doddering old computer still did the count for 10^50 in 2 milliseconds. Since I count 1 as a power, my answer is 1 greater than yours.

If you take out the print() statement, replace floor(n^(1/i)) with sqrtnint(n,i), and (if you want) take out the s++ statement at the end if you want to ignore the power 1, and run it on your machine, you'll probably do 10^50 in less than a millisecond, and also be able to do arbitrary n. With the default precision, my script craps out at around 10^77 due to insufficient precision.

Code:

n=10^50;
? s=0;for(i=2,n,if(issquarefree(i),t=-(floor(n^(1/i))-1)*moebius(i);s+=t;print(i" "s" "t));if(t==0,break));s++
2 9999999999999999999999999 9999999999999999999999999
3 10000000046415888336127786 46415888336127787
5 10000000046415898336127784 9999999998
6 10000000046415898120684316 -215443468
7 10000000046415898134579269 13894953
10 10000000046415898134479271 -99998
11 10000000046415898134514381 35110
13 10000000046415898134521397 7016
14 10000000046415898134517671 -3726
15 10000000046415898134515518 -2153
17 10000000046415898134516390 872
19 10000000046415898134516817 427
21 10000000046415898134516578 -239
22 10000000046415898134516392 -186

<cut a whole bunch of printed lines>

Code:

163 10000000046415898134516526 1
165 10000000046415898134516527 1
166 10000000046415898134516526 -1
167 10000000046415898134516526 0
time = 2 ms.
%2 = 10000000046415898134516527