我正在尝试为用户提取密钥,但是在字符串之前和之后出现不必要的空格和换行符。我的脚本如下:
$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
我如何摆脱它们?
输出看起来像这样:
答案 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
选择对象的特定属性的值。