如何确定用户输入是否是Windows网络共享的有效共享名?

时间:2016-02-10 20:35:14

标签: windows powershell share

我有一个powershell脚本,它询问用户输入Windows共享文件夹的名称。我正在使用Windows“Net Share设置共享文件夹。我想按照以下方式做点什么:

$dest = "C:\Syncer" $sharename = Read-Host net share $sharename=$dest

但是,Windows不会将所有输入字符串标识符识别为有效的共享名称。例如,给它输入Aa.,将不起作用。如何确定用户的输入是否作为有效标识符?

1 个答案:

答案 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表达式的结果,我认为谷歌可以为您提供更多。