【问题标题】:Powerhsell : Multiple Value in properties VariablePowershell:属性变量中的多个值
【发布时间】:2014-01-09 12:04:22
【问题描述】:

从带有复选框的原始表单中,我得到一个带有一些属性的 csv 文件。 我想将这些属性与 cmdlet get-Adusers 一起使用。如果我在 csv 中只有一个值但没有一些值,则该脚本正在工作。

我的 CSV 文件格式如下:

"PropertiesSelected";"FilterSelected" "SN,EmailAddress,CN,SamAccountName"; “DC=我的域,DC=COM”

目前我不尝试使用"filterSelected" 我认为问题在于powershell"SN,EmailAddress,CN,SamAccountName" 理解为单个值

我使用的命令是这样的: Import-Csv c:\TempPowerShell\CheckBoxResults.csv -delimiter ";" |

ForEach-Object {

$FilterSelected=$_.FilterSelected

$PropertiesSelected=$_.PropertiesSelected

Get-ADUser -Properties "$PropertiesSelected" -Filter * -SearchScope Subtree -SearchBase "DC=MyDomain,DC=COM" -Server MyServer:3268
}

非常感谢你的帮助,我要疯了:)

问候 朱利安

【问题讨论】:

  • 如果你写主机 $PropertiesSelected 会产生什么输出?如果您希望“SN,EmailAddress,CN,SamAccountName”不是单个值,则必须更改生成脚本或拆分字符串。
  • 如果列标题有空格,请使用$_."Header Name" 并确保您的属性完全正确。另外,您的 CSV 有 ;, 作为分隔符?
  • 我认为他正在尝试使用 , 作为属性参数的分隔符
  • 嗨,感谢您的回答,在我的 CSV 上准确一点。
  • 在我的表单上,我可以从 get-Aduser 中提取所有属性,这取决于选中的复选框。如果我手动键入 Get-AdUser -properties SN,CN,GivenName,..... 它正在工作,所以我的想法是在我手动键入时放置一个所有属性都选择“写入”的变量:)

标签: powershell properties


【解决方案1】:

您不能使用具有多个属性的字符串作为参数输入。

您可以通过将命令构造为字符串然后使用 invoke-expression 执行它来解决此问题:

$command="get-aduser -properties $PropertiesSelected -Filter * -SearchScope Subtree -SearchBase "DC=MyDomain,DC=COM" -Server MyServer:3268"
Invoke-expression $command

问候保罗

【讨论】:

  • 它与 Invoke-Expression 方法完美配合!多谢!这个社区摇滚!
【解决方案2】:
ForEach-Object {

$FilterSelected=$_.FilterSelected

$PropertiesSelected=$_.PropertiesSelected

Get-ADUser -Properties $PropertiesSelected.split(",") -Filter * -SearchScope Subtree -SearchBase "DC=MyDomain,DC=COM" -Server MyServer:3268
}

【讨论】:

  • 这就是答案$PropertiesSelected.split(",")
猜你喜欢
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 2016-11-25
相关资源
最近更新 更多