powershell - 调用远程 powershell 命令未返回所有结果

标签 powershell invoke

我对 powershell 还很陌生,我正在尝试调用远程 powershell 命令来返回驱动器的大小,但遇到了麻烦。

如果我直接在服务器上运行以下命令,那么我得到的结果是 4。

import-module virtualmachinemanager
$checks = get-vm -Name DC1 | get-scvmcheckpoint
foreach ($disk in $checks){
$disk.virtualdiskdrives.virtualharddisks.size
}

然后我尝试使用以下命令远程运行该命令,但没有得到结果。不过 $checks 变量包含许多其他值。

 $session = New-PSSession -ComputerName VM01 -ConfigurationName     Microsoft.Powershell32 -Credential administrator
    $checks = Invoke-Command -Session $session -ArgumentList VM01 -ScriptBlock {
    import-module virtualmachinemanager
    get-vm -Name DC1 | get-scvmcheckpoint
}

foreach ($disk in $checks){
$disk.virtualdiskdrives.virtualharddisks.size
}

最佳答案

这里最可能的问题(尚未在实际 VMM 服务器上测试代码)是从远程 session 返回的对象被序列化和反序列化。这里有一个引用How objects are sent to and from remote sessions .

为了解决这个问题,我建议在远程计算机上进行所有处理,并且只返回简单的 PS 对象。

$session = New-PSSession -ComputerName VM01 -ConfigurationName     Microsoft.Powershell32 -Credential administrator
$checks = Invoke-Command -Session $session -ArgumentList VM01 -ScriptBlock {
    import-module virtualmachinemanager
    $disks = get-vm -Name DC1 | get-scvmcheckpoint
    foreach ($disk in $disks){
        $disk.virtualdiskdrives.virtualharddisks.size
    }
}

foreach ($disk in $checks){
    write-host "Disk size = $disk"
}

关于powershell - 调用远程 powershell 命令未返回所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36025463/

相关文章:

sql-server - 使用 powershell 部署数据库项目 (.dbproj)

visual-studio - Visual Studio 立即窗口和 PowerShell

mule - ESB MULE 将参数传递给 java 方法

java - 枚举上的基本方法调用

android - invoke 和 init kotlin 之间的区别

c++ - InvokeHelper 正在调用哪个函数

用于在 AD 中查询特定 OU 的计算机名称并导出的 Powershell 脚本

batch-file - 在 UNC 路径上运行 Get-ChildItem 在 Powershell 中有效,但在批处理文件中运行的 Powershell 中无效

powershell - 是否有写入提示缓冲区的命令/程序/Cmdlet?

c# - 调用 EventHandler 泛型,TargetParameterCountException