计算机名和字符串搜索

时间:2015-02-13 17:18:29

标签: string powershell search

遇到一些字符串问题,我可以使用$env:computerName获取计算机名称,并返回类似ABC1211的内容。我猜测ABC1211是一个对象,我想进行搜索。我想在这里搜索字符ABC,然后我需要用证书做一些其他的事情。我在搜索ABC时遇到问题。

我试过了:

[string[]]$test = $env:computerName 

将其转换为字符串,然后在$test内进行搜索:

if ($test.contains(("DEF")) {
    Write-Host "Yeah" 
}
else {
    Write-Host "NO"
} 

但它不起作用。我错过了什么吗?我猜这很简单,但我只是没有得到它。

2 个答案:

答案 0 :(得分:3)

$env:computerName已经是一个字符串。无需将其强制转换为[string[]]。只需直接调用变量上的.contains方法:

if ($env:computerName.contains("ABC")) {
    Write-Host "Yeah" 
}
else {
    Write-Host "NO"
}

顺便说一下,将变量强制转换为[string[]]会产生一个字符串数组,而不是一个字符串:

PS > [string[]]$test = $env:computerName     
PS > $test.GetType()

IsPublic IsSerial Name                                     BaseType                 
-------- -------- ----                                     --------                 
True     True     String[]                                 System.Array             


PS >

因此,$test的格式实际上是($env:computerName,),您使用的是Array.Contains而不是String.Contains

要转换为字符串,您只需使用[string]

[string]$test = $env:computerName

但正如我上面所说,这是不必要的,因为$env:computerName已经是一个字符串。

答案 1 :(得分:0)

好的,我想出来......比我想象的要简单得多。这是答案:-match

我只需要使用它而不是.contains或-like,我也不需要将对象更改为字符串。