カスタムモジュールからの出力を使用して、できればオブジェクトを変数に入れるにはどうすればよいですか?
これが問題です。カスタム モジュールをインポートしてコマンドレットを実行すると、常に同じ情報が出力され、変数への格納やパイプラインへの挿入が拒否されます。パイプラインまたは変数に入れようとすると、元の出力が再現され、変数またはパイプライン シンボルが無視されます。
例:
PS C:\> Get-FCoEPorts -HbaIndex 0
Port List
Index NodeWWN PortWWN FCID
----- ------- ------- ----
0 10:00:A0:36:9F:0B:3E:E9 20:00:A0:36:9F:0B:3E:E9 0x4A0680
1 20:A8:00:0D:EC:96:EA:01 00:FC:0E:00:A8:00:80:00 0x36A00120
...
93* 10:00:A0:36:9F:0B:3E:E9 20:3E:A0:36:9F:0B:3E:E9 0x4A0764
94 20:A8:00:0D:EC:96:EA:01 00:FC:0E:00:A8:00:80:00 0x36A03F20
* - Virtual Ports.
これは予想される出力ですが、これを試してみてください:
$a = Get-FCoEPorts -HbaIndex 0
またはこれ:
(Get-FCoEPorts -HbaIndex 0).PortWWN
またはこれ:
$getports = Get-FCoEPorts -HbaIndex 0 | select -expand PortWWN
各コマンドは、上部に示されているのと同じ結果を返し、参照されている変数を使用しようとしても出力が得られません... PowerShell が を除く他のすべてのコマンドを無視しているようGet-IntelFCoEPorts
です。これは私が使用しているコードの問題ですか、それともモジュールの背後にあるコードの問題である可能性がありますか?
このモジュールを使用する私の目標は、PortWWN 番号を配列またはオブジェクトに取得して、それらを削除する必要があるときに参照およびループスルーに使用できるようにすることです。
私は開発者に彼のモジュールの更新版を求めましたが、新しいバージョンでも同じ結果が得られました。もう彼を怒らせる前に、自分のコードが正しいことを確認したい.
更新:運がないファイルに出力しようとしました。ファイルが空です。また、次のようにトランスクリプトを開始および停止しようとしました。
C:\> $ErrorActionPreference="SilentlyContinue"
PS C:\> Stop-Transcript | out-null
PS C:\> $ErrorActionPreference = "Continue"
PS C:\> Start-Transcript -path C:\Users\Administrator\Desktop\output.txt -append
Transcript started, output file is C:\Users\Administrator\Desktop\output.txt
PS C:\> Get-IntelFCoEPorts -HbaIndex 0
Index NodeWWN PortWWN FCID
----- ------- ------- ----
0 10:00:A0:36:9F:0B:3E:E9 20:00:A0:36:9F:0B:3E:E9 0x4A0680
1 20:A8:00:0D:EC:96:EA:01 00:FC:0E:00:A8:00:80:00 0x36A00120
...
93* 10:00:A0:36:9F:0B:3E:E9 20:3E:A0:36:9F:0B:3E:E9 0x4A0764
94 20:A8:00:0D:EC:96:EA:01 00:FC:0E:00:A8:00:80:00 0x36A03F20
* - Virtual Ports.
PS C:\> Stop-Transcript
Transcript stopped, output file is C:\Users\Administrator\Desktop\output.txt
出力は次のようになりました。
PS C:\> Stop-Transcript
Transcript started, output file is C:\Users\Administrator\Desktop\output.txt
PS C:\> Get-IntelFCoEPorts -HbaIndex 0