1

提前致谢!

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

 $Sheet3.Cells.Item($intRowDisk, 4) = $objItem.Size/1024/1024/1024 - $objItem.FreeSpace/1024/1024/1024  

然后我想比较该值,如果它大于 100 GB,则在 excel 电子表格的列中放置一个值是或否。

 if ( $Sheet3.Cells.Item($intRowDisk, 4) -gt 100 ) {
            $Sheet1.Cells.Item($intRow, 12) = write "Yes"

但是我收到以下错误:错误:运算符'-gt'的错误参数:无法将“System.__ComObject”与“100”进行比较。错误:“无法将“System.Int32”类型的“100”值转换为“System.Int32”类型。错误:__ComObject"。"。IME_InventoryV1.8.ps1 (124): 错误: At Line: 124 char: 49 错误: + if ($Sheet3.Cells.Item($intRowDisk, 4) -gt <<<< 100) { 错误: + CategoryInfo: InvalidOperation : (:) [],RuntimeException 错误:+ FullyQualifiedErrorId:BadOperatorArgument

4

2 回答 2

0

为什么你write "Yes"的 if 块里面有?简单地分配“是”不起作用吗?

writeWrite-Object cmdlet 的别名,它将内容放在管道上以供下一个命令使用。在这种情况下,它可能不是您想要使用的。尝试仅分配字符串"Yes",看看是否可以解决您的问题。

此外,在您的比较中 - 虽然不是特别有用,但 PowerShell 告诉您无法比较 COM 对象和值 100。您需要包含一个调用以实际从 COM 对象中获取值以进行比较,方法是包含表达式末尾的方法调用Value() :

$Sheet3.Cells.Item($intRowDisk, 4).Value()
于 2012-10-15T20:33:12.430 回答
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"
        }
于 2012-10-15T22:40:09.130 回答