【问题标题】:Powershell invoking remote script to get farmload (XenApp 4.5)Powershell 调用远程脚本以获取场负载 (XenApp 4.5)
【发布时间】:2013-03-21 10:03:28
【问题描述】:

qfarm /load我在远程执行脚本时遇到问题。

脚本调用 cmd qfarm /load 的命令并将结果转换为 PSObjects。

function New-qLast()
{
    param ([String] $qName, [String] $qLoad)
    $qLast = New-Object PSObject

    $qLast | Add-Member -MemberType NoteProperty -Name ServerName -Value $qName
    $qLast | Add-Member -MemberType NoteProperty -Name ServerLast -Value $qLoad

    return $qLast
}

Write-Host "Start" 

$b = @()
foreach ($a in $(qfarm /load))
{
    $b += $a.Split(" ") | Where-Object { $_ -ne "" }
}
$b

$table = @()
for ($i = 5; $i -lt $b.Length; $i += 2) #for XA 4.5 $i = 5 $i += 2; for XA 6.5 $i += 5 and $i = 8
{
    $table += New-qLast $b[$i] $b[$i+1]
}
$table

一旦调用 qfarm /load 就没有任何事情发生了。

当我直接在终端服务器上执行脚本时,它工作正常。

我还尝试运行适用于场的前 22 台服务器的 Invoke-Command -ComputerName Server01 {qfarm /load},然后它不会返回任何内容但仍在运行,直到您手动将其关闭。

有人知道为什么会卡住吗?

提前致谢。

【问题讨论】:

  • 我不熟悉qfarm /load它是什么,它有什么作用?
  • 看起来qfarm /load 返回服务器名和负载,对吗? qfarm 是为 CMD 创建的命令,因此它将返回文本而不是对象。所以,$(qfarm /load) 可能不起作用。做$test = (qfarm /load); $test.gettype()。我的猜测是它将是一个字符串数组。
  • 试试$data = cmd /c 'qfarm /load'

标签: powershell remoting citrix invoke-command xenapp


【解决方案1】:

首先感谢 Bob,对我迟到的回复感到抱歉。

很遗憾,您的方法不起作用,但我找到了解决方法。

我找到了这个 VBS 并将其用于我的 PowerShellscript。

看起来像这样:

$server = Import-Csv C:\Server_On.txt | Where-Object { $_.ServerStatus -eq $true }

$load = Get-WmiObject -ComputerName $server.ServerName -Namespace "root\citrix" -Class MetaFrame_Server_LoadLevel | Select-Object Servername, LoadLevel

qfarm /load 的唯一区别是您必须寻址每台服务器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多