所以我有以下代码输出所有安装的功能和角色:
Import-Module ServerManager
$Arr = Get-WindowsFeature | Where-Object {$_.Installed -match “True”} | Select-Object -Property Name
$loopCount = $Arr.Count
For($i=0; $i -le $loopCount; $i++) {
Write-Host $Arr[$i]
}
然而,输出是:
@{Name=Backup-Features}
@{Name=Backup}
@{Name=Backup-Tools}
如何摆脱@
和{}
?
答案 0 :(得分:7)
使用Select -ExpandProperty Name
代替Select -Property Name
或者,我建议使用Foreach-Object而不是C风格的循环。
Import-Module ServerManager
Get-WindowsFeature |
Where-Object {$_.Installed -match “True”} |
Select-Object -ExpandProperty Name |
Write-Host
或者
Import-Module ServerManager
Get-WindowsFeature |
Where-Object {$_.Installed -match “True”} |
ForEach-Object {
$_.Name | Write-Host
}
答案 1 :(得分:6)
一个漂亮的衬垫怎么样?
Get-WindowsFeature | ? {$_.Installed -match “True”} | Select -exp Name
答案 2 :(得分:1)
如果您可以接受完全静态的解决方案,这应该有效:
Write-Host $Arr[$i].Substring(2, $Arr[$i].Length-3)
如果您正在寻找专门针对这些符号的解决方案并将其删除,则会有所不同。根据你的问题,这应该没问题。