나는 stackoverflow에 새로운 오전과 나는 정말로 powershell 균열 아니에요. 어쩌면 당신은 내 문제를 도와 줄 수 있습니다. 모니터링을 위해 리눅스 서버에서 "vmstat 1 10"의 ssh 결과를 얻고 싶습니다. 내가 가진 10 가지 가치의 평균 가치를 얻어야합니다. 내 계획은 객체의 전체 값을 얻을 수 있었다 그래서 등 swpd, 무료, 버프, 같은 값의 평균을 얻기 위해배열/객체에서 내 값을 변환하려면 어떻게 변환합니까?
procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 42352 599980 315860 2488096 0 0 2606 794 5 2 3 0 94 2 0
0 0 42352 600044 315860 2488096 0 0 64 84 1107 2107 0 1 99 1 0
0 0 42352 596820 315860 2488096 0 0 280 4 1218 2179 7 1 91 2 0
0 0 42352 589240 315860 2488096 0 0 32 7 1322 2366 1 1 95 3 0
0 0 42352 588620 315860 2488096 0 0 144 37 1161 2181 1 0 96 3 0
0 0 42352 588620 315860 2488096 0 0 0 24 1074 2075 0 0 100 0 0
0 0 42352 588620 315860 2488096 0 0 0 0 1081 2081 0 1 100 0 0
0 0 42352 588628 315860 2488096 0 0 128 32 1133 2091 1 0 96 3 0
0 0 42352 588652 315860 2488100 0 0 0 0 1077 2058 0 0 100 0 0
0 0 42352 588528 315860 2488100 0 0 0 5 1137 2147 0 0 99 0 0
후합니다 결과 "1 10 vmstat를"A 보통은 다음과 같습니다 $tab.swpd | Measure-Object -avg
과 비슷하지만 오류가 발생합니다.
여기 내 개체의 값을 가져 오는 스크립트입니다. (나는 이것이 아주 좋은 아니라는 것을 알고있다 - 그 미안 난 아직 ... 배우는 중이에요.) :
내가 배열 또는 개체에서 원하는처럼 모든 것을 내 값이 너무 후$runs = 10
#Get the Values via plink (putty)
$vmstat = .\plink.exe -ssh [email protected] -batch -pw "PASSWORD-YES-I-KNOW-THIS-IS-BAD" vmstat 1 $runs
$vmstat
##########################
#Get the Values in somthing like a csv
$vmstat = $vmstat.replace(" ", ";")
#replace alle double ";;" with single ";"
while ($vmstat -match ";;"){
$vmstat = $vmstat.replace(";;", ";")
}
#Delete ";" at the beginning (and at the end. Just to be sure. normally there arent ";" 's)
$vmstat = $vmstat.Trim(";")
#Save Columnames
$tabhead = $vmstat[1].split(";")
#Delete first and second row
$vmstat = $vmstat[2..($runs+1)]
##########################
#Split Values and Store it in an two-dimensional array
$values = New-Object system.Array[][] $tabhead.Length, $runs
for ($i=0;$i -lt ($vmstat.Length); $i++){
$tmp = $vmstat[$i].split(";")
for ($j=0;$j -lt ($tmp.Length); $j++){
$values[$j][$i] = $tmp[$j]
}
}
##########################
# Make an Object for Measurement!
$tab = New-Object System.Object
for ($i=0;$i -lt $tabhead.Length; $i++){
$tab | Add-Member -type NoteProperty -name $tabhead[$i] -Value $values[$i]
}
. 내가보고 싶은 값을 선택 할 수 있어요 :
PS C:\> $tab
r : {1, 0, 0, 0...}
b : {0, 0, 0, 0...}
swpd : {42352, 42352, 42352, 42352...}
free : {599980, 600044, 596820, 589240...}
buff : {315860, 315860, 315860, 315860...}
cache : {2488096, 2488096, 2488096, 2488096...}
si : {0, 0, 0, 0...}
so : {0, 0, 0, 0...}
bi : {2606, 64, 280, 32...}
bo : {794, 84, 4, 7...}
in : {5, 1107, 1218, 1322...}
cs : {2, 2107, 2179, 2366...}
us : {3, 0, 7, 1...}
sy : {0, 1, 1, 1...}
id : {94, 99, 91, 95...}
wa : {2, 1, 2, 3...}
st : {0, 0, 0, 0...}
PS C:\> $tab.in
5
1107
1218
1322
1161
1074
1081
1133
1077
1137
을하지만 난 뭔가를해야만 등에하려고하면 $tab.swpd | Measure-Object -Average
나는 다음과 같은 오류 얻을 :
Measure-Object : Das Eingabeobjekt "System.Object[]" ist nicht numerisch.
In Zeile:1 Zeichen:13
+ $tab.swpd | Measure-Object -Average
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidType: (System.Object[]:Object[]) [Measure-Object], PSInvalidOperationException
+ FullyQualifiedErrorId : NonNumericInputObject,Microsoft.PowerShell.Commands.MeasureObjectCommand
나는 심지어 개체를 필요로하지 것이라고 생각을, 나는 또한 $values[0] | Measure-Object -Average
같은 것을 할 수 있어야한다고 생각하지만 같은 오류가 있습니다. 문제는 값이 int 값이 아님을 안다. 그러나 나는 그들을 측정 할 수 있도록 그들을 변환하는 방법을 모른다.
답장을 보내 주셔서 감사하지만 작동하지 않는 것 같습니다. (그리고 전 버전 3에서 Powershell을 사용하고 있습니다.) : System.Object [] "System.Object"[System.Object "]"System.Int32 "매개 변수가 변경되었습니다. Zeile : 1 Zeichen : 1 + [int []] ($ tab.swpd) | 측정 - 개체 - 평균 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ + CategoryInfo : InvalidArgument : (:) [], RuntimeException + FullyQualifiedErrorId : ConvertToFinalInvalidCastException' – frupfrup
업데이트보기 @frupfrup – Matt
작동합니다! 이제'$ tab.XXX | 측정 - 개체 - 평균 '. 효율성에 대한 감사와 감사의 말을 전합니다. 내가 처음에 말했듯이 나는 여전히 파워 쉘 프로가 아니다. 그러나 너를 통해 나는 다시 무언가를 배웠다! – frupfrup