从cmd中的powershell命令获取输出

时间:2015-12-14 10:32:35

标签: powershell batch-file cmd

我有一个.bat文件,它运行各种cmd命令,并运行以下命令

powershell -c "Get-Acl -Path HKLM:\SOFTWARE\ESRI\License10.0 | Format-List"

该命令的输出是

Path   : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\ESRI\License10.0
Owner  : BUILTIN\Administrators
Group  : CORPOFLONDON\Domain Users
Access : CREATOR OWNER Allow  FullControl
         NT AUTHORITY\SYSTEM Allow  FullControl
         BUILTIN\Administrators Allow  FullControl
         BUILTIN\Users Allow  FullControl
Audit  :
Sddl   : O:BAG:DUD:PAI(A;CIIO;KA;;;CO)(A;CI;KA;;;SY)(A;CI;KA;;;BA)(A;CI;KA;;;BU)

我想循环访问Access值以查找特定用户和权限级别。

这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

目前还不清楚你要做什么。 在powershell中,您可以使用类似这样的内容来搜索管理员完全控制:

Get-Acl XXX |select -expand access |?{$_.identityreference -match "admin" -and $_.fileSystemRights -eq "FullControl"}

答案 1 :(得分:0)

恕我直言,你应该直接使用PowerShell而不是与cmd混合。

以下是一个例子:

$keyPath = "HKLM:\SOFTWARE\ESRI\License10.0"
$target = "SYSTEM"

"ACL check on $keyPath :"

Get-Acl -Path $keyPath |
    Select-Object -ExpandProperty Access |
    ForEach-Object {    
        if($_.IdentityReference -match $target) {
            "$($_.IdentityReference) : $($_.AccessControlType) $($_.RegistryRights)"
        }    
    }