5

我一直试图让一个 IF-ELSE 子句在我的小 powershell v2 脚本中工作,我认为我的解析有一些问题。这是我目前的代码:

$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

除了关于 的其他答案之外$false,我还遇到了 v3 的语法问题。具体来说

if($dir -eq $false)
{

没用。

if($dir -eq $false){

确实有效。YMMV,但您已被警告。

于 2013-05-02T00:03:18.947 回答
0

它可能有效 If($? -ne 0)

如果给定的条件为假,这是在前面的变量中定义的(这不适用于上述问题)

如果($dir - 包含“假”)

于 2021-05-21T07:17:53.483 回答