【问题标题】:Escape apostrophes from variable in powershell从powershell中的变量中转义撇号
【发布时间】:2017-06-11 20:19:58
【问题描述】:

我设置了以下脚本,它按预期工作....除了电子邮件中带有撇号的用户。

$users = get-content C:\Filename.csv

$results = Foreach ($user in $users)
{

get-aduser -filter "EmailAddress -like '$user'" -properties CanonicalName,LastLogon,Name | 
select Name,@{N="Thing";E={$_.DistinguishedName.Split(',')[-4]}},@{N="Place";E={$_.DistinguishedName.Split(',')[-5]}},@{N="Last Logon";E `
={[DateTime]::FromFileTime($_.Lastlogon)}}

}


$results | Export-Csv C:Filename.csv -NoTypeInformation

有人知道如何在example_o'connor@example.com 之类的电子邮件中转义撇号吗?每当我运行上述脚本时,它总是会在上述电子邮件地址上出错。

编辑:我的 csv 文件是一列没有标题的电子邮件地址。

编辑2:很抱歉浪费大家的时间。原来脚本工作正常,以及这个线程中的一些建议,例如在我的变量周围添加“”“”,但我正在测试一个并非所有值都正确的列表,所以这是我的错.谢谢大家的时间。

【问题讨论】:

  • 谷歌搜索“get-aduser Escape apostrophes”显示了几个相关的答案,例如Get-Aduser -Filter will not accept a variable"EmailAddress -like ""$user"" "
  • 您好,感谢您的回复。在发布关于我的撇号问题之前,我已经查看了其他论坛。我也尝试了其他解决方案。您在帖子中提供的链接虽然不处理撇号,但我遇到了他们之前遇到的问题,并找到了与第一篇帖子中编辑的相同解决方案作为答案,这确实解决了我最初的问题。尽管脚本无法解析撇号,但我仍然遇到问题。

标签: powershell


【解决方案1】:

试试这个...

由于您使用的是 CSV,我想您已经从另一个 AD cmdlet 管道传输它们。

Get-Member 在这里是一个很棒的工具。

$用户 | Get-Member 将输出 TypeName: CSV:Selected.Microsoft.ActiveDirectory.Management.ADUser

但是,这不是 ADUser 中的 Filter 参数需要的 String 类型。 所以要转换这个...

$选择 | Get-Member 将输出 TypeName: System.String。

另一部分是确保 Get-ADUser 中的 -Filter 参数正确地逐一扩展字符串,因为 Get-ADUser 的 -Filter 参数无法处理字符串数组。

$users = Import-Csv C:\filename.csv
$selection = ($users.emailaddress)

foreach ($user in $selection)
   {
     get-aduser -filter {EmailAddress -eq $user} -properties CanonicalName,LastLogon,Name |`
     select Name,@{N="Thing";E={$_.DistinguishedName.Split(',')[-4]}},`
     @{N="Place";E={$_.DistinguishedName.Split(',')[-5]}},`
     @{N="Last Logon";E={[DateTime]::FromFileTime($_.Lastlogon)}}
   }

【讨论】:

  • 如果您能解释您的答案如何解决 OP 的问题,将会很有帮助。
  • 我应该,现在已经编辑,说我的 .csv 文件是一列没有标题的电子邮件地址。我认为提供的建议可能在使用 upn 的情况下有效。
  • 只是好奇,您从哪里提取数据来创建 CSV?为什么不在 CSV 中使用标题?
  • 我从我们的消息管理员的报告中提取它,报告本身没有标题。除了提供给我的带有上述信息的谷歌表格外,我也无权访问这些数据。我试图不使用标头,以便我可以将此脚本提供给其他人,如果他们获得相同的信息,除了更改从何处提取 csv 以及存储它的位置之外,无需向他们解释太多。
猜你喜欢
  • 2016-03-07
  • 2021-08-11
  • 1970-01-01
  • 1970-01-01
  • 2013-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
相关资源
最近更新 更多