将Windows 10的G盘设置为局域网内的NAS

要将Windows 10的G盘设置为局域网内的NAS(网络附加存储),可以通过Windows的共享功能实现,其他局域网内的电脑可以访问共享的文件夹。以下是一个实现步骤的说明,并提供一个PowerShell脚本用于自动化设置共享文件夹和权限。

NAS是什麼?NAS推薦與基本介紹(2024年) - 凌威科技

实现步骤概述

  1. 启用文件共享功能:确保Windows的网络发现和文件共享功能已开启。
  2. 设置共享文件夹:将G盘中的特定文件夹设置为共享,并配置访问权限。
  3. 防火墙设置:确保Windows防火墙允许文件和打印机共享。
  4. 局域网访问:其他电脑通过网络路径(如\IP地址\共享名)访问共享文件夹。

以下是使用PowerShell脚本自动设置G盘文件夹共享的代码:

# 确保以管理员身份运行
if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
    Write-Warning "请以管理员身份运行此脚本!"
    exit
}

# 设置变量
$DriveLetter = "G:"
$ShareFolderPath = "$DriveLetter\SharedFolder"  # G盘中的共享文件夹路径
$ShareName = "NASShare"  # 共享名称
$Description = "G盘共享文件夹作为NAS"
$EveryonePermission = "Everyone,Read"  # 默认只读权限,修改为"Everyone,Full"可允许写入

# 检查G盘是否存在
if (-Not (Test-Path $DriveLetter)) {
    Write-Error "G盘不存在,请检查驱动器!"
    exit
}

# 创建共享文件夹(如果不存在)
if (-Not (Test-Path $ShareFolderPath)) {
    New-Item -Path $ShareFolderPath -ItemType Directory
    Write-Host "已创建共享文件夹:$ShareFolderPath"
}

# 启用网络发现和文件共享
Write-Host "启用网络发现和文件共享..."
Set-NetFirewallRule -DisplayGroup "File and Printer Sharing" -Enabled True -Profile Private,Domain
netsh advfirewall firewall set rule group="Network Discovery" new enable=Yes

# 设置文件夹共享
Write-Host "设置文件夹共享:$ShareFolderPath"
try {
    New-SmbShare -Name $ShareName -Path $ShareFolderPath -Description $Description -FullAccess $EveryonePermission -ErrorAction Stop
    Write-Host "共享创建成功!共享名:$ShareName"
} catch {
    Write-Error "创建共享失败:$_"
    exit
}

# 输出访问信息
$ComputerName = $env:COMPUTERNAME
$LocalIP = (Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.InterfaceAlias -like "*Wi-Fi*" -or $_.InterfaceAlias -like "*Ethernet*" }).IPAddress
Write-Host "共享设置完成!"
Write-Host "局域网内其他电脑可以通过以下路径访问:"
Write-Host "\\$ComputerName\$ShareName 或 \\$LocalIP\$ShareName"
Write-Host "请确保局域网内电脑在同一网络中,且防火墙允许文件共享。"

以下是gemini给的一些扩展方向和应用场景的建议,从简单到复杂排列:

1. 功能增强与体验优化 (Enhancements & UX Improvements)

这些是在现有基础上直接进行的改进,可以让你更好地使用这个工具。

  • 历史记录持久化: 目前 TEXT_HISTORY 是一个内存变量,服务器重启后历史记录就会丢失。你可以将历史记录保存到文件中(如 txt, json, csv),每次服务器启动时加载,实现历史记录的持久化。
  • 增加时间戳: 在每条消息旁边显示提交的时间,这样可以更清楚地知道消息是什么时候发送的。
  • 支持删除/清空历史: 在前端页面上为每条消息添加一个“删除”按钮,或者添加一个“清空所有历史”的按钮。这需要在后端 do_POSTdo_GET 中处理相应的请求。
  • 美化前端页面: 使用更现代的 CSS 框架 (如 Bootstrap, Tailwind CSS) 来美化页面,使其在不同设备上(尤其是移动设备)有更好的显示效果(响应式设计)。
  • 实时刷新: 目前必须手动刷新页面才能看到新的消息。你可以使用 JavaScript 在前端实现定时轮询(每隔几秒向服务器请求一次最新数据)或者更高阶的 WebSocket 技术,实现消息的实时推送,打造一个真正的局域网聊天室。
  • 生成二维码: 在服务器启动时,将局域网访问地址 http://<local_ip>:<port> 生成一个二维码并显示在控制台或网页上。这样,其他人用手机扫一扫就能直接访问,非常方便。

2. 从文本到文件 (From Text to Files)

这是最直接、最实用的扩展方向,将纯文本传输升级为文件传输。

  • 局域网文件共享工具:
    • 在网页上添加一个文件上传的表单 (<input type="file">)。
    • 修改后端的 do_POST 方法来处理 multipart/form-data 类型的请求,接收并保存上传的文件到服务器的特定文件夹。
    • 在主页上列出所有已上传的文件,并提供下载链接。
    • 进阶玩法: 可以实现拖拽上传、显示上传进度条、文件分享有效期、密码保护等功能。这基本上就是一个轻量级的个人局域网“网盘”或“NAS”。

3. 有趣的应用方向 (Fun Applications)

基于这个核心框架,可以构建一些特定场景的好玩应用。

  • 局域网匿名投票/问卷系统:
    • 创建一个发起投票的页面,输入问题和选项。
    • 将投票信息提交到服务器,生成一个唯一的投票链接。
    • 局域网内的其他人访问这个链接进行投票。
    • 服务器实时统计票数,并可以在结果页面上以图表(如柱状图)的形式动态展示。
  • 剪贴板共享工具 (Clipboard Sharing):
    • 核心思想是将文本传输功能聚焦于“剪贴板”。
    • 电脑 -> 手机: 在电脑上复制一段文本,粘贴到网页上提交。然后手机访问这个网页,就能看到最新的文本,直接复制使用。
    • 手机 -> 电脑: 反之亦然。
    • 进阶玩法: 可以结合浏览器扩展(Extension)或者桌面客户端,实现自动同步剪贴板内容,做到真正的“隔空复制粘贴”。
  • 简单的代码/笔记片段分享 (Code/Note Snippet Sharing):
    • 针对程序员或团队协作场景。
    • 在文本输入框中增加对代码高亮的支持(例如使用 highlight.js 这样的前端库)。
    • 提交代码片段后,页面上会以美观的、高亮的形式展示出来,方便其他人查看和复制。
  • 临时消息板/“阅后即焚”:
    • 可以给每条消息设置一个“生命周期”。例如,只显示最近的 10 条消息,或者消息在提交 5 分钟后自动删除。
    • 实现一个“阅后即焚”模式:生成一个一次性访问链接,该链接里的消息在被查看一次后即从服务器删除。
  • 本地物联网 (IoT) 控制面板:
    • 如果你有一些支持网络请求的智能设备(比如某些智能灯泡、开关),你可以用这个服务器作为它们的控制中心。
    • 在网页上创建一些按钮,比如“开灯”、“关灯”。
    • 点击按钮时,前端发送一个 POST 请求到你的 Python 服务器,服务器收到请求后,再向你的智能设备的 API 地址发送相应的控制指令。

如何选择?

  • 新手入门: 建议从 功能增强 开始,比如“增加时间戳”和“历史记录持久化”,这些改动相对简单,能帮助你更好地理解代码。
  • 实用主义: 文件共享 功能是价值最高的扩展,能解决生活中“手机和电脑互传文件”的痛点。
  • 追求好玩: 剪贴板共享匿名投票系统 是非常有趣且实现起来不太复杂的项目。