2014-01-16 5 views
1

В компании я работаю недавно мы изменили файловые сервера старый, называются «Пример-FS-001» и типичная карта диска будет \ пример фс-001 \ staff_directory \ staffnameКак заменить часть подключенного сетевого диска с помощью PowerShell?

новый сервер называемой companyname.local и типичной картой диска будет \ companyname.local \ shares \ staff_directory \ staffname.

Мы используем Server 2012 R2.

Чтобы помочь ИТ-службе в обстреле с билетами о том, что «Мой сетевой диск не работает», я хочу создать сценарий, который будет запускаться на компьютере пользователя и изменить путь к сетевым дискам, но просто заменив \ 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

Я считаю, что это поможет вам на пути. Сохраните -whatif там, пока вы не уверены, что скрипт будет работать на вас.

$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 
     }