我如何确定用户输入的共享名是否为 windows 网络共享的有效共享名?
How can I figure out if user input is a valid sharename for windows net share?
我有一个 powershell 脚本,它要求用户输入 windows 共享文件夹的名称。我正在使用 Windows' Net Share 设置共享文件夹。我想按照以下方式做一些事情:
$dest = "C:\Syncer"
$sharename = Read-Host
net share $sharename=$dest
但是,Windows 不会将所有输入字符串标识符识别为有效的共享名。例如,给它输入 Aa.,
将不起作用。我如何确定用户的输入是否作为有效标识符?
@ TheMadTechnician 提供了很好的解决方案,我只是提出了服务器消息块 (SMB) 的事实,其中一个版本也称为通用 Internet 文件系统 (CIFS) 支持 Universal Naming Convention (UNC) 名称.
这是摘要,您对共享名感兴趣:
UNC = "\" host-name "\" share-name [ "\" object-name ]
host-name = "[" IPv6address ‘]" / IPv4address / reg-name; IPv6address, IPv4address, and reg-name as specified in [RFC3986]
share-name = 1*80pchar
pchar = %x20-21 / %x23-29 / %x2D-2E / %x30-39 / %x40-5A / %x5E-7B / %x7D-FF
object-name = *path-name [ "\" file-name ]
path-name = 1*255pchar
file-name = 1*255fchar [ ":" stream-name [ ":" stream-type ] ]
fchar = %x20-21 / %x23-29 / %x2B-2E / %x30-39 / %x3B / %x3D / %x40-5B / %x5D-7B / %x7D-FF
stream-name = *schar
schar = %x01-2E / %x30-39 / %x3B-5B /%x5D-FF
stream-type = 1*schar
Here 是 Regex 表达式的结果,我认为 google 可以给你更多。
我有一个 powershell 脚本,它要求用户输入 windows 共享文件夹的名称。我正在使用 Windows' Net Share 设置共享文件夹。我想按照以下方式做一些事情:
$dest = "C:\Syncer"
$sharename = Read-Host
net share $sharename=$dest
但是,Windows 不会将所有输入字符串标识符识别为有效的共享名。例如,给它输入 Aa.,
将不起作用。我如何确定用户的输入是否作为有效标识符?
@ TheMadTechnician 提供了很好的解决方案,我只是提出了服务器消息块 (SMB) 的事实,其中一个版本也称为通用 Internet 文件系统 (CIFS) 支持 Universal Naming Convention (UNC) 名称.
这是摘要,您对共享名感兴趣:
UNC = "\" host-name "\" share-name [ "\" object-name ]
host-name = "[" IPv6address ‘]" / IPv4address / reg-name; IPv6address, IPv4address, and reg-name as specified in [RFC3986]
share-name = 1*80pchar
pchar = %x20-21 / %x23-29 / %x2D-2E / %x30-39 / %x40-5A / %x5E-7B / %x7D-FF
object-name = *path-name [ "\" file-name ]
path-name = 1*255pchar
file-name = 1*255fchar [ ":" stream-name [ ":" stream-type ] ]
fchar = %x20-21 / %x23-29 / %x2B-2E / %x30-39 / %x3B / %x3D / %x40-5B / %x5D-7B / %x7D-FF
stream-name = *schar
schar = %x01-2E / %x30-39 / %x3B-5B /%x5D-FF
stream-type = 1*schar
Here 是 Regex 表达式的结果,我认为 google 可以给你更多。