六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 65|回复: 0

登录Windows自动映射磁盘

[复制链接]

升级  8.67%

15

主题

15

主题

15

主题

秀才

Rank: 2

积分
63
 楼主| 发表于 2013-1-28 11:48:31 | 显示全部楼层 |阅读模式
      最近项目客户要求做一个功能,内容是希望希望用户在登录windows的时候,根据用户自己负责的项目来自动创建网络映射驱动器,用户需要映射磁盘的信息都存在数据库中。经过调查研究,打算使用powershell实现,实现方式大体如下:
 
1.先创建powershell脚本,代码如下:

#获取当前用户$currentAccountName = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name;#通过用户名查询出该用户应该映射的路径、和映射路径的用户名和密码(过程略)##......#模拟一个映射列表和登录名密码,作为上面的查询结果$diskList = @("\\192.168.22.141\AD","\\192.168.22.141\OracleExportShell");$accountName = "Administrator";$password = "zhang.ruyi123";#创建wscript.network对象$driver = New-Object -ComObject wscript.network;#移除所有网络驱动器Get-WmiObject Win32_Networkconnection | ForEach-Object {$driver.RemoveNetworkDrive($_.LocalName,$true,$false);}#查询所有逻辑驱动器$logicalDiskList = (@());Get-WmiObject Win32_Logicaldisk  | ForEach-Object {$logicalDiskList += $_.DeviceID;}#所有驱动器列表$deviceQueue = New-Object -TypeName System.Collections.Generic.Queue[System.String];$deviceQueue.Enqueue("A:");$deviceQueue.Enqueue("B:");$deviceQueue.Enqueue("C:");$deviceQueue.Enqueue("D:");$deviceQueue.Enqueue("E:");$deviceQueue.Enqueue("F:");$deviceQueue.Enqueue("G:");$deviceQueue.Enqueue("H:");$deviceQueue.Enqueue("I:");$deviceQueue.Enqueue("J:");$deviceQueue.Enqueue("K:");$deviceQueue.Enqueue("L:");$deviceQueue.Enqueue("M:");$deviceQueue.Enqueue("N:");$deviceQueue.Enqueue("O:");$deviceQueue.Enqueue("P:");$deviceQueue.Enqueue("Q:");$deviceQueue.Enqueue("R:");$deviceQueue.Enqueue("S:");$deviceQueue.Enqueue("T:");$deviceQueue.Enqueue("U:");$deviceQueue.Enqueue("V:");$deviceQueue.Enqueue("W:");$deviceQueue.Enqueue("X:");$deviceQueue.Enqueue("Y:");$deviceQueue.Enqueue("Z:");#添加指定驱动器$diskList | ForEach-Object{$deviceId = $null;while($true){$deviceId = $deviceQueue.Dequeue();if(($logicalDiskList -notcontains $deviceId) -or ($deviceQueue.Count -eq 0)){break;}}#查询出一个可用的驱动器名if($deviceQueue.Count -ne 0){$driver.MapNetworkDrive($deviceId,$_,$false,$accountName,$password);}} 上述脚本的功能是获取当前用户登录名,然后根据登录名调用webservice来查询所需要的信息,然后删除已有的网络映射,在创建出新的网络映射。如何使用powershell调用webservice,请参考
 
2.将写好的powershell放在域控上,然后将这个脚本挂载到组策略对象的登录事件中,就OK了。


您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表