powershell-core - PowerShell Core `Select-Xml` 不返回任何内容
问题描述
我有一个想要通过 PowerShell Core 获取值的 XML 文件。
清理示例:
<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>
元素的值,即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 元素的值?
解决方案
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 运行的,则会出现不同的问题。
推荐阅读
- vector - OL5 VectorTileLayer:瓦片的Y坐标
- php - 如何将文件上传到谷歌驱动器中的特定文件夹-谷歌驱动器 API (PHP)
- string - 在 Visual Studio 中禁用字符串突出显示
- laravel - Laravel Eloquent:从 getAttribute 函数内部获取模型 ID?
- class - 类中的构造函数,什么时候创建对象?
- php - 主页未在 codeigniter 中打开
- php - 选择框上的元素未显示在 php 选择框上
- android - android studio NDK 上的 turbo c++ graphics.h 程序
- python - VSCode 和 PyOpenGL 导入错误?
- http - 使用与不使用 http.Client 的区别