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): エラー: 行: 124 文字: 49 エラー: + if ( $Sheet3.Cells.Item($intRowDisk, 4) -gt <<<< 100 ) { エラー: + CategoryInfo : InvalidOperation : (:) []、RuntimeException エラー: + FullyQualifiedErrorId : BadOperatorArgument

4

2 に答える 2

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 に答える
0

write "Yes"if ブロック内にあるのはなぜですか? 単に「はい」を割り当てるだけでは機能しませんか?

write次のコマンドのパイプラインにコンテンツを配置するWrite-Objectコマンドレットのエイリアスです。この場合、おそらく使用したくないものです。文字列を割り当ててみて"Yes"、問題が解決するかどうかを確認してください。

また、比較では - 特に役に立ちませんが、PowerShell は、COM オブジェクトと値 100 を比較できないことを示しています。式の最後にメソッド呼び出しValue()を追加します。

$Sheet3.Cells.Item($intRowDisk, 4).Value()
于 2012-10-15T20:33:12.430 に答える