过滤包含美元符号的字符串

时间:2013-08-02 19:06:00

标签: powershell

我试图列出计算机上没有隐藏的所有共享。但我不能让where-object子句起作用。知道如何过滤掉所有带有美元符号的共享名称吗?现在这没有任何过滤器。

$ComputerName = "server"
$Shares = get-wmiobject -class Win32_share -ComputerName $ComputerName 
$Shares | Where-Object -FilterScript { $_.Name.tostring() -notcontains "\`$" }

我知道这很简单,但我无法弄清楚。

编辑: 如果有人想要复制(更改名称以保护无辜者),这就是我的结果脚本:

$ComputerNames = "server1","server2","server3","server4"

$Shares = invoke-command $ComputerNames { get-wmiobject -class Win32_share } -ErrorAction "SilentlyContinue"
$Shares | Where-Object -FilterScript { $_.Name.tostring() -notlike '*$*' }

2 个答案:

答案 0 :(得分:3)

我不知道它与包含运算符的速度相比如何,但我会使用匹配运算符来执行此操作:

$Shares | Where-Object -FilterScript { $_.Name.tostring() -notlike '*$*' }

答案 1 :(得分:1)

像@EBGreen所说,应该这样做:

$Shares | Where-Object -FilterScript { $_.Name.tostring() -notlike '*$*' }

原因是-notcontains用于数组搜索。