Move IIS InetPub Folder To Another Drive

Date: October 30, 2008 posted by: derek in: TipsAndTricks

I recently had the opportunity to help a customer move their InetPub folder from their almost full OS drive to their not-very-full data drive.

Read on for my notes.

I located a script that would do the heavy lifting, but we actually had to tweak the heck out of it to make it work. Here's the URL:

Note that you have to change several things to make the script work well. There are two sets of parameters. You have to make allowances for the ftp service, if it's running, as well.

The thing that threw me for a loop was the following line:

Params(0) = "w3svc/1/root/path d:\inetpub\wwwroot"

Note that it says "w3svc/1/root". The "1" in this case is the actual "ID" of the IIS instance that you want to move. In our case, the instance number was like 15293745 or something. The script kept failing when trying to set the Params, because it was trying to access IIS instance "1" … which we did not have.

Also, we had an InetPub_Dev folder, with yet another instance, so I had to create another Params line for that.

All in all, though, it worked well, once we were done tweaking it.

Also, on the XCOPY line:

ret = WSHShell.Run ("xcopy c:\inetpub D:\Inetpub\ /s /e /q /i /h /r /k /o /x" , 1, TRUE)

You might want to remove the "/q" as this copies in Quiet mode, not listing the files as they copy. It would just be nice to see the list of files (the progress) as they were being copied.

Note that there is an entire section that you'll want to un-comment if you want the script to adjust the cisvcor Index Service on the machine.

I think, even though I've given the URL above, that I'll copy and paste the script below…


' —————————————————————————–
' —————————————————————————–
' Modify IIS Metabase Properties for new data location
' Change the params and params2 value depending on which components are
' installed
' set params to 10 if NNTP and FTP are installed and running otherwise
' set params to 9 and comment out msftpsvc line if FTP is not installed
' set params2 to 4 if FTP and NNTP are installed and runnning otherwise
' set params2 to 1 and comment out cisvc, msftpsvc and nntpsvc line if the
' Indexing service, FTP service, and Network News Transport Service are
' not installed
' References to the Indexing service have been commented out, check comments
' on line 75 to change Indexing Service settings

'Stop IIS services before continuing
Set WSHShell = Wscript.CreateObject("Wscript.Shell")
WSHShell.PopUp "Stopping all Internet Services…"
ret = WshShell.Run ("net stop iisadmin /y", 1, TRUE)
If ret = 0 then
 WSHShell.PopUp "IISADMIN service was stopped successfully, continuing"
 WSHShell.PopUp "IISADMIN failed to stop successfully. The error code is " & ret
 Wscript.Quit 1
end if
Dim params(6)
Dim x, ret
Dim params2(2)
Params(0) = "w3svc/1/root/path d:\inetpub\wwwroot"
Params(1) = "w3svc/1/root/scripts/path d:\inetpub\scripts "
Params(2) = "w3svc/1/root/iissamples/path d:\inetpub\iissamples"
Params(3) = "smtpsvc/1/BadMailDirectory d:\inetpub\mailroot\BadMail"
Params(4) = "smtpsvc/1/PickupDirectory d:\inetpub\mailroot\Pickup"
Params(5) = "smtpsvc/1/QueueDirectory d:\inetpub\mailroot\Queue"
Params(6) = "smtpsvc/1/DropDirectory d:\inetpub\mailroot\Drop"
'Params(7) = "nntpsvc/1/NewsPickupDirectory d:\inetpub\nntpfile\pickup"
'Params(8) = "nntpsvc/1/NewsFailedPickupDirectory d:\inetpub\nntpfile\failedpickup"
'Params(9) = "nntpsvc/1/NewsDropDirectory d:\inetpub\nntpfile\drop"
'Params(10) = "msftpsvc/1/root/path d:\inetpub\ftproot"

Set WshSysEnv = WshShell.Environment("PROCESS")
For Each x In Params
ret = WSHShell.Run ("cscript.exe " & "c:\inetpub\adminscripts\adsutil.vbs SET " & x, 1, TRUE)
' Verify Settings were successfully applied
If ret = 0 then
 WSHShell.PopUp "The new metabase settings have been successfully updated. The new Web Data path is d:\inetpub"
 WSHShell.PopUp "The Configuration changes failed. The error code is " & ret
 Wscript.Quit 1
end if
wscript.Sleep 5000
' Move Data to new location (D:\Inetpub) using xcopy.exe (this can be changed
' from xcopy to move so the data is actually moved from current locale)
ret = WSHShell.Run ("xcopy c:\inetpub D:\Inetpub\ /s /e /q /i /h /r /k /o /x" , 1, TRUE)
If ret = 0 then
 WSHShell.PopUp "The data has been successfully moved to D:\Inetpub"
 WSHShell.PopUp "The data move failed. The error code is " & ret
 Wscript.Quit 1
end if
' Remove comments from the next 29 lines to configure cisvc through this script
'' Update Web Catalog to be for D:\Inetpub
''Stop Content Index Service
'Set WSHShell = Wscript.CreateObject("Wscript.Shell")
' WSHShell.PopUp "Stopping Index Service…"
'ret = WshShell.Run ("net stop cisvc", 1, TRUE)
'If ret = 0 then
' chgeCat()
' WSHShell.PopUp "Content Index service failed to stop successfully. The error code is " & ret
' Wscript.Quit 1
'end if
'Function chgeCat()
'Set WshShell = WScript.CreateObject("WScript.Shell")
''Delete Catalogs
'WshShell.RegDelete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ContentIndex\Catalogs\Web\" 

' Delete Web Catalog.
'WshShell.RegDelete "HKLM\SYSTEM\CurrentControlSet\Control\ContentIndex\Catalogs\System\" 

' Delete System Catalog.
''Modify existing Web catalog entry
'WshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\ContentIndex\Catalogs\Web\Location", "D:\Inetpub"
'WshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\ContentIndex\Catalogs\Web\IsIndexingW3Svc", 1, "REG_DWORD"
'end function
Set WSHShell = Wscript.CreateObject("Wscript.Shell")
 WSHShell.PopUp "Attempting to restart stopped Services…"
Params2(0) = "w3svc"
Params2(1) = "smtpsvc"
'Params2(2) = "cisvc"
'Params2(3) = "nntpsvc"
'Params2(4) = "msftpsvc"

For Each x In Params2
 ret = WshShell.Run ("net start " & x, 1, TRUE)
 wscript.Sleep 5000
If ret = 0 then
 WSHShell.PopUp "Services were started successfully, modifications complete"
 WSHShell.PopUp "One or more services fail to start successfully. The error code is " & ret
 Wscript.Quit 1
end if

— EOF —

Originally Published Friday, February 10, 2006 10:04 AM by Michel SAKR



Leave a Reply

Your email address will not be published. Required fields are marked *