【问题标题】:Forming folder/file path using part of the PathName of a windows service - Any better approach?使用 Windows 服务的部分路径名形成文件夹/文件路径 - 有更好的方法吗?
【发布时间】:2016-10-25 17:00:26
【问题描述】:

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

例如,“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 发布管理中的发布。这是必需的,因为服务的 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 

"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

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

【问题讨论】:

    标签: string powershell release-management


    【解决方案1】:

    $RMBuildExePath = 获取 WmiObject win32_service | ?{$_.Name -like "VSO"} |选择 -ExpandProperty 路径名

    $RMBuildExePath -match '^"[A-Z]:\[^\]\[^\]'

    $work = $matches[0] + "_work" -replace '"', ""

    $工作

    【讨论】:

    • 感谢您的回答。我喜欢您对拆分路径的建议。这种方法是将路径缩短到父级的 1 个文件夹。例如,服务的路径名是“C:\Apps\agent\bin\somefolder\agent.exe”。我感兴趣的文件夹路径是“C:\Apps\agent_work”。 Split-Path -Parent 会给我 C:\Apps\agent\bin\somefolder。我必须在 -Parent 上运行它两次才能到达 C:\apps\agent。然后我可以使用 Join-Path 和 _work 到达“C:\Apps\agent_work”
    猜你喜欢
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    相关资源
    最近更新 更多