我是PowerShell的新手,并且努力将以下C#代码转换为Powershell。
var vmDoc = XDocument.Load(vmStream);
var vmElement = vmDoc.Descendants(ns + "entry")
.Descendants(ns + "content");
var vmId = vmElement.Descendants().Descendants(nsData + "VirtualMachineID").FirstOrDefault();
我尝试了下面的代码,但它从未起作用
$vmElement = vmDoc.Descendants(ns + "entry")
$_.Descendants($ns + "content")
$vmId = $vmElement.Descendants().Descendants($nsData + "VirtualMachineID").FirstOrDefault()
希望有人可以帮助我!!
提前致谢!
拉马尼
答案 0 :(得分:2)
看起来你刚刚误解了C#中的换行符。换行意味着什么,并且通常长行继续到另一行以便于阅读。你错误地在第3行使用了powershell“this pipeline”变量$_
。
$vmElement = vmDoc.Descendants(ns + "entry").Descendants($ns + "content")
$vmId = $vmElement.Descendants().Descendants($nsData + "VirtualMachineID").FirstOrDefault()
修改:审核了documentation for the Descendants
method后,不清楚您的原始C#代码是否也能正常运行。该方法返回IEnumerable<XElement>
,不会公开Descendants()
方法。 击>
我建议您在尝试转换为Powershell之前专注于使用C#代码。
这可能会对您有所帮助:Is there an easier way of using extension methods in Powershell v2
这个:http://dougfinke.com/blog/index.php/2007/08/07/using-xmllinq-in-powershell/