Показать полную графическую версию : [решено] поиск по имени
viko2323
04-04-2016, 12:37
Добрый день! Помогите со скриптом. Нужно найти файл по имени, например в Program Files, и при его наличии совершить действие с каталогом в котором находиться этот файл.
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
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
$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
так понятно, но хотелось бы еще понять на будущее как обрабатывать найденные значения вне конвеера
$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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.