您好,我已经在PowerShell中完成了此脚本
$hostname = get-content env:computername
$host = "Desk"
if ($hostname.contains | Where {$_.name -Match ("test")})
{
$chars = [char[]]"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
$name = [string](($chars[0..25]|Get-Random)+(($chars|Get-Random -Count
10) -join ""))
Rename-Computer -NewName $host$nam
Write-Host -foregroundcolor Yellow "New Computername is $host$name"
}
else {
Write-Host -foregroundcolor Red "This is not a test pc "
Start-Sleep -s 10
Exit
}
当我只寻找“测试”一词时,它运行良好 我想做的是拥有更多搜索条件,例如
if ($hostname.contains | Where {$_.name -Match ("test" -or "test01" -or
"test02" -or "test03" -or "test04" -or "test05")})
谢谢。
答案 0 :(得分:0)
-Match
运算符是不区分大小写的正则表达式匹配。这意味着模式"test"
将与test01
,Zerotest
,test1323454
,Anythingtestanything
等匹配。如果您对要测试的模式有更多了解,则可以如果您想继续使用正则表达式,可以调整您的正则表达式匹配项。
例如,如果您知道所有主机名都将以test
开头并以数字结尾,则可以使用-Match "^test\d+$"
。如果区分大小写,则应使用-CMatch
。
^
是字符串的开头。\d+
是一个或多个数字$
是字符串的结尾有关-Match
的更多信息,请参见About Comparison Operators,其中包含有关正则表达式的链接。
答案 1 :(得分:0)
这种方式...
$Hostname = 'Lab01'
$Hostname = 'LabTest01'
$Hostname = 'NewLabTest'
$Hostname = 'Test05'
if ($Hostname -Match 'test|test01|test02|test03|test04|test05')
{ "$Hostname matches criteria" }
Else {Write-Warning -Message "$Hostname does not match criteria"}
# Results
WARNING: Lab01 does not match criteria
LabTest01 matches criteria
NewLabTest matches criteria
Test05 matches criteria