2017-10-06 3 views
1

몇 가지 폴더의 내용을 삭제하려고합니다. 내가 무엇을 가지고 :Powershell Select-Object 값 배열을 얻는 방법

@{ Join-Path $Config.InstallPath $_ =C:\Program Files\App\www\app1} 

오류 : Get-ChildItem 때문에 아래와 같이 객체를 수신,

$Config.SubPaths | Select-Object { Join-Path $Config.InstallPath $_ } | Get-ChildItem 

그러나이 작동하지 않습니다 여기

$Config = @{ 
    InstallPath = 'C:\Program Files\App' 
    SubPaths = @('www\app1', 'www\app2', 'www\app3') 
} 

과 내용을 얻을 수있는 코드 :

Get-ChildItem : Cannot find drive. A drive with the name '@{ Join-Path $Config.InstallPath $_ =C' does not exist. 
At line:1 char:85 
+ ... elect-Object { Join-Path $Config.InstallPath $_ } | Get-ChildItem 
+                ~~~~~~~~~~~~~ 
    + CategoryInfo   : ObjectNotFound: (@{ Join-Path $C...stallPath $_ =D:String) [Get-ChildItem], DriveNotFoun 
    dException 
    + FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand 

Select-Object의 결과를 간단한 문자열 배열로 변환하려면 어떻게해야합니까? 아니면 코드를 향상시키는 다른 방법이 있습니까?

+0

'$ Config.SubPaths을 만들고 있었다

$Config.SubPaths | Select-Object @{Name="Path";Expression={Join-Path $Config.InstallPath $_}} | Get-ChildItem 

Get-ChildItem는 새 개체의 경로 속성에 바인딩해야하지만 제목에 질문에 대답하는 당신이 이것을 할 수 있었다 ForEach-Object {Join-Path $ Config.InstallPath $ _} | Get-ChildIt'' – Matt

답변

1

리터럴 속성이 Join-Path $Config.InstallPath $_ 인 새 개체를 만들었 기 때문에 결과가 나타납니다. 대신 ...

단일 하위 경로의 속성을 선택하지 않고 각 SubPath에서 문자열을 생성하려고하지는 않습니다. 컬렉션을 반복하는 대신 Foreach-object을 사용하면 원하는 결과를 얻을 수 있습니다.

계산 된 속성을 사용하여 사용자 지정 개체와 속성을 만들 수 있지만 이것은 사용자가 가고있는 방향이 아니라고 생각합니다. |

+0

고마워, 그게 내가 원하는거야. – Zergatul