【发布时间】:2015-07-08 20:38:42
【问题描述】:
已尝试搜索互联网,但大多数结果仅显示当 PowerShell 控制台处于活动状态时人们不小心按了键。
我面临的问题是我将 Hyper-V 对象存储在一个变量中并调用该变量。
以下 sn-p 来自我的脚本。
$ListDisks = Get-VMHardDiskDrive -VMName $VMName -ControllerType SCSI
"The following table will show which disks have been attached to the VM!" | Write-Host
$ListDisks
Pause
因此,当脚本执行时,它会运行并按预期显示所有输出。当我点击脚本的暂停部分时会出现问题。 Get-VMHardDiskDrive 输出直到我点击“按 Enter 继续...”后才会出现
输出:
The following table will show which disks have been attached to the VM!
Press Enter to continue...:
VMName ControllerType ControllerNumber ControllerLocation DiskNumber Path
------ -------------- ---------------- ------------------ ---------- ----
SOME-VM SCSI 0 0 15 Disk 15 1.00 GB Bus 0 Lun 0 Target 0
SOME-VM SCSI 1 0 28 Disk 28 1.00 GB Bus 0 Lun 0 Target 0
SOME-VM SCSI 2 0 30 Disk 30 1.00 GB Bus 0 Lun 0 Target 0
SOME-VM SCSI 3 0 16 Disk 16 1.00 GB Bus 0 Lun 1 Target 0
这不是一个超级大问题,我只是想知道为什么这种行为只发生在暂停时。如果我删除暂停,则不会发生问题。为什么会出现这种情况?
**编辑 - 忘记补充了,我在 Windows Server 2012 R2 中使用了带有 Hyper-V Cmdlet 的 PowerShell ISE。我使用 F5 运行脚本并在 ISE 控制台中手动调用脚本。使用常规 PowerShell 控制台时不会出现问题。
【问题讨论】:
-
我只是尝试重现该问题,但改用了 Get-NetAdapter cmdlet。输出符合预期,因此这似乎特定于您正在运行的 SCSI 命令。
-
我也做了与@RaviThapliyal 相同的操作,但不同的功能和响应按逻辑响应顺序排列。也许尝试做一个
Write-Host $ListDisks看看它是否在暂停前强制它进入控制台。 -
或通过管道将其发送到
Out-GridView之类的东西,恕我直言,这样的东西更棒。
标签: powershell output command-line-interface hyper-v powershell-4.0