Я пытаюсь написать PowerShell, чтобы пройти через папку и выполнить различные операции в зависимости от имени файла. Проблема, с которой я столкнулась, - это когда я использую Case Switch $ _, содержит только базовое имя (см. Ниже). Есть ли способ доступа к его родительскому элементу? Мне нужно получить полный путь к файлу. Я где-то видел, что вы можете $ _. Parent.FullPath, но это кажется неправильным.Ссылка на родительский элемент Piped Element
Get-ChildItem -Path "C:\Folder\" -Filter "*.xls" | ForEach-Object {
switch -Wildcard ($_.BaseName){
"*test1*" {
Write-Host "Test1"
Write-Host $_.Parent.FullName
}
"*test2*" {
Write-Host "Test2"
Write-Host $_.Parent.FullName
}
"*tets3*" {
Write-Host "Test3"
Write-Host $_.Parent.FullName
}
}
}
Я знаю, что если я изменил от Swtich случая к IF заявления, которые я бы иметь доступ к FullName.
Вы используете basename, поэтому внутренний '$ _' именно это. Сохраните внешнюю '$ _' в другой переменной, если вы хотите использовать ее во внутреннем блоке. –
Возможный дубликат [PowerShell XML: Switch vs if] (http://stackoverflow.com/questions/29081667/powershell-xml-switch-vs-if) –
Вы можете включить Fullname, а затем использовать Split-Path для получения родитель. – mjolinor