Показать полную графическую версию : [решено] поиск по имени
viko2323
08-04-2016, 15:15
Спасибо не помогло. Немного переделал поиск и все пошло
возникла новая головная боль
cls
$target = "$env:ProgramFiles\v\v.exe"
$file = "$env:ALLUSERSPROFILE\Start Menu\Programs\V\v.lnk"
$file
$shell = New-Object -comObject Wscript.Shell
$shortcut = $shell.CreateShortcut($file)
$shortcut.TargetPath = $target
$shortcut.Save()
не работает
Исключение при вызове "Save" с "0" аргументами: "Не удается сохранить ярлык "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\V\v.lnk"."
строка:8 знак:15
+ $shortcut.Save <<<< ()
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
хотя на рабочем столе создает без проблем
Foreigner
09-04-2016, 10:31
$file = "$env:ALLUSERSPROFILE\Start Menu\Programs\V\v.lnk"
А вы уверены, что у вас указан правильный результирующий путь? У меня например Start Menu расположено так:
> (gci $env:allusersprofile 'Start Menu' -rec -force -dir -ea 0).fullname
C:\ProgramData\Microsoft\Windows\Start Menu
viko2323
09-04-2016, 12:22
Подскажите пожалуйста как узнать куда ссылается ярлык
А вы уверены, что у вас указан правильный результирующий путь? У меня например Start Menu расположено так: »
Путь возвращает правильный, просто прежде чем создать там ярлык нужно создать все каталоги пути после $env:ALLUSERSPROFILE\Start Menu\Programs
Foreigner
09-04-2016, 13:20
А какой смысл переносить Start Menu? Если и так есть специально для этого предназначенная папка?
> [environment]::GetFolderPath('CommonStartMenu')
C:\ProgramData\Microsoft\Windows\Start Menu
viko2323
09-04-2016, 13:30
я ее никуда не переношу
Foreigner
09-04-2016, 13:47
я ее никуда не переношу »
Тогда не понятно почему у вас папка "Start Menu" расположена по другому пути, отличному от штатного (начиная с семерки)
viko2323
11-04-2016, 10:26
Подскажите пожалуйста как узнать куда ссылается ярлык
Foreigner
11-04-2016, 12:06
viko2323
$shell = new-object -com wscript.shell
$shell.createshortcut('C:\Full\Path\To\file.lnk').targetpath
viko2323
11-04-2016, 18:14
огромное спасибо
viko2323
12-04-2016, 08:43
Добрый день! Подскажите пожалуйста как из этого поиска исключить каталог Windows
$disk = get-wmiobject Win32_LogicalDisk | where {$_.drivetype -eq 3}
$v = $disk | foreach {get-childitem "$($_.deviceid)\" -Include v.exe -recurse -force -ea 0} | Foreach {$_.DirectoryName}
Foreigner
12-04-2016, 09:41
viko2323,
$v = $disk | foreach {get-childitem "$($_.deviceid)\" -Include v.exe -recurse -force -ea 0} |
Where { $_.DirectoryName -notmatch '.:\\Windows\\?' } |
Foreach {$_.DirectoryName}
viko2323
12-04-2016, 11:36
но на сколько я понимаю он же все равно сначала выполнит первый блок
foreach {get-childitem "$($_.deviceid)\" -Include v.exe -recurse -force -ea 0}
а потом у же отфильтрует
Это как-то помешает конечному результату?
Foreigner
12-04-2016, 13:47
Напрямую в корне диска не получится откинуть ненужную директорию, поэтому надо менять код:
$disks = get-wmiobject win32_logicaldisk | where { $_.drivetype -eq 3 } | foreach { $_.deviceid + '\*' }
$v = foreach ($disk in $disks)
{
get-item $disk -exclude Windows |
foreach { (get-childitem $_ v.exe -recurse -force).directoryname }
}
viko2323
12-04-2016, 15:23
Iska, это увеличивает время выполнения
Foreigner, спасибо.
viko2323
12-04-2016, 15:46
viko2323, кроме того что нужно возвращает еще мусор
C:\Program Files (x86)\V
C:\
C:\
C:\
C:\
C:\
C:\
C:\
D:\
D:\
D:\
D:\
D:\
D:\
D:\
Foreigner
12-04-2016, 17:43
viko2323, У меня возвращает только ту папку, где искомый файл. Так что не знаю. Разве что у меня отличается, то добавьте -ea 0, в примере забыл.
...(get-childitem $_ v.exe -recurse -force -ea 0)...
viko2323
14-04-2016, 10:01
Добрый день. Вопрос немного не в тему. При запуске cmd файла с кодом
powershell.exe " \\domen.loc\dfs\domenInstall\v.ps1" на компьютерах с WinXP powershell запускается 2 раза. С чем это связано?
viko2323
22-04-2016, 16:50
Добрый день. Есть один интересный вопрос. Есть ли возможность в powershell проводить копирование директорий с файлами (copy-item) с разной глубиной вложений с контролем выполнения и если не скопировалось повторить операцию?
viko2323:
Темы на форуме организованы по принципу "одна проблема - одна тема", а не "один участник - одна тема".
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.