将变量的原始内容粘贴到另一个命令的过滤器中

不远的将来

我有多行重复的代码行,其中只有“办公室”名称应该不同,但是$ paste变量中的条件应该相同。

$paste = "extensionAttribute -eq 123"
$users1 = get-aduser -Properties canonicalName -filter {(office -like "ROFL") -and ( $paste )}
$users2 = get-aduser -Properties canonicalName -filter {(office -like "BOFL") -and ( $paste )}

当我尝试这样做时(插入$ paste变量的内容),我收到这种错误:

get-aduser : Error parsing query: '(office -like "ROFL") -and ( $paste )' Error Message: 'syntax error'
at position: '47'.
At line:1 char:10
+ $users = get-aduser -Properties canonicalName...
+          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ParserError: (:) [Get-ADUser], ADFilterParsingException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADFilterParsingException,Microsoft.ActiveDirectory.Management.Commands.GetADUser

当我只需要更改部分条件时,如何避免每次手动插入此手册?

mklement0

使用可扩展字符串"..."),而不是脚本块({ ... }

-Filter "(office -like 'ROFL') -and ( $paste )"

顺便'ROFL'说一句:由于不是通配符表达式,所以使用-likeover没有好处-eq

这样,AD提供程序最终会看到以下过滤器,该过滤器应该可以正常工作: (office -like 'ROFL') -and ( extensionAttribute -eq 123 )


至于你尝试什么

{ ... }带有AD cmdlet-Filter参数的脚本块()的使用很普遍,但从概念上讲是有问题的:请参阅此答案

简而言之:该-Filter参数是字符串类型的,当您将其传递给脚本块时,将传递逐字内容(不包括{an })。

也就是说,在您的尝试中,AD提供程序将以下字符串视为逐字-Filter变量-且该字符串在语法上显然不正确,因为您要在前面扩展(内插)变量扩展。(office -like "ROFL") -and ( $paste )$paste

使用时-Filter,请记住以下几点很重要:

  • 您将始终传递一个字符串作为参数。如果传递脚本块,.ToString()则会首先对其进行调用,从而产生其逐字内容。

  • 使用脚本块可能会给人一种错误的印象,即您可以将任意PowerShell表达式作为过滤器传递,这是正确的:

    • 尽管该-Filter参数支持的表达式语言类似于PowerShell ,但是它仅支持有限的一部分运算符并且受支持的运算符在某种程度上PowerShell对应物的行为有所不同-再次参见此答案

    • 最明显的限制是只能使用简单的变量引用(使用隐式远程处理时甚至不能使用),不能使用基于变量的表达式,例如属性访问例如,您可以$var在过滤器中使用,但不能使用$var.Foo-在这种情况下,请使用辅助变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

清除 VBA 中另一个工作表中的过滤器后,将数据复制并粘贴到新工作表中

如何将文件特定列的值粘贴到另一个命令中?

JS过滤器无法在另一个过滤器中工作

将基于共享根的相似变量名称粘贴到另一个变量中

如何将indd文件内容复制并粘贴到另一个indd文件中?

如何从 Vue 中的另一个过滤器访问一个附加的过滤器

使用一个过滤器对[code]标签外部的内容进行消毒,并使用另一个过滤器对[code]标签内部的内容进行消毒

R:如何将完整矢量粘贴到另一个矢量中

使用ZendPDF将PDF文件粘贴到另一个PDF中

将单元格粘贴到VBA中的另一个工作表

将元素粘贴到Rappid中的另一个图形吗?

VBA循环将值粘贴到另一个工作表中

如何将值粘贴到另一个工作簿中?

将具有一个工作表中的值的动态变量列复制并粘贴到另一个工作表中

根据日期复制一个文件的内容并粘贴到另一个文本文件中

基于另一个过滤器数组

Django模板:另一个过滤器

如何基于另一个过滤器中的选择来控制过滤器的值

跳过基于另一个过滤器ASP .NET的过滤器执行

在角度8的另一个过滤器内使用过滤器

JavaScript过滤器数组和另一个数组的过滤器

Javascript过滤器数组由另一个过滤器数组

使用过滤器将请求转发到另一个休息服务

Excel:创建一个宏以将活动选择复制并粘贴到另一个工作表中

如何过滤表格并将值粘贴到 Excel VBA 中的另一个工作表中

当我使用在将粘贴到另一个文件中的代码中定义的变量时,它不应打印在文件中。为什么?

子串过滤器列表元素由Python中的另一个列表

django过滤器,如果对象出现在另一个表中

过滤器产品依赖于本机Redux中的另一个ACTION