我是PowerShell的新手,我正在尝试创建一个简短的脚本,可以在页面上找到磁性链接并下载它们。
我对磁性 URI 的工作原理了解不多,而且我似乎无法让我的脚本通过它们下载文件。
我正在使用以下代码片段:
$webclient = New-Object System.Net.WebClient
$url = "magnet:?xt=urn:btih:44bb5e0325b7dad0bdc5abce459b85b014766ec0&dn=MY_TORRENT&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp"
$file = "C:SomePathmyfile.torrent"
$webclient.DownloadFile($url, $file)
这会产生以下异常
System.Management.Automation.MethodInvocationException: Exception calling "DownloadFile" with "2" argument(s): "An exception occurred during a WebClient request." ---> System.Net.We
bException: An exception occurred during a WebClient request. ---> System.NotSupportedException: The URI prefix is not recognized.
at System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase)
at System.Net.WebClient.GetWebRequest(Uri address)
at System.Net.WebClient.DownloadFile(Uri address, String fileName)
--- End of inner exception stack trace ---
at System.Net.WebClient.DownloadFile(Uri address, String fileName)
at CallSite.Target(Closure , CallSite , Object , Object , Object )
--- End of inner exception stack trace ---
at System.Management.Automation.ExceptionHandlingOps.ConvertToMethodInvocationException(Exception exception, Type typeToThrow, String methodName, Int32 numArgs, MemberInfo member
Info)
at CallSite.Target(Closure , CallSite , Object , Object , Object )
at System.Management.Automation.Interpreter.DynamicInstruction`4.Run(InterpretedFrame frame)
at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
是否有其他方式在PowerShell中下载,或者使用磁性链接无法实现。
我的最终目标是开始通过磁性链接下载种子,所以也许可以用链接打开种子客户端,但我不确定我会怎么做。
如果你安装了像µTorrent
这样的torrent客户端,并且它被设置为处理磁力链接,你可以从Powershell打开链接:
start "magnet:?xt=urn:btih:44bb5e0325b7dad0bdc5abce459b85b014766ec0&dn=MY_TORRENT&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp"
这应该会打开洪流客户端。
您也可以使用命令行洪流客户端 aria2 并下载:
aria2c "magnet:?xt=urn:btih:44bb5e0325b7dad0bdc5abce459b85b014766ec0&dn=MY_TORRENT&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp"
磁性链接使用的协议magnet
Windows 本身不支持,DownloadFile()
也不支持。
如果安装支持 magnet
协议的客户端,它将为 magnet
URI 方案安装协议处理程序。
这应该允许您使用 Start-Process
,仅传递磁性 URL 作为参数,以调用该客户端并让它执行通常对该 URL 执行的任何处理。
我有一个github项目(FirefoxMagnetMimeHandler)展示了如何使用Powershell通过传输JSON RPC API将磁力链接发送到本地或远程传输服务器。从本质上讲,这归结为向传输服务器发送小块JSON。困难的部分是获取正确的会话 ID。
以下是相关脚本的链接:magnet_add.ps1 。其他脚本只处理设置 Firefox 哑剧处理程序。