【问题标题】:cmdlet to variable not being acceptedcmdlet 到变量不被接受
【发布时间】:2019-03-15 19:20:25
【问题描述】:

应该是一个非常简单的脚本,但在从 get-aduser 获取输出以被识别为变量时遇到问题,等等。我已经尝试了所有我能想到的引号和括号格式,但无法获得正确的输出。该脚本只是查询特定用户并将 AD 组导出到为其部门命名的文件夹,然后使用名称和标题导出到文本文件中。

$usertocheck = Read-Host -Prompt 'Input user to check'

$depttoadd = Get-AdUser -Filter {samAccountName -eq "$usertocheck"} -Properties Department | 
    Select-Object -expand Department

New-Item -ItemType Directory -Force -Path "C:\Users\Public\Desktop\UserRecords\$depttoadd\"

Get-ADPrincipalGroupMembership $usertocheck | select name | 
    Out-File -FilePath "C:\Users\Public\Desktop\UserRecords\$($usertocheck)_$($titlelookup).txt"

任何提示将不胜感激。

【问题讨论】:

  • 欢迎来到 StackOverflow!而不是“任何提示将不胜感激”。你可以清楚地问你的问题。即“如何让 get-aduser cmdlet 的输出被识别为变量?”或类似的东西。
  • $titlelookup 在哪里设置?
  • 我认为$...= Get-ADUser.. 应该可以工作,然后直接引用属性。
  • A minimal reproducible example 应该包括预期/偏差行为以及您收到的错误消息。
  • 一个更正确的编写过滤器的方法是Get-AdUser -Filter "samAccountName -eq '$usertocheck'",在外面加上双引号,在变量周围加上单引号。尽管帮助和在线示例说了什么,但它不是 PowerShell 脚本块,只有一些组合可以正常工作。除此之外,您的代码确实看起来应该从部门创建一个文件夹,-Expand 是正确的,而双引号内的 $depttoadd 对于 New-Item 是正确的。假设用户在 AD 中指定了部门,并且脚本具有文件系统权限。

标签: powershell variables directory


【解决方案1】:

它对我有用,当我在下面的行中删除 $usertocheck 周围的引号时($usertocheck 已经是一个字符串,所以不需要引号)

$depttoadd = Get-AdUser -Filter {samAccountName -eq $usertocheck} -Properties Department |

附带说明一下,您还可以像这样访问 Get-AdUser 返回的对象的部门属性

$depttoadd = $(Get-AdUser -Filter {samAccountName -eq $usertocheck} -Properties Department).Department

根据我的经验,访问对象的属性是获得所需输出的更可靠、更简洁的方法,而不是使用“Select-Object”。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2015-01-15
    相关资源
    最近更新 更多