PDA

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


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

viko2323
04-04-2016, 12:37
Добрый день! Помогите со скриптом. Нужно найти файл по имени, например в Program Files, и при его наличии совершить действие с каталогом в котором находиться этот файл.

Kazun
04-04-2016, 12:49
Get-ChildItem C:\Windows\* -Filter cmd.exe -File -Recurse | Foreach {
$_.DirectoryName
}

viko2323
04-04-2016, 14:24
Спасибо
я правильно понимаю, что при таком выражении $a=Get-ChildItem -Path ${env:ProgramFiles(x86)} -Recurse -Filter File.exe | Foreach {$_.DirectoryName} в переменную А будет присвоен путь к папке?

viko2323
04-04-2016, 17:48
подскажите пожалуйста, что не так? Почему не работает?
$v=get-psdrive -psprovider filesystem | ForEach-Object -process {Get-ChildItem -Recurse -Filter v.exe}
$v

Foreigner
04-04-2016, 18:30
viko2323,

$v = get-psdrive -psprovider filesystem | foreach {

get-childitem $_.root v.exe -force -recurse -ea 0

}

$v.directoryname

viko2323
05-04-2016, 09:10
Спасибо за помощь. А что означает в коде
-ea 0 »

Foreigner
05-04-2016, 10:03
-erroraction silentlycontinue


help about_commonparameters

viko2323
05-04-2016, 11:11
Большое спасибо

viko2323
05-04-2016, 13:12
Снова возник вопрос. вроде все работает не не проводит поиск по диску с:\ . В чем проблема?
$disk=get-wmiobject Win32_LogicalDisk | where {$_.drivetype -eq 3}
$v=$disk | foreach {get-childitem $_.deviceid -recurse -Filter v.exe -force} | Foreach {$_.DirectoryName}
$v

Kazun
05-04-2016, 13:16
get-childitem "$($_.deviceid)\"

viko2323
05-04-2016, 13:23
Спасибо. А можно на словах в чем разница. Powershell только начал изучать.

Foreigner
05-04-2016, 14:34
Потому что такой синтаксис, попробуйте эти два варианта:

gci C: windows\notepad.exe
gci C:\ windows\notepad.exe

viko2323
05-04-2016, 16:58
понял спасибо

viko2323
07-04-2016, 14:16
Добрый день. Помогите пожалуйста
$disk=get-wmiobject Win32_LogicalDisk | where {$_.drivetype -eq 3}
$v=$disk | foreach {get-childitem "$($_.deviceid)\" -Exclude ${env:windir} -recurse -Filter v.exe -force -ea 0} | Foreach {$_.DirectoryName}
$v
Foreach ($_ in $v){Remove-Item -Recurse -Force}
не могу провести удаление найденого (находит несколько путей) пишет
Remove-Item : Не удается привязать аргумента к параметру "Path", так как он имеет значение NULL

Kazun
07-04-2016, 14:18
$disk | foreach {get-childitem "$($_.deviceid)\" -Exclude ${env:windir} -recurse -Filter v.exe -force -ea 0 | Remove-Item -Force -Recurse}

viko2323
07-04-2016, 14:24
так понятно, но хотелось бы еще понять на будущее как обрабатывать найденные значения вне конвеера

Kazun
07-04-2016, 14:25
$disk=get-wmiobject Win32_LogicalDisk | where {$_.drivetype -eq 3}
$v=$disk | foreach {get-childitem "$($_.deviceid)\" -Exclude ${env:windir} -recurse -Filter v.exe -force -ea 0}
Foreach ($i in $v){Remove-Item $i.FullName -Recurse -Force}

viko2323
07-04-2016, 14:26
спасибо

все равно та же ошибка
Remove-Item : Не удается привязать аргумента к параметру "Path", так как он имеет значение NULL.

viko2323
07-04-2016, 15:33
помогите пожалуйста

Foreigner
07-04-2016, 15:48
viko2323, Попробуйте вместо -Path использовать -LiteralPath:

....{ Remove-Item -literalpath $i.FullName -Recurse -Force }




© OSzone.net 2001-2012