根据值在Excel电子表格中放置“是”或“否”

时间:2012-10-15 20:17:30

标签: excel powershell powershell-v2.0

提前致谢!

以下是代码:我想收集以下变量的值...

 $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

2 个答案:

答案 0 :(得分:0)

为什么if块中有write "Yes"?简单地指定“是”不起作用吗?

writeWrite-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"
        }