我如何使用自定义模块的输出来放入变量,最好是对象。
这是问题所在。导入自定义模块并运行 cmdlet 后,它始终输出相同的信息,并拒绝存储在变量中或放入管道中。尝试放入管道或变量只会重现原始输出并忽略变量或管道符号。
例子:
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