小编Aka*_*oku的帖子

Powershell 克隆有序哈希表

这个线程跟进。

问题

无法克隆有序哈希表。

是否有捷径可寻?我确实发现了一些对于这样一个“简单”任务来说似乎过于复杂的例子。

移动电源

$a = [ordered]@{}
$b = $a.Clone()
Run Code Online (Sandbox Code Playgroud)

输出

Method invocation failed because [System.Collections.Specialized.OrderedDictionary] does not contain a method named 'Clone'.

powershell hashtable

4
推荐指数
1
解决办法
1032
查看次数

如何通过管道传递多个参数?

我试图通过管道将两个参数传递给函数,但它似乎没有按预期工作,我很难理解为什么。

微量元素

function Test-Pipeline {
  [CmdletBinding ()]
  Param(
    [Parameter(ValueFromPipeline=$true)][String]$Name,
    [Parameter(ValueFromPipeline=$true)][String]$Value
  )
  Write-Host "Name: $Name"
  Write-Host "Value: $Value"
}

"Name", "Value" | Test-Pipeline
Run Code Online (Sandbox Code Playgroud)

输出

名称: 值

价值:价值

我尝试运行Trace-Command命令来查看发生了什么。在第 35 行我们可以看到Value绑定到$Parameter

为什么 PowerShell 将第二个输入绑定到两个参数?如果这是预期的,为什么它只发生在第二个参数而不是第一个参数上?

痕迹

DEBUG: ParameterBinding Information: 0 : BIND NAMED cmd line args [Test-Pipeline]
DEBUG: ParameterBinding Information: 0 : BIND POSITIONAL cmd line args [Test-Pipeline]
DEBUG: ParameterBinding Information: 0 : MANDATORY PARAMETER CHECK on cmdlet [Test-Pipeline]
DEBUG: ParameterBinding Information: 0 :     BIND arg [] …
Run Code Online (Sandbox Code Playgroud)

parameters powershell pipeline

4
推荐指数
1
解决办法
2006
查看次数

具有命名空间的 PowerShell XML 选择节点

我正在尝试从 XML 文件中选择节点,但遇到了似乎由命名空间引起的问题。

下面的代码不返回任何内容。但是如果我从 XML 文件中删除命名空间,我会得到预期的结果。

移动电源

$StandaloneXML = "test.xml"
# Load XML content
$NewStandaloneXML = New-Object -TypeName "System.XML.XMLDocument"
$NewStandaloneXML.Load($StandaloneXML)
# Get namespace
$Namespace = New-Object -TypeName "Xml.XmlNamespaceManager" -ArgumentList $NewStandaloneXML.NameTable
$Namespace.AddNamespace("jboss", $NewStandaloneXML.DocumentElement.NamespaceURI)
$NewStandaloneXML.SelectNodes("jboss:server/interfaces/interface", $Namespace)
Run Code Online (Sandbox Code Playgroud)

XML

<?xml version="1.0" ?>
<server xmlns="urn:jboss:domain:4.2">
  <interfaces>
      <interface name="management">
          <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
      </interface>
      <interface name="public">
          <inet-address value="${jboss.bind.address:127.0.0.1}"/>
      </interface>
  </interfaces>
</server>
Run Code Online (Sandbox Code Playgroud)

预期输出

名称 inet 地址
---- ------------
管理 inet-address
公网地址

xml powershell xpath namespaces xml-namespaces

2
推荐指数
1
解决办法
3224
查看次数