登录Windows自动映射磁盘

      最近项目客户要求做一个功能,内容是希望希望用户在登录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,请参考http://zhangruyi5599.iteye.com/blog/1571532

 

2.将写好的powershell放在域控上,然后将这个脚本挂载到组策略对象的登录事件中,就OK了。


你可能感兴趣的:(windows,powershell,登录系统,网络映射驱动器)