PowerShell区分大小写变量

时间:2016-07-03 15:40:50

标签: powershell

我想编写一个脚本来对我公司的用户进行操作。

用户名可以使用大写字母/小写字母,并且有时也会使用大写字母为域名分配域名,因此用户名可以是: domain \ username,DOMAIN \ USERNAME,DOMAIN \ username或domain \ USERNAME。

我要求这样的用户名:

$user = Read-Host "Please insert username"

如何使$user不区分大小写以及公司名称?

用户名必须与$company\$user类似,不区分大小写。

2 个答案:

答案 0 :(得分:7)

默认情况下,PowerShell中的字符串比较通常不区分大小写。

字符串本身就是意识,这意味着他们知道A是一个与a不同的字形,它会记住使用了哪个,但是正常的比较运算符(-eq-match-like-lt-in等等都不区分大小写。

您必须为区分大小写的比较(-ceq-cmatch-clike-clt-cin等指定区分大小写的版本。 )。您还可以指定明确不区分大小写的运算符(-ieq-imatch-ilike-ilt-iin等。)

如果要将字符强制为特定大小写,可以执行以下操作:

#Set characters to lower case
$user = $user.ToLower();

#Set characters to upper case
$user = $user.ToUpper();

但是没有字符串的属性将它们标记为本质上不区分大小写。

答案 1 :(得分:0)

不需要特殊处理,Windows凭据不区分大小写,因此无论用户输入域或用户名的情况如何,您都可以将其传递给cmdlet或命令行工具,它只会起作用。

例如,使用以下用户名创建PSCredential将具有相同的结果:

  • MyCompany的\名为myUsername
  • myCompany中\名为myUsername
  • MyCompany的\名为myUsername
  • MyCompany的\名为myUsername

此外,默认情况下,PowerShell比较运算符不区分大小写;

"CASE" -eq "case"    #returns true
"CASE" -ceq "case"   #case-sensitive version returns false