diff --git a/xCAT-server/share/xcat/netboot/windows/xCAT.psm1 b/xCAT-server/share/xcat/netboot/windows/xCAT.psm1
index 0c26330e8..c4d517595 100644
--- a/xCAT-server/share/xcat/netboot/windows/xCAT.psm1
+++ b/xCAT-server/share/xcat/netboot/windows/xCAT.psm1
@@ -63,19 +63,48 @@ Function Connect-xCAT {
$script:xcatreader = New-Object System.IO.StreamReader($script:securexCATStream)
}
-Function Get-Power {
+Function Get-NodePower {
Param(
$nodeRange
)
- Connect-xCAT
- $data = "`n`trpower`n`tstat`n`t$nodeRange`n`n"
- $script:xcatwriter.WriteLine($data)
- $script:xcatwriter.Flush()
- $response=""
- $lastline=""
- while (! $lastline.Contains("") -and $script:xcatreader) {
- $lastline = $script:xcatreader.ReadLine()
- $response = $response + $lastline
- }
- write-host $response
+ $xcatrequest=@{'command'='rpower';'noderange'=$nodeRange;'args'=@('stat')}
+ Send-xCATCommand($xcatrequest)
}
+Function Get-NodeVitals {
+ Param(
+ $nodeRange,
+ $vitalTypes="all"
+ )
+ $xcatrequest=@{'command'='rvitals';'noderange'=$nodeRange;'args'=@($vitalTypes)}
+ Send-xCATCommand($xcatrequest)
+}
+Function Send-xCATCommand {
+ Param(
+ $xcatRequest
+ )
+ Connect-xCAT
+ $requestxml = "`n`t"+$xcatRequest.command+"`n"
+ if ($xcatRequest.noderange) {
+ $requestxml = $requestxml + "`t"+$xcatRequest.noderange+"`n"
+ }
+ foreach ($arg in $xcatRequest.args) {
+ $requestxml = $requestxml + "`t"+$arg+"`n"
+ }
+ $requestxml = $requestxml + "`n"
+ $script:xcatwriter.WriteLine($requestxml)
+ $script:xcatwriter.Flush()
+ $serverdone=0
+ while (! $serverdone -and $script:xcatreader) {
+ $responsexml=""
+ $lastline=""
+ while ($lastline -ne $null -and ! $lastline.Contains("") -and $script:xcatreader) {
+ $lastline = $script:xcatreader.ReadLine()
+ $responsexml = $responsexml + $lastline
+ }
+ [xml]$response = $responsexml
+ $response.xcatresponse.node.name
+ $response.xcatresponse.node.data
+ if ($response.xcatresponse.serverdone -ne $null) { $serverdone=1 }
+ }
+}
+