Никогда не используйте Format- * до самого последнего момента. Убедитесь, что вы знаете, что у вас есть все ваши результаты, а затем выберите разумный стиль форматирования, и он может вообще не быть Format- *. Это может быть таблица ha sh, пользовательский объект, вывод файла и т. Д. c.
PowerShell 101, а также примеры, которые легко найти в Интернете и в файлах справки. Просто выберите нужные свойства, а не все. Ну, если вы не хотите, чтобы все они
Ниже приведены лишь некоторые способы / идеи для обработки этого варианта использования, и есть несколько других способов, которые могут быть более элегантными.
Тот факт, что вы используется термин grep, означающий, что вы пришли из Linux мира (при условии, конечно, что это хорошо, многие из нас также), и Linux испускает строки, тогда как PowerShell испускает объекты, потому что это объектно-ориентированный язык на основе. Net.
Clear-Host
Get-Acl -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\wuauserv' |
Select-Object -Property PSPath, AccessToString
<#
# Results
PSPath AccessToString
------ --------------
Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv BUILTIN\Users Allow ReadKey...
#>
Clear-Host
Get-Acl -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\wuauserv' |
Select-Object -Property PSPath, AccessToString |
Format-List
<#
# Results
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv
AccessToString : BUILTIN\Users Allow ReadKey
BUILTIN\Administrators Allow FullControl
NT AUTHORITY\SYSTEM Allow FullControl
CREATOR OWNER Allow FullControl
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES Allow ReadKey
S-1-15-3-1024-1...Allow ReadKey
#>
# Grab the property data with a simple select and calulated property, parsing the AccessToString
Clear-Host
Get-Acl -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\wuauserv' |
Select-Object -Property PSPath, @{
Name = 'AccessToString'
Expression = {($PSItem.AccessToString -split"`n")[0]}} |
Format-List
<#
# Results
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv
AccessToString : BUILTIN\Users Allow ReadKey
#>
# Extract specific strings using RegEx
Clear-Host
Get-Acl -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\wuauserv' |
Select-Object -Property PSPath, @{
Name = 'AccesstoString'
Expression = {[regex]::Matches(($PSItem.AccessToString),'BUILTIN\\Users.*')}
} |
Format-List
<#
# Results
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv
AccesstoString : BUILTIN\Users Allow ReadKey
#>
Clear-Host
Get-Acl -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\wuauserv' |
Select-Object -Property PSPath, @{
Name = 'AccesstoString'
Expression = {[regex]::Matches(($PSItem.AccessToString),'^B.*Users.*')}
} |
Format-List
<#
# Results
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv
AccesstoString : BUILTIN\Users Allow ReadKey
#>
Clear-Host
[regex]::Matches($(Out-String -InputObject $(Get-Acl -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\wuauserv' |
Select-Object -Property '*') -Width 100),'PSPath.*|AccessToString.*').Value
<#
# Resutlts
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentContr
AccessToString : BUILTIN\Users Allow ReadKey
#>