Windows11系统自动获取电脑IPV6地址,并且开机自动发送到指定邮箱

本文主要是介绍Windows11系统自动获取电脑IPV6地址,并且开机自动发送到指定邮箱,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

废话:最近放假回家,在家里突然想玩游戏了,Steamdeck性能终归有限。部分游戏始终玩的不爽,想到之前了解到的Sunshnie+Moonlight串流的方案,远程调用家里的电脑打游戏,简直不要太爽。
一顿折腾之后配置好了所有的软件,使用IPV6连接,体验确实不错。但遇到一个问题,家里的电脑每次重新启动IPV6的地址都会变,这样每次需要使用远程桌面连接上去拿一下IPV6地址,非常麻烦。这里有两个解决方案:
- DDNS方案,使用DDNS软件将IPV6地址映射到域名,这样每次只需要访问域名就可以连接,但是也有缺点,DNS的传播是需要时间的,有时候就是无聊了想打几十分钟的Roguelike游戏,但是远程开电脑等待DNS域名修改传播要好久,对于这种短时间内的访问需求太不友好。
- 直接获取IPV6地址方案,想着创建一个任务,让Windows每次开机的时候自动发送IPV6的地址到我的邮箱,这样就方便很多,不需要等待,开机就能直接开玩。
对我来说肯定是方案二比较合适,方案定下了,开始实施。

前提工作: 第一、你需要你的被访问电脑能够获取到正确的IPV6,并且能够被外网访问。
第二、你需要一个用来接收IPV6地址的邮箱,可以是任何企业邮箱(但一定要是自己的邮箱,其他人不能接触到邮件内容,向外人泄露自己电脑的IP是非常危险的行为!!! 这点尤其注意),但是需要邮箱提供的STMP服务和一个授权码,简单来说就是你可以通过这个授权码调用邮箱的服务器给自己的邮箱发一封邮件。获取的过程可以根据不同的邮箱在网上搜索教程。我用的QQ邮箱,以下以QQ邮箱为例。

步骤一:获取正确的IPv6地址

  • 重点讲以下IPV6的获取,这里有很大的坑,如果你的电脑比较高端,有多个网卡,或者有无线网卡,你可能会遇到获取到多个的IPV6的地址,我在这里就遇到了,所以我在获取IPV6时限制了两个条件:RouterAdvertisementRandom
$ipv6Addresses =  (Get-NetIPAddress -AddressFamily IPv6 | Where-Object { $_.PrefixOrigin -eq "RouterAdvertisement" } | Where-Object { $_.SuffixOrigin -eq "Random" }).IPAddress
  • 这是根据我的网卡信息决定的,下面我来说明下怎么你怎么获取正确的地址
首先打开windows的PowerShell:

请添加图片描述

在PowerShell中执行命令
Get-NetIPAddress -AddressFamily IPv6

请添加图片描述
请添加图片描述

  • 这里可以看到我获取到了非常多的IPV6地址,包含一些虚拟设备的。一般来说,公网的IPV6地址是以2409开头,所以你只需要获取到2409开头的IPV6地址的那一个地址就可以。所以,对于我的电脑,对IPV6的筛选条件就是PrefixOrigin参数为RouterAdvertisement,SuffixOrigin参数为Random:
    请添加图片描述
  • 也就是脚本后面的内容:
| Where-Object { $_.PrefixOrigin -eq "RouterAdvertisement" } | Where-Object { $_.SuffixOrigin -eq "Random" }
  • 我想表达的是你需要根据你电脑的实际情况进行修改,最终目的是为了获取到正确的IPV6地址

  • 另外,你还可能遇到电脑有两个IPV6地址的情况,如果是这样,你可以使用网站:测试IPV6这个网站来查看自己对外的IPV6是哪一个,再筛选出对应的网卡就行。
    请添加图片描述

步骤二:编写获取IPv6地址的脚本

  • 在获取到正确的IPV6地址后就可以创建开始编写脚本了
  • 打开记事本或其他文本编辑器,编写一个PowerShell脚本来获取IPv6地址并发送邮件。以下是一个示例脚本:
# 获取你的IPv6地址
$ipv6Addresses =  (Get-NetIPAddress -AddressFamily IPv6 | Where-Object { $_.PrefixOrigin -eq "RouterAdvertisement" } | Where-Object { $_.SuffixOrigin -eq "Random" }).IPAddress# QQ邮箱授权码
$accessToken = '************'# 邮件发送参数
# 邮件的发送地址
$fromAddress = '5201314756@qq.com'
# 发送的目标邮件地址 我们发送给自己
$toAddress = '5201314756@qq.com'
# 发送邮件的主题
$subject = 'IPv6 Address on ' + $(Get-Date)
# 发送邮件的内容 “47989”是我Sunshine的端口号,可以根据自己的端口修改
$body = 'The IPv6 address of this machine is: [' + $ipv6Addresses + ']:47989'
# 邮件的发送服务器地址,根据自己的邮箱修改
$smtpServer = 'smtp.qq.com'
# 邮件的发送服务器端口,根据自己的邮箱修改
$port = 587# 使用SSL,设置TLS保护的连接
$smtpClient = New-Object Net.Mail.SmtpClient($smtpServer, $port)
$smtpClient.EnableSsl = $true
$smtpClient.Credentials = New-Object System.Net.NetworkCredential($fromAddress, $accessToken)# 创建邮件对象
$mail = New-Object System.Net.Mail.MailMessage
$mail.From = New-Object System.Net.Mail.MailAddress($fromAddress)
$mail.To.Add($toAddress)
$mail.Subject = $subject
$mail.Body = $body$smtpClient.Send($mail)
  1. 将上述脚本保存为 SendIPv6Address.ps1,放在一个方便管理的目录。

步骤二:创建任务计划

  1. 打开任务计划程序:
    • Win + R 键,输入 taskschd.msc,然后按回车。
      请添加图片描述
  2. 创建一个PersonalShell文件夹
    请添加图片描述
  3. 创建一个新的任务:
    • 在任PersonalShell文件夹中,点击右侧的“创建任务”。
      请添加图片描述
  4. 配置任务的一般信息:
    • 在“常规”选项卡中,输入任务名称,例如“SendIPv6AddressOnStartup”。
    • 选择“使用最高权限运行”。
      请添加图片描述
  5. 配置触发器:
    • 转到“触发器”选项卡,点击“新建”。
    • 在“开始任务”下拉菜单中,选择“在启动时”。
    • 点击“确定”。
      请添加图片描述
  6. 配置操作:
    • 转到“操作”选项卡,点击“新建”。
    • 在“操作”下拉菜单中,选择“启动程序”。
    • 在“程序/脚本”字段中,输入 powershell.exe
    • 在“添加参数”字段中,输入 -File "C:\path\to\SendIPv6Address.ps1",将 C:\path\to\SendIPv6Address.ps1 替换为实际脚本的路径。
    • 点击“确定”。
      请添加图片描述
  7. 配置条件和设置:
    • 在“条件”选项卡中,取消勾选“只有在计算机使用交流电源时才启动此任务”。
    • 在“设置”选项卡中,确保选中“如果任务失败,重新启动每”选项,并配置适当的重试次数和间隔。
      请添加图片描述
  8. 保存任务:
    • 点击“确定”保存任务。

步骤三:测试任务

  1. 在任务界面邮件点击运行,看有没有收到邮件,如果成功发送则重启测试。
  2. 重新启动计算机,确保任务在启动时运行,检查指定的邮箱,确认是否收到了包含IPv6地址的邮件。

搞定!

这篇关于Windows11系统自动获取电脑IPV6地址,并且开机自动发送到指定邮箱的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1086513

相关文章

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

Java通过反射获取方法参数名的方式小结

《Java通过反射获取方法参数名的方式小结》这篇文章主要为大家详细介绍了Java如何通过反射获取方法参数名的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、解决方式方式2.1: 添加编译参数配置 -parameters方式2.2: 使用Spring的内部工具类 -

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具