0

私は 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()

誰かが私を助けてくれることを願っています!!

前もって感謝します!

ラマニ

4

1 に答える 1

2

C# の改行を誤解しているようです。改行は意味がなく、多くの場合、長い行は読みやすくするために別の行に続きます。3行目でpowershellの「このパイプライン」変数$_を誤って使用しました。

$vmElement = vmDoc.Descendants(ns + "entry").Descendants($ns + "content")
$vmId = $vmElement.Descendants().Descendants($nsData + "VirtualMachineID").FirstOrDefault()

編集: methodのドキュメントDescendantsを確認したところ、元の C# コードが機能するかどうかは明らかではありません。そのメソッドは、メソッドIEnumerable<XElement>を公開しない を返しますDescendants()

Powershell に変換する前に、動作する C# コードを取得することに専念することをお勧めします。

これはあなたを助けるかもしれません:Powershell v2で拡張メソッドを使用する簡単な方法はあり
ますか そしてこれ:http://dougfinke.com/blog/index.php/2007/08/07/using-xmllinq-in-powershell/

于 2012-05-15T14:27:10.610 に答える