как получить $ userPath только для определенных пользователей - PullRequest
0 голосов
/ 05 июля 2019

С помощью скрипта ниже poweshell я могу видеть userpath для всех профилей пользователей.

# Get a list of all user profiles
$users = Get-WmiObject Win32_UserProfile

foreach( $user in $users ) {

# Normalize profile name.
$userPath = (Split-Path $user.LocalPath -Leaf).ToLower()

Write-Host $userPath

}

Как отфильтровать это с конкретными 2 пользователями, скажем user1 и user2

Ответы [ 2 ]

2 голосов
/ 05 июля 2019

Вы имеете в виду это ...

# Get a list of all user profiles
$users = Get-WmiObject Win32_UserProfile


foreach( $user in $users ) 
{ (Split-Path $user.LocalPath -Leaf).ToLower() }

# Results
<#
...
networkservice
localservice
systemprofile
#>

# Get a list of specific user profiles
foreach( $user in $users ) 
{ (Split-Path $user.LocalPath -Leaf).ToLower() | Select-String 'networkservice|localservice' }

# Results
<#
networkservice
localservice
#>

или однострочник

 (Split-Path (Get-WmiObject Win32_UserProfile | 
 Where-Object -Property LocalPath -match  'networkservice|localservice').LocalPath -Leaf).ToLower()

# Results
<#
networkservice
localservice
#>
2 голосов
/ 05 июля 2019

Вы можете отфильтровать результаты, возвращенные из WMI, используя параметр filter и WQL для запросов.

Попробуйте этот код

$users = Get-WmiObject win32_userprofile -filter 'LocalPath LIKE "%user1%" OR LocalPath LIKE "%user2%"'

foreach( $user in $users ) {

    # Normalize profile name.
    $userPath = (Split-Path $user.LocalPath -Leaf).ToLower()
    Write-Host $userPath
}

См. Документация MS для Get-WmiObject и поиск параметра Filter

...