Anton04
04-05-2010, 10:40
Помогите написать скрипт:
необходимо в при запуске ПК (до логина пользователя, т.е. когда обрабатывается GPO ПК) выполнение несложного vbs скрипта который делает следующее:
1. мапит диск \\server\script
2. выполняет определённую команду или запускает файл (exe)
3. отключает диск
единственное что ещё хотелось бы предусмотреть это возможность недоступности сервера по пути и в этом случае просто завершения работы скрипта без создания лог файла с ошибкой.
Я даже более чем уверен что что-то подобное уже реализовывалось, поделитесь кодом.
P.S. Само собой что данный скрипт выполняется в сети домена.
P.P.S. Скрипт должен быть совместим, т.е. выполняться на Windows XP/Vista/7/2008/2008R2.
P.P.P.S. Поиск в Интернете и на форуме дал только код для решения отдельных элементов задачи, а решение задачи в целом не нашёл.
Вот примеры, того чего нашёл:
Подключить сетевой диск из VBScript
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive "X:", "\\server\script"
Отключить сетевой диск из VBScript
Set objNetwork = CreateObject("WScript.Network")
objNetwork.RemoveNetworkDrive "X:"
Или вот ещё:
Данный скрипт подключает расшареную папку (\\server\shared) на диск X:
On Error Resume Next
Dim objNetwork, strDrive, objShell, objUNC
Dim strRemotePath, strDriveLetter, strNewName
strDriveLetter = "X:"
strRemotePath = "\\server\shared"
strNewName = "003 otdel"
mapped = false
Set objNetwork = CreateObject("WScript.Network")
Set oDrives=objNetwork.EnumNetworkDrives
For i = 0 to oDrives.Count - 1 Step 2
If oDrives.Item(i)=strDriveLetter Then mapped = true
Next
'WScript.echo "mapped = " & mapped
If mapped Then objNetwork.RemoveNetworkDrive strDriveLetter
If mapped Then objNetwork.MapNetworkDrive strDriveLetter, strRemotePath
If Not mapped Then objNetwork.MapNetworkDrive strDriveLetter, strRemotePath
Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(strDriveLetter).Self.Name = strNewName
WScript.Quit
Запуск файла
set WshShell = WScript.CreateObject("WScript.Shell") 'Наделяем переменную WshShell силой.
WshShell.Run ":X\run.exe" 'Запускаем файл
необходимо в при запуске ПК (до логина пользователя, т.е. когда обрабатывается GPO ПК) выполнение несложного vbs скрипта который делает следующее:
1. мапит диск \\server\script
2. выполняет определённую команду или запускает файл (exe)
3. отключает диск
единственное что ещё хотелось бы предусмотреть это возможность недоступности сервера по пути и в этом случае просто завершения работы скрипта без создания лог файла с ошибкой.
Я даже более чем уверен что что-то подобное уже реализовывалось, поделитесь кодом.
P.S. Само собой что данный скрипт выполняется в сети домена.
P.P.S. Скрипт должен быть совместим, т.е. выполняться на Windows XP/Vista/7/2008/2008R2.
P.P.P.S. Поиск в Интернете и на форуме дал только код для решения отдельных элементов задачи, а решение задачи в целом не нашёл.
Вот примеры, того чего нашёл:
Подключить сетевой диск из VBScript
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive "X:", "\\server\script"
Отключить сетевой диск из VBScript
Set objNetwork = CreateObject("WScript.Network")
objNetwork.RemoveNetworkDrive "X:"
Или вот ещё:
Данный скрипт подключает расшареную папку (\\server\shared) на диск X:
On Error Resume Next
Dim objNetwork, strDrive, objShell, objUNC
Dim strRemotePath, strDriveLetter, strNewName
strDriveLetter = "X:"
strRemotePath = "\\server\shared"
strNewName = "003 otdel"
mapped = false
Set objNetwork = CreateObject("WScript.Network")
Set oDrives=objNetwork.EnumNetworkDrives
For i = 0 to oDrives.Count - 1 Step 2
If oDrives.Item(i)=strDriveLetter Then mapped = true
Next
'WScript.echo "mapped = " & mapped
If mapped Then objNetwork.RemoveNetworkDrive strDriveLetter
If mapped Then objNetwork.MapNetworkDrive strDriveLetter, strRemotePath
If Not mapped Then objNetwork.MapNetworkDrive strDriveLetter, strRemotePath
Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(strDriveLetter).Self.Name = strNewName
WScript.Quit
Запуск файла
set WshShell = WScript.CreateObject("WScript.Shell") 'Наделяем переменную WshShell силой.
WshShell.Run ":X\run.exe" 'Запускаем файл