使用 windows 服务的 PathName 的一部分形成 folder/file 路径 - 有更好的方法吗?
Forming folder/file path using part of the PathName of a windows service - Any better approach?
我的要求是使用 windows 服务的部分路径名来形成文件夹路径。
例如,"Microsoft Deployment Agent" windows 服务的 PathName 是 "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
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
有没有更好的方法来形成文件路径?可能是注册表项?还是环境变量?
$RMBuildExePath = 获取 WmiObject win32_service | ?{$_.Name -like "VSO"} | select -ExpandProperty PathName
$RMBuildExePath -match '^"[A-Z]:\[^\]\[^\]'
$work = $matches[0] + "_work" -替换 '"', ""
$工作
我的要求是使用 windows 服务的部分路径名来形成文件夹路径。
例如,"Microsoft Deployment Agent" windows 服务的 PathName 是 "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
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
有没有更好的方法来形成文件路径?可能是注册表项?还是环境变量?
$RMBuildExePath = 获取 WmiObject win32_service | ?{$_.Name -like "VSO"} | select -ExpandProperty PathName
$RMBuildExePath -match '^"[A-Z]:\[^\]\[^\]'
$work = $matches[0] + "_work" -替换 '"', ""
$工作