2014-01-16 67 views
1

在我公司工作,因为我们最近已更改的文件服务器上的旧称为“实施例-FS-001”和典型的驱动器映射是\例如-FS-001 \ staff_directory \ staffname如何使用PowerShell替换部分映射的网络驱动器路径?

新服务器称为companyname.local,典型的驱动器映射将是\ companyname.local \ shares \ staff_directory \ staffname。

我们正在使用Server 2012 R2。

为了帮助IT服务台免受有关“我的网络驱动器无法正常工作”的票据的轰炸,我想创建一个脚本,该脚本可以在用户计算机上运行并更改网络驱动器路径,但只需替换\ example- fs-001 \ to \ companyname.local \ shares \ part。

主驱动器已经更改,这将取代手动设置映射的网络驱动器。

我一直在试图遵循的例子,但并不存在很多。

例1

Set objNetwork = CreateObject("Wscript.Network") 

Set colDrives = objNetwork.EnumNetworkDrives 

For (i = 0 to colDrives.Count-1 Step 2){} 
If (colDrives.Item(i + 1) = "\\EXAMPLE-FS-001") 
    {strDriveLetter = colDrives.Item(i) 
    objNetwork.RemoveNetworkDrive strDriveLetter 
    objNetwork.MapNetworkDrive strDriveLetter, "\\companyname.local\shares"} 
End If 
Next 

例2

On Error Resume Next 
strOldServer = "EXAMPLE-FS-001" 
strNewServer = "companyname.local\shares" 
Set objNetwork = CreateObject("Wscript.Network") 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set colDrives = objNetwork.EnumNetworkDrives 
For i = 0 to colDrives.Count-1 Step 2 
strThisServer = Left(Mid(colDrives.Item(i + 1), 3), InStr(Mid(colDrives.Item(i + 1), 3), "\") - 1) 
If LCase(strThisServer) = LCase(strOldServer) Then 
strDriveLetter = colDrives.Item(i) 
strNewPath = "\\" $strNewServer "\" $Mid(colDrives.Item(i + 1), $Len("\\" & strOldServer  & "\") + 1) 
If objFSO.FolderExists(strNewPath) = True Then 
objNetwork.RemoveNetworkDrive strDriveLetter 
objNetwork.MapNetworkDrive strDriveLetter, strNewPath 
End If 
End If 
Next 

我是新来的PowerShell,但看到它的梦幻般的使用,我很想知道,如果我在轨道上的任这些代码。

感谢,

阿尔坎

回答

2

我相信这将让你的轨道上。在那里保存这个武士,直到你确定这个剧本能为你工作。

$OldServer = "\\EXAMPLE-FS-001\" 
$NewServer = "\\companyname.local\shares\" 

$drives = Get-WmiObject win32_logicaldisk | 
    ? {$_.ProviderName -like "$($OldServer)*" } | 
     % { 
      $Name = (($_.DeviceID) -replace ":", "") 
      $NewRoot = (($_.ProviderName) -replace $OldServer, $NewServer) 
      Get-PSDrive $Name | Remove-PSDrive -Force -whatif 
      New-PSDrive $Name -PSProvider FileSystem -Root $NewRoot -WhatIf 
     } 
相关问题