PowerShell Core `Select-Xml` ничего не возвращает - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть XML-файл, из которого я хочу получить значения с помощью PowerShell Core.

Пример очистки:

  <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">

  <PropertyGroup>
    <TargetFrameworks></TargetFrameworks>
    <RootNamespace></RootNamespace>
    <AssemblyName></AssemblyName>
    <Company></Company>
    <Authors></Authors>
    <Description></Description>
    <Copyright></Copyright>
    <AssemblyVersion></AssemblyVersion>
    <FileVersion></FileVersion>
    <Product></Product>
  </PropertyGroup>

  <PropertyGroup>
    <Version>1.0.0</Version>
    <RepositoryUrl></RepositoryUrl>
    <GeneratePackageOnBuild></GeneratePackageOnBuild>
  </PropertyGroup>

</Project>

Я хочу получить значение <Version> element, который является 1.0.0.

Я запускаю:

pwsh Select-Xml -Path test.csproj -XPath "//Version"

, который возвращает:

Node    Path                     Pattern
----    ----                     -------
Version D:\Downloads\test.csproj //Version

Когда я пытаюсь получить значение в соответствии с документами Microsoft, с:

pwsh Select-Xml -Path test.csproj -XPath "//Version" | Select-Object -ExpandProperty Node

Я получаю следующую ошибку:

Select-Object : Property "Node" cannot be found.
At line:1 char:56
+ ... h test.csproj -XPath "//Version" | Select-Object -ExpandProperty Node
+                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (:PSObject) [Select-Object], PSArgumentException
+ FullyQualifiedErrorId : ExpandPropertyNotFound,Microsoft.PowerShell.Commands.SelectObjectCommand

Select-Object : Property "Node" cannot be found.
At line:1 char:56
+ ... h test.csproj -XPath "//Version" | Select-Object -ExpandProperty Node
+                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (Node    Path                     Pattern:PSObject) [Select-Object], PSArgumentException
+ FullyQualifiedErrorId : ExpandPropertyNotFound,Microsoft.PowerShell.Commands.SelectObjectCommand

Select-Object : Property "Node" cannot be found.
At line:1 char:56
+ ... h test.csproj -XPath "//Version" | Select-Object -ExpandProperty Node
+                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (----    ----                     -------:PSObject) [Select-Object], PSArgumentException
+ FullyQualifiedErrorId : ExpandPropertyNotFound,Microsoft.PowerShell.Commands.SelectObjectCommand

Select-Object : Property "Node" cannot be found.
At line:1 char:56
+ ... h test.csproj -XPath "//Version" | Select-Object -ExpandProperty Node
+                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (Version D:\Download\u2026st.csproj //Version:PSObject) [Select-Object], PSArgumentException
+ FullyQualifiedErrorId : ExpandPropertyNotFound,Microsoft.PowerShell.Commands.SelectObjectCommand

Select-Object : Property "Node" cannot be found.
At line:1 char:56
+ ... h test.csproj -XPath "//Version" | Select-Object -ExpandProperty Node
+                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (:PSObject) [Select-Object], PSArgumentException
+ FullyQualifiedErrorId : ExpandPropertyNotFound,Microsoft.PowerShell.Commands.SelectObjectCommand

Как получить значение этого элемента XML?

1 Ответ

0 голосов
/ 06 ноября 2019

Pwsh по умолчанию -file вместо -command. Есть также проблема цитирования с символом трубы. Это работает, предполагая, что вы запускаете его из cmd:

pwsh -c "Select-Xml //Version test.csproj | Select -Expand Node"

#text
-----
1.0.0

или

pwsh -c (Select-Xml //Version test.csproj).node

Если это запускается из Unix или других версий powershell, есть другие проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...