Вывод команды из переменной, показывающей пробелы - PullRequest
0 голосов

Я пытаюсь извлечь ключ для пользователя, но я получаю ненужные пробелы и символы новой строки перед строкой и после нее. Мой скрипт выглядит следующим образом:

$File = gwmi Win32_UserProfile -co MADS000001 |
        select localpath, sid |
        Where-Object {$_.localpath -eq "C:\Users\Administrator"} |
        select Sid |
        ft -HideTableHeaders |
        Out-String -Stream
Write-Host $file

Как мне от них избавиться?

Вывод выглядит так:

Ответы [ 3 ]

0 голосов
/ 30 августа 2018

Я думаю, вы немного усложнили.
Если вы просто делаете

$profileInfo = Get-WmiObject Win32_UserProfile -ComputerName 'MADS000001' |
               Where-Object {$_.localpath -like "*\Administrator"} |
               Select-Object LocalPath, Sid, PSComputerName

Вы получите объект (если, конечно, $null в противном случае) с тремя свойствами в команде Select-Object.

$profileInfo.LocalPath, который можно использовать для удаления папки.
Строковое значение $profileInfo.Sid, которое вы можете использовать для удаления ключа реестра для этого пользователя в
HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\<SID>

P.s. Второе «нежелательное» пространство, которое вы обрисовали в общих чертах, это просто новая строка, которую Write-Host всегда добавляет, если вы не используете Write-Host $profileInfo.Sid -NoNewline

0 голосов
/ 30 августа 2018

Чтобы получить SID для пользователя:

$userName = "Administrator"
$sid = Get-WmiObject Win32_UserAccount -Filter "LocalAccount=TRUE AND Name='$username'" |
 Select-Object -ExpandProperty SID

Обратите внимание, что это не удастся, если пользователь не назван Administrator.

Также - обратите внимание на использование Select-Object -ExpandProperty для выбора значения определенного свойства объекта.

0 голосов
/ 30 августа 2018

Я не уверен в вашей цели.

Если вы хотите узнать имя локальной учетной записи администратора (даже если она была переименована), вы можете написать это:

Get-WmiObject Win32_UserAccount -Filter 'LocalAccount=TRUE AND SID LIKE "%-500"' |
  Select-Object -ExpandProperty Name

Если вы хотите путь к профилю этого пользователя, вы можете объединить их:

$adminSID = Get-WmiObject Win32_UserAccount -Filter 'LocalAccount=TRUE AND SID LIKE "%-500"' |
  Select-Object -ExpandProperty SID
$profilePath = [WMI] "root\cimv2:Win32_UserProfile.SID='$adminSID'" |
  Select-Object -ExpandProperty LocalPath

Обратите внимание на использование Select-Object -ExpandProperty для выбора определенного свойства и вывода только этого свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...