根据值在Excel电子表格中放入一个是或否

提前致谢!

这里是代码:我想收集下面的variables的值…

$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“types的”100“值转换为键入”系统“。 错误:__ComObject“。”。 IME_InventoryV1.8.ps1(124):错误:在行:124 char:49错误:+ if($ Sheet3.Cells.Item($ intRowDisk,4)-gt <<<< 100){错误:+ CategoryInfo:InvalidOperation :(:) [],RuntimeException错误:+ FullyQualifiedErrorId:BadOperatorArgument

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

write是Write-Object cmdlet的别名,它将下一个命令的内容放在pipe道上。 这可能不是你想在这种情况下使用。 尝试只是分配string"Yes" ,看看是否解决了你的问题。

另外,在你的比较中,虽然没有特别的帮助,但是PowerShell却告诉你,你不能比较一个COM对象和值100.你需要包含一个调用来实际地从COM对象中获取值作为比较,方法调用expression式末尾的Value()

 $Sheet3.Cells.Item($intRowDisk, 4).Value() 

我想到了。 我不得不添加一个variables,然后将该variables提供给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" }