Войти

Показать полную графическую версию : [решено] поиск по имени


Страниц : 1 [2] 3

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}
а потом у же отфильтрует

Iska
12-04-2016, 12:41
Это как-то помешает конечному результату?

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) с разной глубиной вложений с контролем выполнения и если не скопировалось повторить операцию?

Iska
22-04-2016, 17:06
viko2323:
Темы на форуме организованы по принципу "одна проблема - одна тема", а не "один участник - одна тема".




© OSzone.net 2001-2012