使用windows服务的部分PathName形成文件夹/文件路径-任何更好的方法



我的要求是通过使用windows服务的部分PathName来形成文件夹路径。

例如,"Microsoft Deployment Agent"windows服务的路径名为"C:\Program Files(x86(\Microsoft Visual Studio 14.0\Release Management\bin\DeploymentAgent.exe">

"C:\Program Files(x86(\Microsoft Visual Studio 14.0\Release Management\Client\bin\ReleaseManagementBuild.exe"中还有另一个exe。

所以我需要形成ReleaseManagementBuild.exe的路径。这样我就可以在Microsoft release Management中执行它来触发发布。这是必需的,因为并非所有服务器中的服务的PathName都相同。一个可能在C驱动器中,另一个可能位于另一个驱动器中。

到目前为止,我已经探索了两种方法,使用Join-Path或[IO.Path]::Combine.

"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
$RMBuildExePath = Get-WmiObject win32_service | ?{$_.Name -like "*VSO*"} | select PathName
[string]$RMBuildExePathString = $RMBuildExePath.PathName
[string[]]$split = $RMBuildExePathString.Split("")

$WorkFolder = [IO.Path]::Combine($split[0].Replace("`"","") + "", $split[1], $split[2], '_work')
Test-Path $WorkFolder

$work = Join-Path $split[0].Replace("`"","") $split[1] | Join-Path -ChildPath $split[2] | Join-Path -ChildPath '_work'
Test-Path $work 
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

有没有更好的方法来形成文件路径?可能是注册表项?还是环境变量?

$RMB buildExePath=Get-WmiObject win32_service|?{$_.Name-类似于">VSO"}| select-ExpandProperty PathName

$RMB buildExePath-匹配'^"[A-Z]:\[^\]\[^\\]'

$work=$matches[0]+"_work"-替换",">

$work

最新更新