Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Скрипт vbs для создания ярлыка на рабочем столе (http://forum.oszone.net/showthread.php?t=274197)

angel_lyucifer 17-12-2013 23:20 2274061

Скрипт vbs для создания ярлыка на рабочем столе
 
Всем привет!
Я нашёл у вас на форуме нужный мне скрипт для создания ярлыков.
Но он у меня не работает и выдаёт ошибку, я не просто не понимаю что тут не так? Уважаемые знатоки, посмотрите его и если можете исправте пожалуйста?
PHP код:

@set @x=/*
@cscript/nologo /e:jscript "%~f0" "%~dp0file.exe" "%~dp0"
@exit */
sh=WScript.CreateObject("WScript.Shell")
lk=sh.CreateShortcut(sh.SpecialFolders("Desktop")+"\\file.lnk")
lk.TargetPath=WScript.Arguments(0)
lk.WorkingDirectory WScript.Arguments(1)
lk.Save() 


Iska 18-12-2013 00:41 2274103

angel_lyucifer, потому что это пакетный файл — гибрид из пакетного файла, вызова JScript-интерпретатора и VBScript-кода.

Сохраняете его как «Name.cmd» и вызываете, например:
Код:

E:\Песочница\0336\0005.cmd
В результате получаете на Рабочем столе ярлык «file.lnk», указывающий на «file.exe», находящийся рядом с пакетным файлом — т.е.: «E:\Песочница\0336\file.exe».

Одним словом, крайне неудачный выбор.

angel_lyucifer 18-12-2013 02:01 2274130

Цитата:

Цитата Iska
Одним словом, крайне неудачный выбор. »

Проблема такая, у меня есть файл Vlp.exe у него может быть любая директория, но мне нужно создать ярлык скриптом, этот скрипт будет лежать рядом с файлом...

angel_lyucifer 18-12-2013 02:20 2274138

Цитата:

Цитата angel_lyucifer
Iska »

Всё понял, спасибо...

Iska 18-12-2013 03:19 2274159

Цитата:

Цитата angel_lyucifer
у меня есть файл Vlp.exe у него может быть любая директория, но мне нужно создать ярлык скриптом, этот скрипт будет лежать рядом с файлом... »

Так:
читать дальше »
Код:

Option Explicit

Dim strFileName

Dim objFSO
Dim strPath2File
Dim objFile


strFileName = "Vlp.exe"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

strPath2File = objFSO.BuildPath(objFSO.GetParentFolderName(WScript.ScriptFullName), strFileName)

If objFSO.FileExists(strPath2File) Then
        Set objFile = objFSO.GetFile(strPath2File)
       
        With WScript.CreateObject("WScript.Shell")
                With .CreateShortcut(objFSO.BuildPath(.SpecialFolders.Item("Desktop"), objFSO.GetBaseName(strFileName) & ".lnk"))
                        .TargetPath      = objFile.Path
                        .WorkingDirectory = objFile.ParentFolder.Path
                       
                        .Save
                End With
        End With
       
        Set objFile = Nothing
Else
        WScript.Echo "File [" & strPath2File & "] not found near this script."
        WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0


angel_lyucifer 18-12-2013 21:53 2274600

Цитата:

Цитата Iska
Iska »

Скрипт, очень хорошей!
А как добавить описание для этого ярлыка?

Iska 19-12-2013 00:44 2274713

Код:

        With WScript.CreateObject("WScript.Shell")
                With .CreateShortcut(objFSO.BuildPath(.SpecialFolders.Item("Desktop"), objFSO.GetBaseName(strFileName) & ".lnk"))
                        .TargetPath      = objFile.Path
                        .WorkingDirectory = objFile.ParentFolder.Path
                        .Description      = "Это мой ярлык"
                       
                        .Save
                End With
        End With


angel_lyucifer 19-12-2013 05:21 2274753

Большое спасибо, Iska! =)

deminand 16-01-2015 11:04 2456896

а как выполнить его на удаленном компьютере для определенного пользователя. ПК в домене.

Iska 16-01-2015 13:05 2456984

Цитата:

Цитата deminand
а как выполнить его на удаленном компьютере для определенного пользователя. ПК в домене. »

В составе LOGON-скрипта, например.

deminand 16-01-2015 13:37 2457009

а без участия политик ?.

Iska 16-01-2015 13:55 2457014

«Для определённого пользователя» — никак. Можно только «от имени указанного пользователя». То есть, нужно знать его пароль. Чего в нормальном окружении быть не должно.

P.S. Вы уверены, что ярлык нужен отдельным указанным пользователям, а не всем?

deminand 16-01-2015 14:54 2457037

опреденно вы правы, процесс чтоб попасть в свой профиль должен быть от имени пользователя, однако:
1) скрипт нашел нужный ПЭВМ
2) скрипт помнит нужного пользователя пользователя
3) скрипт создает нужный ярлык - путь на запуск того что надо.
4) скрипт создает права - безопасность на выполнение файла, добавив что вася пупкин может запускать этот файл
3) скрипт засовывает на нужном компе в профиль пользователю нужный файл.

пункт 1 и 3 можно поменять местами.

при этом алгоритме "запуск от имени" для создания ярлыка непотребуется, достаточно пермишны установить мог админ через скрипт.

упрощено:
создал сам себе ярлык
запихнул в профиль пользователя на нужном компе
там выставил на файл .lnk пермишионалы

Iska 16-01-2015 17:46 2457106

Цитата:

Цитата deminand
создал сам себе ярлык
запихнул в профиль пользователя на нужном компе »

Не делайте так.

Цитата:

Цитата deminand
скрипт засовывает на нужном компе в профиль пользователю нужный файл. »

И как именно Вы определите, где именно у конкретно взятого пользователя на конкретной машине расположен Рабочий стол? Впрочем, достаточно первого.

BOBAT 16-01-2015 19:37 2457160

Цитата Iska:
И как именно Вы определите, где именно у конкретно взятого пользователя на конкретной машине расположен Рабочий стол? »
%USERPROFILE%\Desktop\

Iska 17-01-2015 01:39 2457318

BOBAT, откуда Вы возьмёте «%USERPROFILE%» пользователя «X» для машины «Y» при исполнении скрипта под пользователем, отличным от «X», на машине «Z»? Далее, откуда такая уверенность, что папка Рабочего стола именуется исключительно «Desktop»? «Это не есть факт, месье Дюк» (с).

venom05 26-01-2016 12:36 2599239

Есть вопрос по созданию ярлыка запуская скрипт из гиены,кто подскажет?

Iska 26-01-2016 12:58 2599257

Цитата:

Цитата venom05
Есть вопрос по созданию ярлыка запуская скрипт из гиены,кто подскажет? »

Есть вопрос по толкованию понятия «гиена», кто подскажет?

venom05 26-01-2016 13:26 2599272

Гиена утилита с помощью которой я админю компы в домене,типа DameWare NT Utilities

с помощью гиены я запускаю скрипт на определенном компьютере,проблема заключается в том-не могу никак додумать создание ярлыка на компе где запустил скрипт,вот пример
Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

Set Argum = WScript.Arguments
strComputer = Argum(0)

Dim oShell
Dim oShortCut

set oShell = WScript.CreateObject ("WScript.Shell")
DesktopPath = oShell.SpecialFolders("AllUsersDesktop")

Set oShortCut = oShell.CreateShortcut(DeskTopPath & "\\" & strComputer & "\Proga.lnk")
oShortCut.TargetPath = "\\" & strComputer & "C:\Proga\Proga.exe"
oShortCut.Save

в конце выдает ошибку: "C:\Users\Public\Desktop\имя компа\Ярлык.lnk"

Iska 26-01-2016 13:45 2599284

Цитата:

Цитата venom05
в конце выдает ошибку: "C:\Users\Public\Desktop\имя компа\Ярлык.lnk" »

Точное сообщение об ошибке покажите (используйте «Ctrl-C» или «Alt-PrintScreen»).

venom05 26-01-2016 14:07 2599291

Путь и название скрипта затер

http://s018.radikal.ru/i521/1601/db/ad7dcf461478.jpg

То что строка 48 не обращайте внимание,там много закомментировано просто.
48 строка это <oShortCut.Save>

QR-это имя удаленного компа

Iska 26-01-2016 14:50 2599310

Путь «c:\Users\Public\Desktop\QR» существует?

venom05 26-01-2016 15:16 2599320

Смотрите скрипт я запускаю на удалённом компе с именем QR
А ошибка выскакивает как будто в папке "Все пользователи"\Рабочий стол\QR
Сам компьютер QR по сети доступен естественно.
Сам скрипт отрабатываю на ОС WindowsXp что говорит о том что на удаленной машине он не отрабатывается, а отрабатывается на моей ОС Windows 7,так как путь типа "c:\Users\Public\" начинается с ОС Windows 7

Iska 26-01-2016 15:40 2599333

Цитата:

Цитата venom05
А ошибка выскакивает как будто в папке "Все пользователи"\Рабочий стол\QR »

А почему удивляетесь? У Вас именно так и написано:
Цитата:

Цитата venom05
Код:

Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

Set Argum = WScript.Arguments
strComputer = Argum(0)

Dim oShell
Dim oShortCut

set oShell = WScript.CreateObject ("WScript.Shell")
DesktopPath = oShell.SpecialFolders("AllUsersDesktop")

Set oShortCut = oShell.CreateShortcut(DeskTopPath & "\\" & strComputer & "\Proga.lnk")
oShortCut.TargetPath = "\\" & strComputer & "C:\Proga\Proga.exe"
oShortCut.Save

»

Дальнейший кусок:
Код:

oShortCut.TargetPath = "\\" & strComputer & "C:\Proga\Proga.exe"
для меня столь же загадочен.

Цитата:

Цитата venom05
Сам скрипт отрабатываю на ОС WindowsXp что говорит о том что на удаленной машине он не отрабатывается, а отрабатывается на моей ОС Windows 7,так как путь типа "c:\Users\Public\" начинается с ОС Windows 7 »

Ну, эти вопросы следует адресовать к Вашей:
Цитата:

Цитата venom05
Гиена утилита с помощью которой я админю компы в домене,типа DameWare NT Utilities »

ибо я с сим не работал.

venom05 26-01-2016 16:10 2599351

Так вот в этом то и вопрос,что мне нужно дописать чтобы эта команда отрабатывалась на удаленном компе

Set oShortCut = oShell.CreateShortcut(DeskTopPath & "\\" & strComputer & "\Proga.lnk")
oShortCut.TargetPath = "\\" & strComputer & "C:\Proga\Proga.exe"
oShortCut.Save

Как например вот копирование файлов

Set objFSO = CreateObject("Scripting.FileSystemObject")

path = FPath&"\\server\enterprise\Proga\*.*"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.CreateFolder("\\" & strComputer & "\C$\Proga")

path2 = "\\" & strComputer & "\C$\Proga\"
objFSO.CopyFile path, path2, True

Копировании файлов отрабатывается на удалённом компе

Iska 26-01-2016 19:51 2599421

Цитата:

Цитата venom05
Так вот в этом то и вопрос,что мне нужно дописать чтобы эта команда отрабатывалась на удаленном компе »

Ничего не надо дописывать. Это надо реализовывать средствами удалённого управления, будь то групповые политики, telnet, Remote Console, RDP и прочее, хоть «wmic.exe Process call …». Вы же сами пишете, что:
Цитата:

Цитата venom05
Гиена утилита с помощью которой я админю компы в домене,типа DameWare NT Utilities »

Сам же скрипт должен работать локально для той или иной машины. Понимаете?

Цитата:

Цитата venom05
Копировании файлов отрабатывается на удалённом компе »

В показанном примере — копирование отрабатывает на локальной машине.

venom05 27-01-2016 09:01 2599527

Тоесть создать ярлык на удаленном компе без указания в скрипте его конкретного имени(ip адреса) невозможно?

Iska 27-01-2016 09:12 2599531

venom05, Вы никак не поймёте.

Вот, смотрите. Мы создали некий скрипт, который создаёт ярлык на общем рабочем столе на некое приложение/документ. Проверили — скрипт работает корректно. На этом со скриптом мы закончили. Совсем.

Теперь нам надо, чтобы этот скрипт отработал на машинах X, Y и Z. Для этого мы совсем не касаемся содержимого скрипта, а используем средства удалённого управления, посредством которых мы можем исполнить данный скрипт на машинах X, Y и Z:
Цитата:

Цитата Iska
групповые политики, telnet, Remote Console, RDP и прочее, хоть «wmic.exe Process call …». »

То есть, никакие имена/IP-адреса в самом данном скрипте не указываются и не используются.

venom05 28-01-2016 09:05 2599932

средства удалённого управления мы используем для запуска всего лишь этого скрипта на компе,а мой вопрос в том и был как сделать чтобы он заработал на удаленной машине.Эх ладно может кто еще отпишется

Iska 28-01-2016 09:32 2599939

Цитата:

Цитата venom05
средства удалённого управления мы используем для запуска всего лишь этого скрипта на компе, »

На удалённой машине.

Цитата:

Цитата venom05
а мой вопрос в том и был как сделать чтобы он заработал на удаленной машине. »

Так Вы же пишете, что он у Вас работает на локальной машине, а не удалённой. Но не пишете как конкретно Вы пытаетесь организовать его исполнение на удалённой машине посредством Hyena.

venom05 29-01-2016 09:29 2600319

Цитата:

Так Вы же пишете, что он у Вас работает на локальной машине, а не удалённой. Но не пишете как конкретно Вы пытаетесь организовать его исполнение на удалённой машине посредством Hyena
Не, кусок кода с копированием файлов который я привел-он работает на удаленной машине посредством Hyena.А как дописать тот скрипт чтобы на удалённой машине еще создавался ярлык.Данный кусок кода на удаленной машине не отрабатывается,а отрабатывается на локальной.А мне нужно чтобы ярлык создавался на удалённой.
Set oShortCut = oShell.CreateShortcut(DeskTopPath & "\\" & strComputer & "\Proga.lnk")
oShortCut.TargetPath = "\\" & strComputer & "C:\Proga\Proga.exe"
oShortCut.Save

Crag Hack 27-11-2017 14:26 2780483

В AD есть группы group1 и group2.

Задача: для пользователей группы group1 создать ярлык на рабочем столе shortcut1, для пользователей группы group2 создать ярлык на рабочем столе shortcut2
Пока тривиально, да :)
Ярлык shortcut1 и shortcut2 указывают на сетевые шары \\192.168.1.1\share1 и \\192.168.1.1\share2, доступ к которой осуществляется по логину/паролю

Создал 2 политики (shortcut_for_group1 и shortcut_for_group2)
Конфигурация пользователя -> Конфигурация Windows -> Сценарии -> Вход в систему -> \\192.168.1.100\shareforall\docs_group1.vbs
Конфигурация пользователя -> Конфигурация Windows -> Сценарии -> Вход в систему -> \\192.168.1.100\shareforall\docs_group2.vbs

Содержимое файлов
Код:

Set Shell = CreateObject("WScript.Shell")
DesktopPath = Shell.SpecialFolders("Desktop")
Set link = Shell.CreateShortcut(DesktopPath & "\shortcut1.lnk")
link.Description = "shortcut_for_group1"
link.IconLocation = "%SystemRoot%\system32\SHELL32.dll,9"
link.TargetPath = "\\192.168.1.1\share1"
link.WindowStyle = 1
link.Save

и
Код:

Set Shell = CreateObject("WScript.Shell")
DesktopPath = Shell.SpecialFolders("Desktop")
Set link = Shell.CreateShortcut(DesktopPath & "\shortcut2.lnk")
link.Description = "shortcut_for_group2"
link.IconLocation = "%SystemRoot%\system32\SHELL32.dll,9"
link.TargetPath = "\\192.168.1.1\share2"
link.WindowStyle = 1
link.Save

Прицепил групповую политику к нужному подразделения, в фильтрах безопасности указал group1 и group2 соответственно.
Результат: ярлык на рабочем столе пользователей, входящих в группу group1 или group2 НЕ создается.
Если в сеансе пользователя сделать Пуск-Выполнить-\\192.168.1.100\shareforall\docs_group1.vbs, то ярлык создается.

Вопрос: в чем ошибка?


Время: 05:27.

Время: 05:27.
© OSzone.net 2001-