我正在使用powershell脚本获取PowerShell中某些进程的内存值,我还需要将值除以1024以转换KB / MB。
例如
PS>> $ memory = Get-Process nginx | Select-Object WS |格式范围 - 第1列
PS>> $ memory
62541824
此值以字节为单位。我需要将此值转换为KB / MB。所以我在那之后进行了div操作。
PS>> $ memory = $ memory / 1024
方法调用失败,因为[System.Object []]不包含名为' op_Division'的方法。
在C:\ script \ tomcat-mem.ps1:3 char:13 + $ mem = $ mem /<<<< 1024 + CategoryInfo:InvalidOperation:(op_Division:String)[],RuntimeException + FullyQualifiedErrorId:MethodNotFound
任何人都可以帮我解决此错误。
答案 0 :(得分:0)
因为您要管道format-wide
,所以您返回一个对象而不是一个可以简单地转换为int
的类型。以下更合适:
$memory = Get-Process nginx | Select-Object -ExpandProperty WS
$memory / 1024
证明:
$m = get-process explorer | select -expandproperty ws
$m.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Int32 System.ValueType
$m = get-process explorer | select ws | format-wide -Column 1
$m.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
您可以看到第一个版本已隐式转换为Int32
,因此可以在其上运行除法运算。