我是PowerShell的新手。我花了将近两天的时间尝试寻找一些文件夹。无论我做什么都行不通。我在文件系统中具有以下结构。
My-GitRepo
|-Src
|-MyCSharpProject_A
|-bin
|-MyCSharpProject_A.csproj
|-MyCSharpProject_B
|-bin
|-MyCSharpProject_B.csproj
|-MyCSharpProject_C
|-bin
|-MyCSharpProject_C.csproj
|-Tools
|-MyPowerShellScript.ps1
我目前正在处理此“ MyPowerShellScript.ps1”文件。我想做的是从“ Src”文件夹中获取* .csproj文件,它可以工作Get-ChildItem -Path "..\Src\*\*.csproj"
。但是目标有点复杂。我试图使用管道来
因此,我需要动态创建一个当前在脚本中已进行硬编码的数组。
$folders = (
"..\Src\MyCSharpProject_A\bin",
"..\Src\MyCSharpProject_B\bin",
"..\Src\MyCSharpProject_C\bin",
);
BTW:Get-ChildItem -Path "..\Src\*\bin"
不是我想要的。我正在尝试找到csproj文件旁边的“ bin”文件夹。
请帮助!
好吧,如果我对您的问题正确,那么可以采取以下措施。
$BasePath = 'PathToSearch'
# Set-Location - This is so we get relative paths
Set-location $BasePath
$CsProjects = Get-ChildItem -Path $BasePath -Filter '*.csproj' -File -recurse
$OutPaths = Foreach ($CSP in $CsProjects) {
$Binpath = "$(Split-Path $CSP.FullName)\bin"
if (Test-Path $Binpath) {
Resolve-Path $Binpath -Relative
}
}
Get-ChildItem
参数的-Filter
完成。Split-Path
完成Test-Path
Set-Location
与Resolve-Path
一起使用,并带有-Relative
开关参数