【问题标题】:How to write powershell script with Where-Object如何使用 Where-Object 编写 powershell 脚本
【发布时间】:2016-09-01 20:13:08
【问题描述】:

给定这样的脚本:

Get-ADPermission -Identity "Mark Adam" | where {$._ExtendedRights -like "*Send-As*"} -and -not {$_.Users -like "NT AUTHORITY\SELF"}

到目前为止,我在这里尝试过,但仍然没有运气。

var CommandGetAdPermission = new Command("Get-ADPermission");

CommandGetAdPermission.Parameters.Add("Identity", Identity);       

var CommandWhere = new Command("Where-Object");

ScriptBlock filter = ScriptBlock.Create("{$_.ExtendedRights -like \"*Send-As*\"} -and -not {$_.User -like \"NT AUTHORITY\\SELF\"}");

CommandWhere.Parameters.Add("FilterScript", filter);

pipeline.Commands.Add(CommandGetAdPermission);
pipeline.Commands.Add(CommandWhere);                     

psh = pipeline.Invoke();
errors = ps.Streams.Error.ReadAll();

返回错误如下:

“Where-Object”一词未被识别为 cmdlet 的名称, 函数、脚本文件或可运行的程序。检查拼写 名称,或者如果包含路径,请验证路径是否正确并 再试一次。

我做错了吗?

【问题讨论】:

  • 您可以发布您为管道创建运行空间的部分吗?

标签: c# powershell


【解决方案1】:

您的语法错误。在复杂过滤(即多个条件)的情况下,您希望将整个过滤条件放在脚本块中,如下所示:

Get-ADPermission -Identity "Mark Adam" | Where-Object {$_.ExtendedRights -like "*Send-As*" -and $_.Users -notlike "NT AUTHORITY\SELF"}

还有一个错字

$._ExtendedRights 

它必须是

$_.ExtendedRights

【讨论】:

    猜你喜欢
    • 2016-01-13
    • 2021-12-07
    • 2012-08-26
    • 1970-01-01
    • 2018-07-19
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多