我一直试图在我的小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?
答案 0 :(得分:12)
你应该:
if ($dir -eq $false)
因为字符串"False"
不等于布尔值$false
。
答案 1 :(得分:3)
尝试更改此内容:
IF($dir -eq "False")
到此:
IF($dir -eq $false)
答案 2 :(得分:1)
x0n已经回答了,所以我不会重复,但我注意到你应该注意的另一个“问题”。
您的代码正在尝试测试目录“TestFolder”的存在,但是test-path命令不仅限于检查目录。意思是,如果你碰巧有一个同名的文件“TestFolder”,它仍然会返回true。
为了更加小心,您应该添加“-PathType Container”开关,以便在存在该名称的文件时它将失败,并且只有在存在该名称的目录时才会通过。
$dir = test-path C:\Perflogs\TestFolder -PathType Container
答案 3 :(得分:0)
除了关于$false
的其他答案之外,我还遇到了v3的语法问题。具体地
if($dir -eq $false)
{
没用。
if($dir -eq $false){
确实有效。 YMMV,但你已被警告过。
答案 4 :(得分:0)
可能有用 如果($? -ne 0)
如果给定的条件为假,则在前面的变量中定义(这不是针对上述问题)
If($dir -contains 'False')