6

所以我有以下代码来输出安装的所有功能和角色:

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}

我怎样才能摆脱@and{}的?

4

3 回答 3

7

使用Select -ExpandProperty Name代替Select -Property Name

另外,我建议使用 Foreach-Object 而不是 C 风格的 for 循环。

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
    }
于 2013-11-01T19:06:56.293 回答
6

一个漂亮的班轮怎么样?

Get-WindowsFeature | ? {$_.Installed -match “True”} | Select -exp Name
于 2015-07-10T17:50:54.690 回答
1

如果您可以接受完全静态的解决方案,则应该可以:

Write-Host $Arr[$i].Substring(2, $Arr[$i].Length-3)

如果您正在寻找专门针对这些符号并删除它们的解决方案,那么情况会有所不同。不过,根据您的问题,这应该没问题。

于 2013-11-01T19:03:20.770 回答