2014-09-04 1 views
1

Я пытаюсь автоматизировать некоторые вещи для пользователей, и один из них - добавить ярлык «Компьютер» и «Документы» на рабочий стол.создать ярлык «Компьютер» и «Документы» с помощью powershell

Я нашел этот код в Интернете и изменил цель "explorer.exe/е, :: {20D04FE0-3AEA-1069-A2D8-08002B30309D}"

$WshShell = New-Object -ComObject WScript.Shell 
$Shortcut = $WshShell.CreateShortcut(C:\users\username\Desktop\Computer.lnk") 
$Shortcut.TargetPath = "explorer.exe \/e,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" 
$Shortcut.Save() 

Но когда я запускаю этот код I получить следующее сообщение об ошибке:

«Исключение вызова„сохранить“с„0“аргумент:„Не удалось сохранить shotcut“

Если есть другой и легкий путь, я хотел бы услышать его :)

Спасибо всем заранее.

+1

Это проще, используя предпочтения групповой политики, как описано [здесь] (http://blogs.technet.com/b/askds/archive/2014/02/17/adding-shortcuts-on-desktop- политик предпочтение с помощью-группа-в-окна-8-и-окна-8-1.aspx). –

+0

Я получаю совершенно другую ошибку при попытке установить TargetPath с этим («TargetPath: параметр неверен»). Попробуйте установить TargetPath = "explorer.exe" и Аргументы = "\/e, :: {20D04FE0-3AEA-1069-A2D8-08002B30309D}". Кроме того, это ярлык в папке текущего пользователя или другом пользователе? –

+0

Hi Mike. Я запускаю скрипт с учетной записью администратора для создания ярлыка на рабочем столе пользователей. Скрипт Мэтта ниже работает как шарм, кроме случаев, когда я запускаю скрипт с учетной записью администратора, я получаю сообщение об ошибке. – Besiktas

ответ

0

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

Сначала я нашел способ создания ярлыков в специальных папках. cleaner.

$WshShell = New-Object -ComObject WScript.Shell 
$Shortcut = $WshShell.CreateShortcut("C:\users\user\Desktop\MacadizamianNizzut.lnk") 
$Shortcut.TargetPath = [environment]::getfolderpath("mycomputer") 
$Shortcut.Save() 

Вы также можете использовать mydocuments вместо mycomputer. Полный список специальных папок, которые вы можете использовать: [enum]::GetNames([System.Environment+SpecialFolder]). Подсказки к JRV для комментария по моей ссылке выше.

Что касается вашей ошибки "Exception calling "Save" with "0" arguments : "Unable to save shortcut". Я тоже получил эту ошибку. На практике это было связано с тем, что значение, прошедшее для createshortcut, не было допустимым путем. Я не говорю, что файл должен существовать, но путь к папке. Я сделал опечатку и получил ошибку. Используя мой пример этой команды провалились бы: Test-Path ""C:\users\user\Desktop"

Некоторые ошибки Профилактика

Что мы можем сделать, это назначить ярлык путь к переменной и проверить путь, основанный на этом.

$ShortcutPath = "C:\users\username\desktop\test.lnk" 
If(Test-Path -Path (Split-Path -Path $ShortcutPath -Parent)){ 
    $WshShell = New-Object -ComObject WScript.Shell 
    $Shortcut = $WshShell.CreateShortcut($ShortcutPath) 
    $Shortcut.TargetPath = [environment]::getfolderpath("mycomputer") 
    $Shortcut.Save() 
} Else { 
    Write-Host "Unable to create shortcut. Check the path $ShortcutPath." 
} 
+0

Это работает отлично. Огромное спасибо. Единственная проблема заключается в том, что я все еще получаю ошибку «Exception calling ...», если я запускаю скрипт с моей учетной записью администратора (вот как я буду запускать скрипт). Однако, если я запускаю скрипт с учетной записью пользователя, он отлично работает. Любые идеи о том, как обойти это? – Besiktas

+0

Что вы используете для 'CreateShortcut (« C: \ users \ user \ Desktop \ MacadizamianNizzut.lnk »)' в вашем скрипте. Я бы хотел, чтобы ваш, если ваш equivelent прошел этот тест: «Test-Path» C: \ users \ user \ Desktop "' – Matt

+0

Я просто попробовал тестовый путь и получил доступ к нему. Очень странно. Но это моя учетная запись администратора. Почему мне будет отказано в доступе? – Besiktas

Смежные вопросы