5

小さな powershell v2 スクリプト内で IF-ELSE 句を機能させようとしてきましたが、解析に問題があると思います。これが私が現在持っているコードです:

$dir = test-path C:\Perflogs\TestFolder 

IF($dir -eq "False") 
{
New-Item C:\Perflogs\TestFolder -type directory
get-counter -counter $p -Continuous | Export-Counter  C:\PerfLogs\TestFolder\Client_log.csv -Force -FileFormat CSV -Circular -MaxSize $1GBInBytes
}
Else
{
get-counter -counter $p -Continuous | Export-Counter  C:\PerfLogs\TestFolder\Client_log.csv -Force -FileFormat CSV -Circular -MaxSize $1GBInBytes
}

したがって、基本的には、必要なパスが存在するかどうかを確認するためのテストとして $dir 変数を確立する必要があります。そうでない場合は、そのフォルダーを作成してカウンターを実行する必要があります。その場合、フォルダーは作成されませんが、カウンターは実行されます。

$p を別の場所で定義しましたが、get-counters ステートメントは正常に機能します。現在、フォルダーが存在するかどうかに関係なく、新しいアイテムが機能していないというエラーが表示されます。

そのテストを行った後、-eq に間違った演算子を使用していませんか?

4

5 に答える 5

12

あなたが持っている必要があります:

if ($dir -eq $false) 

文字列"False"がブール値と等しくないためです$false

于 2013-05-01T20:05:56.987 に答える
3

これを変更してみてください:

IF($dir -eq "False") 

これに:

IF($dir -eq $false) 
于 2013-05-01T20:06:18.190 に答える
1

x0n はすでに回答済みなので、繰り返しませんが、注意すべき別の「落とし穴」に気付きました。

コードはディレクトリ「TestFolder」の存在をテストしようとしていますが、 test-path コマンドはディレクトリのみのチェックに制限されていません。つまり、実際に「TestFolder」という同じ名前のファイルがある場合でも、true が返されます。

さらに注意するには、「-PathType Container」スイッチを追加して、その名前のファイルがある場合は失敗し、その名前のディレクトリがある場合にのみ通過するようにする必要があります。

$dir = test-path C:\Perflogs\TestFolder -PathType Container

于 2013-05-09T15:56:22.950 に答える
0

に関する他の回答に加えて、$falsev3 で構文の問題がありました。具体的には

if($dir -eq $false)
{

うまくいきませんでした。

if($dir -eq $false){

働きました。YMMV ですが、警告されています。

于 2013-05-02T00:03:18.947 に答える
0

それはうまくいくかもしれません If($? -ne 0)

与えられた条件が false の場合、これは以前の変数で定義されています (これは上記の質問には当てはまりません)

If($dir -contains 'False')

于 2021-05-21T07:17:53.483 に答える