无法使lc参数工作?

时间:2015-10-11 07:33:58

标签: powershell if-statement case-insensitive uppercase lowercase

我正在尝试创建一个简单的if语句,并希望它忽略大小写。

这是我的伪代码:

if (Lowercase $xxx notequal lowercase "xxx")
{......}

我试过了:

if ( -lc $ConfigAppUsers  -ne -lc "No"  )
if (  lc $ConfigAppUsers  -ne  lc "No"  )
if (( lc $ConfigAppUsers) -ne (lc "No") )
if ((-lc $ConfigAppUsers) -ne (-lc "No"))

我总是得到:

-lc : The term '-lc' is not recognized as the name of a cmdlet, function,
script file, or operable program. Check the spelling of the name, or if a
path was included, verify that the path is correct and try again.
At line:1 char:1
+ -lc "No"
+ ~~~
    + CategoryInfo          : ObjectNotFound: (-lc:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

我做错了什么?

2 个答案:

答案 0 :(得分:4)

我不确定你为什么继续添加减号:

if ( lc $ConfigAppUsers ne "no" ) {
  ...
}

你可以说lc "No"而不是"no",但是在字符串文字上调用lc会很愚蠢。

您的其他问题似乎是您没有使用Perl。您获得的错误不是Perl错误消息。我认为这是Windows PowerShell错误。

答案 1 :(得分:3)

lc是Perl函数,而不是PowerShell函数。在PowerShell中,您可以通过调用字符串对象的ToLower()方法来小写字符串:

if ($ConfigAppUsers.ToLower() -ne 'no')

但是,PowerShell比较默认情况下不区分大小写,因此您实际上并不需要这样做。简单地比较字符串就足够了:

if ($ConfigAppUsers -ne 'No')