提前致谢!
以下是代码:我想收集以下变量的值...
$Sheet3.Cells.Item($intRowDisk, 4) = $objItem.Size/1024/1024/1024 - $objItem.FreeSpace/1024/1024/1024
然后我要比较该值,如果它大于100 GB,则在Excel电子表格的列中放置yes或no值。
if ( $Sheet3.Cells.Item($intRowDisk, 4) -gt 100 ) {
$Sheet1.Cells.Item($intRow, 12) = write "Yes"
但我收到错误:错误:运算符'-gt'的错误参数:无法将“System .__ ComObject”与“100”进行比较。错误:“无法将”System.Int32“类型的”100“值转换为”System“。 错误:__ ComObject“。”。 IME_InventoryV1.8.ps1(124):错误:在行:124 char:49 错误:+ if($ Sheet3.Cells.Item($ intRowDisk,4)-gt<<<< 100){ 错误:+ CategoryInfo:InvalidOperation:(:) [],RuntimeException 错误:+ FullyQualifiedErrorId:BadOperatorArgument
答案 0 :(得分:0)
为什么if块中有write "Yes"
?简单地指定“是”不起作用吗?
write
是Write-Object cmdlet的别名,它将内容放在下一个命令的管道上。在这种情况下,它可能不是您想要使用的。尝试分配字符串"Yes"
,看看是否能解决您的问题。
另外,在您的比较中 - 虽然不是特别有用,但PowerShell告诉您无法比较COM对象和值100.您需要包含一个调用以实际从COM对象中获取值以进行比较通过在表达式的末尾包含方法调用 Value():
$Sheet3.Cells.Item($intRowDisk, 4).Value()
答案 1 :(得分:0)
我明白了。我必须添加一个变量,然后将变量提供给if语句。它现在就像一个魅力。
$Sheet3.Cells.Item($intRowDisk, 4) = $objItem.Size/1024/1024/1024 - $objItem.FreeSpace/1024/1024/1024
$valueforif = $objItem.Size/1024/1024/1024 - $objItem.FreeSpace/1024/1024/1024
if ( $valueforif -gt 100 )
{
$Sheet1.Cells.Item($intRow, 12) = "Yes"
}