来自显示空格的变量的命令输出

时间:2018-08-29 20:51:07

标签: powershell

我正在尝试为用户提取密钥,但是在字符串之前和之后出现不必要的空格和换行符。我的脚本如下:

$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 :(得分:1)

我不确定你的目标。

如果要查找本地管理员帐户的名称(即使已重命名),也可以这样写:

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选择特定属性并仅输出 该属性。

答案 1 :(得分:0)

我认为您已经有点复杂了。
如果你愿意

$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

答案 2 :(得分:0)

要获取用户的SID:

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

请注意,如果用户未命名为Administrator,这将失败。

还-注意使用Select-Object -ExpandProperty选择对象的特定属性的值。