登录Windows自动映射磁盘
最近项目客户要求做一个功能,内容是希望希望用户在登录windows的时候,根据用户自己负责的项目来自动创建网络映射驱动器,用户需要映射磁盘的信息都存在数据库中。经过调查研究,打算使用powershell实现,实现方式大体如下:1.先创建powershell脚本,代码如下:
#获取当前用户$currentAccountName = ::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;$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,请参考http://zhangruyi5599.iteye.com/blog/1571532。
2.将写好的powershell放在域控上,然后将这个脚本挂载到组策略对象的登录事件中,就OK了。
页:
[1]