1

我正在尝试列出计算机上未隐藏的所有共享。但我就是无法让 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 '*$*' }
4

2 回答 2

3

我不知道它与包含运算符的速度相比如何,但我会使用匹配运算符来做到这一点:

$Shares | Where-Object -FilterScript { $_.Name.tostring() -notlike '*$*' }
于 2013-08-02T19:19:35.187 回答
1

就像@EBGreen 说的,应该这样做:

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

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

于 2013-08-02T19:29:29.787 回答