C的PowerShell设备代码#
我是PowerShell的新手,一直在努力将下面的C#代码转换为PowerShellC的PowerShell设备代码#,powershell,Powershell,我是PowerShell的新手,一直在努力将下面的C#代码转换为PowerShell var vmDoc = XDocument.Load(vmStream); var vmElement = vmDoc.Descendants(ns + "entry") .Descendants(ns + "content"); var vmId = vmElement.Descendants().Descendants(nsData + "VirtualMachineID").FirstOr
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()
希望有人能帮助我
提前谢谢
拉曼尼看起来你只是误解了C#中的一个换行符。换行符并不意味着什么,为了便于阅读,通常会将长行延续到另一行。您错误地使用了第3行上的powershell“this pipeline”变量
$\uu
$vmElement = vmDoc.Descendants(ns + "entry").Descendants($ns + "content")
$vmId = $vmElement.Descendants().Descendants($nsData + "VirtualMachineID").FirstOrDefault()
编辑:查看后,不清楚您的原始C#代码是否也能工作。该方法返回一个IEnumerable
,它不会公开子体()
方法
我建议您在尝试转换到Powershell之前,集中精力使用C#代码
var vmDoc = XDocument.Load(vmStream);
var vmElement = vmDoc.Descendants(ns + "entry")
.Descendants(ns + "content");
var vmId = vmElement.Descendants().Descendants(nsData + "VirtualMachineID").FirstOrDefault();
这可能会帮助您:还有这个:感谢您的快速响应!但是我遇到了不同的错误..PS C:\Work\Scripts>$vmElement=$vmDoc.subjects($ns+“entry”)。subjects($ns+“content”)方法调用失败,因为[System.Xml.Linq.XContainer+d__a]不包含名为“subjections”的方法。在第1行char:59+$vmElement=$vmDoc.subjections($ns+“entry”)。subjections如果您能在C#中提供问题的详细信息,我很乐意帮助您调试powershell。感谢James再次快速回复我。我在执行代码时遇到的问题是由powershell中不可用的扩展方法引起的。我想知道如何将(.NET)扩展导入Powershell。我想在这里提供我的代码,但空间限制不允许我这样做。