2013-08-12 17 views
12

Tôi có dòng -Powershell Chọn-String -pattern -notMatch

echo $LocalAdmins 
    Administrator 
    Domain-Administrator 
    daemon 
    SomeUser 
  • Dòng 1-3 nên cùng mặc dù có thể có tình huống mà Domain-quản trị không tồn tại dòng nên chỉ đơn giản là đếm sẽ không trợ giúp vì Người dùng có thể ẩn trong dòng thứ 3.

  • Thay đổi chuỗi 4 dòng, có thể có nhiều hơn 4 dòng hoặc là cũng như không có dòng 4 nào cả.

  • Tôi chưa chắc chắn liệu các đường có thay đổi vị trí của chúng hay không.

Tôi cần nhận chuỗi là -notMatch "Quản trị viên", "Quản trị viên tên miền", "daemon". Tức là, tôi cần tên người dùng nằm trong danh sách này.

Có cách nào để sử dụng nhiều hơn một dấu chú thích với-và hoặc() không? Hiện tại tôi đang bị kẹt với mã chỉ sử dụng một -notMatch. Và tôi không thể sử dụng -Đối sánh vì có thể có hơn 2 người dùng trong danh sách.

$LocalAdmins | Select-String -pattern "Administrator" -notMatch 

Trả lời

16

Như thế này?

$LocalAdmins | select-string -Pattern 'Administrator|daemon' -NotMatch | select -expa line 

-pattern chấp nhận REGEX. Bạn có thể sử dụng | (hoặc toán tử regex) để thêm các từ khác cho phù hợp với nhu cầu của bạn.

+0

này cũng làm việc. Cảm ơn! – Phoneutria

+0

@Phoneutria Rất vui được trợ giúp! –

2

Giả sử rằng $LocalAdmins là một mảng bạn có thể làm điều này:

$exclude = 'Administrator', 'Domain-Administrator', 'daemon' 
$LocalAdmins | Where-Object { $exclude -notcontains $_ } 
+0

Cảm ơn! Nó hoạt động hoàn hảo. – Phoneutria