我有一个powershell脚本,它询问用户输入Windows共享文件夹的名称。我正在使用Windows“Net Share设置共享文件夹。我想按照以下方式做点什么:
$dest = "C:\Syncer"
$sharename = Read-Host
net share $sharename=$dest
但是,Windows不会将所有输入字符串标识符识别为有效的共享名称。例如,给它输入Aa.,
将不起作用。如何确定用户的输入是否作为有效标识符?
答案 0 :(得分:1)
@ TheMadTechnician提供了很好的解决方案,我只是提到服务器消息块(SMB),其中一个版本也称为通用Internet文件系统(CIFS)支持Universal Naming Convention(UNC)名称。< / p>
以下是摘要,您对共享名称感兴趣:
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表达式的结果,我认为谷歌可以为您提供更多。