如何安全优雅地利用共享服务实现自动管理多人异地共享(二)

话说孔大力外出吃饭,约莫6点钟的样子回到了办公室。

只见他一脸未吃尽兴的样子,边走还边抹着嘴角的油花。

回到座位上,他看了一眼桌上的草稿,心里极不情愿地詈骂道:“老板不讲武德!”

骂归骂,活儿还是得接着干啊,谁叫咱是打工人呢,时间紧迫,还得抓点紧不是。


孔大力将这个共享文件夹命名为 TempShare ,字面上也就是临时文件夹的意思。

按照原来的设想,先搭建测试环境,然后再写一些代码来实现最终想要的功能和效果。


孔大力操作着电脑,用了将近2个小时才搭建出了一个简单的域环境。

  • AD域服务:Windows 2016
  • 共享服务:Windows 2016
  • 客户端:Windows 10


然后在共享服务器启用文件服务并创建一个名称为 TempShare 的共享文件夹。

1、在 服务器管理器 上点击 添加角色和功能 ,安装文件服务。


2、注意钩选 启用基于存取的枚举 ,用户只能看到自己有权限访问的文件夹。


3、起个名字叫 TempShare ,选择 通用 组。



接下来他尝试着使用 VBS 写一些代码。


首先,先来定义一些可能用到的变量。

初步设定,文件夹名称为 用户名+随机8位字符+日期 ,有效访问期限为3天,默认使用 OUTLOOK 粘贴发送链接。

strShareFolder = "\\Server\TempShare$"         ' 指定共享路径
strUserName = objNetwork.UserName              ' 获取用户名
intCharNo = 8                                  ' 指定随机8个字符
strRandomChar = RandomChar(intCharNo)          ' 获取随机字符串
intAddDate = 3                                 ' 指定3天过期
strDate = CalculateDate(intAddDate)            ' 指定日期以YYYYMMDD的形式
strFolderName = strUserName & "-" & strRandomChar & "-" & strDate ' 指定生成的文件夹名称
intArgNum = WScript.Arguments.Count            ' 获取命令参数数量
intMailFlag = 0                                ' 0 - 以OUTLOOK方式打开, 1 - 以IE方式打开
 


其次,创建 TempShare 临时共享文件夹。

objFSO.CreateFolder(strShareFolder & "\" & strFolderName)
If Err.Number <> 0 Then
   Msgbox "An error occurred during folder creating." & vbCrLf & "ErrNo: " & Err.Number
End If
 


再次,在当前用户桌面上创建可访问 TempShare 的快捷方式。

代码中的 TempShareOpenIcon.ico 图标文件为快捷方式的图标,可任意指定。

strShortcutPath = objWSH.SpecialFolders("Desktop")
Set objSC = objWSH.CreateShortcut(strShortcutPath & "\" & strFolderName & ".lnk")
objSC.TargetPath = strShareFolder & "\" & strFolderName
objSC.IconLocation = "\\Server\TempShareOpenIcon.ico, 0"
objSC.Save
If Err.Number <> 0 Then
   Msgbox "An error occurred during shortcut creating ." & vbCrLf & "ErrNo: " & Err.Number
End If
 


再而三,复制 TempShare 路径到剪贴板。

此举只为提供后续步骤的粘贴动作。

PutInClipboardText "file:///" & strShareFolder & "\" & strFolderName & "\"
If Err.Number <> 0 Then
   Msgbox "Could not copy TempShare path to clibpoard." & vbCrLf & "ErrNo: " & Err.Number
End If
 


最后,将剪贴板内容再粘贴到邮件正文。

此处可以修改为任意你想要的打开方式,比如粘贴到其他邮件客户端。

另外需要注意了,通过IE浏览器来间接打开发送邮件的方式,可能会导致一些失败。

' 启动OUTLOOK生成邮件,没有OUTLOOK时使用IE打开
' 注意,用IE打开会有许可确认提示窗口

Set objOL = CreateObject("Outlook.Application")
Set MailItem = objOL.CreateItem(0)
If Err.Number <> 0 Then
   intMailFlag = 1
End If

' 生成模板(OUTLOOK换行:vbCrLf,IE换行:%0D%0A)
If intMailFlag = 0 Then
   strNewLine=vbCrLf
Else
   strNewLine = "%0D%0A"
End If
strMail = " " & strNewLine & " " & strNewLine &_
          "<--------------------------------------------------------------------------------------------------------------->" & strNewLine &_
"   TempShare:  file:///" & strShareFolder & "\" & strFolderName & "\" & strNewLine & " " &_
          strNewLine &_
          "  [Guidance]" & strNewLine &_
"     This is a temporary folder for transmitting files between company PCs." & strNewLine &_
"     Click the above TempShare, you can download/upload files freely." & strNewLine &_
"     Attention, files will be deleted automatically after " & Mid(strDate, 5, 2) & "/" & Right(strDate, 2) & "/" &Left(strDate, 4) & "(MM/DD/YYYY)." & strNewLine &_
          "<--------------------------------------------------------------------------------------------------------------->" & strNewLine & strNewLine & strNewLine

If intMailFlag = 0 Then
  ' 通过 OUTLOOK 创建模板
   MailItem.Body = strMail
   MailItem.Display
Else
  ' 通过 IE 创建模板
   objIE.visible=false
   objIE.navigate("mailto:?body=" & strMail)
End If

' 用文件资源管理器打开 TempShare 所在路径
objSH.Explore strShareFolder & "\" & strFolderName & "\"
If Err.Number <> 0 Then
    Msgbox "Could not create template mail via Internet Explorer." & vbCrLf & "ErrNo: " & Err.Number
End If
 



以上代码另外还包括了几个调用函数,具体都写在完整源码里了,后面有下载。

PutInClipboardText(ByVal strString)    ' 复制文本到剪贴板
RandomChar(intCharNo)                  ' 产生指定字符和位数的随机字符串(1~9/A~Z/a~z/_-$!)
CalculateDate(intAddDate)              ' 计算指定的天数并以 YYYYMMDD 形式返回
 


夜已深,窗外不断传来虫儿们的鸣叫声。

孔大力眯缝着眼看了看时间,已是凌晨1点多了。

他眼中噙着泪,口中打着哈,站起身来伸了个懒腰。

“哈啊...看样子今天的班儿就加到这儿吧~”

“咳咳...还有共享文件夹的权限问题和时间限定问题,算了算了,明天再搞吧~年轻人要耗子尾汁啊!”

一阵阵困意袭来,孔大力不禁自言自语起来。

这位苦逼的打工人强打精神,简单地收拾下自己的电脑和背包,很快就甩门离去,背影渐渐消失在茫茫夜色中......


关注微信公众号,查看下一篇,下载完整源码。


关注 @网管小贾,阅读更多...

WeChat@网管小贾 | www.sysadm.cc



提交评论

安全码
刷新

© 2020-present 网管小贾 | 微信公众号 @网管小贾
许可协议:CC-BY-NC 4.0 | 转载文章请注明作者出处及相关链接