首页 > 系统相关 >PowerShell编写Windows服务器的DDNS-ipv6客户端

PowerShell编写Windows服务器的DDNS-ipv6客户端

时间:2024-02-04 10:32:38浏览次数:24  
标签:cn Get Windows Path ipv6 DDNS v6 fm20 path

复制下面这个代码保存成“ddnsv6.fm20.cn.ps1”然后运行

function Get-GUID() {
    # 指定注册表路径
    $path = "HKLM:\Software\Firadio"

    # 如果注册表路径不存在则创建
    if (-not (Test-Path $path)) {
        New-Item -Force -Path $path >$null
    }

    # 尝试获取注册表中的 "guid" 属性值
    $v = Get-ItemProperty -ErrorAction SilentlyContinue -Path $path -Name "g"
    if ($v) {
        return $v.g
    }

    # 如果 "guid" 属性不存在,则生成一个新的 GUID 并写入注册表
    $g = [System.Guid]::NewGuid().Guid
    Set-ItemProperty -Path $path -Name "g" -Value $g
    return $g
}

# 创建一个 UDP 客户端并发送数据
$udpClient = New-Object System.Net.Sockets.UdpClient([System.Net.Sockets.AddressFamily]::InterNetworkV6)
$data = Get-GUID
$msg = [Text.Encoding]::UTF8.GetBytes($data)

# 循环发送数据
while ($true) {
    $udpClient.Send($msg, $msg.Length, 'ddnsv6.fm20.cn', 12345)
    Start-Sleep -Seconds 1
}

# 关闭 UDP 客户端
$udpClient.Close()

但有些电脑运行后会提示错误

ddnsv6.fm20.cn.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.
    + CategoryInfo          : SecurityError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnauthorizedAccess

所以下面我改成bat,确保大多数Windows系统都能正常能运行。
复制下面这个代码并保存成“ddnsv6.fm20.cn.bat”就能正常运行了

powershell -c "function Get-GUID(){$path=\"HKLM:\Software\Firadio\ddnsv6.fm20.cn\";if (-not (Test-Path $path)) {New-Item -Force -Path $path >$null;}$v=Get-ItemProperty -ErrorAction SilentlyContinue -Path $path -Name \"guid\";if ($v) {return $v.guid;}$guid=[System.Guid]::NewGuid().Guid;Set-ItemProperty -Path $path -Name \"guid\" -Value $guid;return $guid;}$udpClient=New-Object System.Net.Sockets.UdpClient([System.Net.Sockets.AddressFamily]::InterNetworkV6);$data=Get-GUID;$msg=[Text.Encoding]::UTF8.GetBytes($data);while($true){try{$ret=$udpClient.Send($msg,$msg.Length,'ddnsv6.fm20.cn',12345);}catch{Write-Host \"$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') $_\"}Start-Sleep -Seconds 10;}$udpClient.Close();"

但是每次开机都要手动打开,显然不太合适,所以就设置成开机自动启动

但是schtasks限制了261字节,因此改成

powershell -c "function Get-GUID(){$path=\"HKLM:\Software\Firadio\";if (-not (Test-Path $path)) {New-Item -Force -Path $path >$null;}$v=Get-ItemProperty -ErrorAction SilentlyContinue -Path $path -Name \"g\";if ($v) {return $v.g;}$g=[System.Guid]::NewGuid().Guid;Set-ItemProperty -Path $path -Name \"g\" -Value $g;return $g;}Get-GUID;"
schtasks /end /tn "v6.fm20.cn"
schtasks /create /F /tn "v6.fm20.cn" /tr "powershell -c \"$c=New-Object Net.Sockets.UdpClient([Net.Sockets.AddressFamily]::InterNetworkV6);$v=gp -Pa \\\"HKLM:\SOFTWARE\Firadio\\\" -N \\\"g\\\";$m=[Text.Encoding]::UTF8.GetBytes($v.g);for(){$c.Send($m,$m.Length,\\\"v6.fm20.cn\\\",1);sleep 1}\"" /sc onstart /ru "SYSTEM"
schtasks /run /tn "v6.fm20.cn"

但是Guid可能会因为系统克隆而导致多台电脑相同的g值,因此改成获取MAC地址最为合适

powershell -c "$mac=(Get-NetAdapter -InterfaceIndex (Get-NetIPAddress -AddressFamily IPv6|Where-Object {$_.IPAddress -like '2*'} | Select-Object -First 1).InterfaceIndex).MacAddress;$path=\"HKLM:\Software\Firadio\";if (-not (Test-Path $path)) {New-Item -Force -Path $path >$null;};Set-ItemProperty -Path $path -Name \"g\" -Value $mac;"
schtasks /end /tn "v6.fm20.cn"
schtasks /create /F /tn "v6.fm20.cn" /tr "powershell -c \"$c=New-Object Net.Sockets.UdpClient([Net.Sockets.AddressFamily]::InterNetworkV6);for(){$v=gp -Pa \\\"HKLM:\SOFTWARE\Firadio\\\" -N \\\"g\\\";$m=[Text.Encoding]::UTF8.GetBytes($v.g);$c.Send($m,$m.Length,\\\"v6.fm20.cn\\\",1);sleep 1}\"" /sc onstart /ru "SYSTEM"
schtasks /run /tn "v6.fm20.cn"

但是3天后就关闭了,而且不小心杀了进程也不会再启动了。所以改成每分钟都运行,但如果已经运行的就不会重复运行多个。

@ECHO OFF
powershell -c "$mac=(Get-NetAdapter -InterfaceIndex (Get-NetIPAddress -AddressFamily IPv6|Where-Object {$_.IPAddress -like '2*'} | Select-Object -First 1).InterfaceIndex).MacAddress;$path=\"HKLM:\Software\Firadio\";if (-not (Test-Path $path)) {New-Item -Force -Path $path >$null;};Set-ItemProperty -Path $path -Name \"g\" -Value $mac;"
schtasks /end /tn "v6.fm20.cn"
schtasks /create /F /TN "v6.fm20.cn" /RU "SYSTEM" /SC MINUTE /MO 1 /TR "powershell -c \"$c=New-Object Net.Sockets.UdpClient([Net.Sockets.AddressFamily]::InterNetworkV6);for(){$v=gp -Pa \\\"HKLM:\SOFTWARE\Firadio\\\" -N \\\"g\\\";$m=[Text.Encoding]::UTF8.GetBytes($v.g);$c.Send($m,$m.Length,\\\"v6.fm20.cn\\\",1);sleep 1}\""
schtasks /run /tn "v6.fm20.cn"
PAUSE

标签:cn,Get,Windows,Path,ipv6,DDNS,v6,fm20,path
From: https://blog.51cto.com/xiangxisheng/9578252

相关文章

  • 关于Windows11的优化内容 - 进阶者系列 - 学习者系列文章
          这几天无事,想起上次刚重装的Windows11操作系统,对于系统优化的内容想记录一下,以前没写过相关的博文,这次就做个记录吧。对于Windows11,已经出来几年了,相关的设置啥的也有,就是优化方面的软件和设置也有相关的,这次就把笔者这边所有相关的优化工具软件和脚本啥的一并发布......
  • Invicti v24.1.0 for Windows - 企业应用安全测试
    Invictiv24.1.0forWindows-企业应用安全测试InvictiStandard30Jan2024v24.1.0.43434请访问原文链接:Invictiv24.1.0forWindows-企业应用安全测试,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgInvicti是一种自动化但完全可配置的Web应用程序安全扫......
  • Nexpose v6.6.236 for Linux & Windows - 漏洞扫描
    Nexposev6.6.236forLinux&Windows-漏洞扫描Rapid7VulnerabilityManagement,ReleaseFeb02,2024请访问原文链接:https://sysin.org/blog/nexpose-6/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org您的本地漏洞扫描程序搜集通过实时覆盖整个网络,随......
  • Windows 下 LaTex 超简单地安装使用(MikTeX + VSCode)
    写这篇是因为我找了一晚上教程,结果发现基本上都过时了,现在的版本下根本不需要任何复杂的操作,干脆自己写一个免得后来人再崩溃。参考及主要内容来源,可以说我后半部分内容基本就是翻译(?安装LaTex主流的分发版本应该就是TeXLive和MikTeX了,这里使用MikTex——TeXLive太大了......
  • 使用VNC在Windows上远程访问Ubuntu服务器
    Step0:事前准备一台安装了ghome桌面的Ubuntu服务器(用作server)一台Windows机器(用作client)Step1:Linux服务器在Ubuntu上安装一个VNC服务器,有多个选择,此处选用tigervnc,使用apt命令即可直接安装发行版。aptinstalltigervnc安装完成后可以尝试做以下设置:vncpasswdvncserver......
  • Windows Server 20xx 命令行配置系统策略
    :WindowsServer命令行配置系统策略:如果感觉使用图形界面进行系统策略配置比较繁琐,可以通过命令行方式批量配置系统策略。:先编制如下内容的SetSysPolicies.cmd文件(其中“@echo”引导的为文字回显行),然后以管理员方式打开CMD,:直接运行SetSysPolicies.cmd便可以快速完成系统策略配置......
  • 2、Git之Windows版本的安装
    2.1、下载Git官网下载地址:https://git-scm.com/download/最初,Git是用于管理Linux社区的代码,所以在很长的一段时间内,Git只能安装在Linux或Unix系统上。现在,Git已经可以安装在Linux、Unix、Mac和Windows这几大系统上了。由于大多数用户用的都是windows系统(64位),......
  • Adobe Photoshop 2024 v25.4 (macOS, Windows) - 照片和设计软件
    AdobePhotoshop2024v25.4(macOS,Windows)-照片和设计软件Acrobat、AfterEffects、Animate、Audition、Bridge、CharacterAnimator、Dimension、Dreamweaver、Illustrator、InCopy、InDesign、LightroomClassic、MediaEncoder、Photoshop、PremierePro、AdobeXD请......
  • Windows Server 2022 OVF, updated Jan 2024 (sysin) - VMware 虚拟机模板
    WindowsServer2022OVF,updatedJan2024(sysin)-VMware虚拟机模板2024年1月版本更新,现在自动运行sysprep,支持ESXiHostClient部署请访问原文链接:https://sysin.org/blog/windows-server-2022-ovf/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org现在......
  • Splunk Enterprise 9.2.0 (macOS, Linux, Windows) - 机器数据管理和分析
    SplunkEnterprise9.2.0(macOS,Linux,Windows)-机器数据管理和分析SIEM、全面的日志管理和分析平台请访问原文链接:https://sysin.org/blog/splunk-9/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org混合世界的数据平台快速、大规模地从可见性转向行动,以实现安......