Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从powershell中的变量中转义撇号_Powershell - Fatal编程技术网

从powershell中的变量中转义撇号

从powershell中的变量中转义撇号,powershell,Powershell,我已经设置了下面的脚本,它按照预期工作……除了在电子邮件中使用撇号的用户 $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={$_.Distinguished

我已经设置了下面的脚本,它按照预期工作……除了在电子邮件中使用撇号的用户

$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:很抱歉浪费大家的时间。结果表明,该脚本运行良好,并且在该线程中提供了一些建议,例如在变量周围添加“”,但我测试的是一个列表,其中并非所有值都正确,这是我的错。谢谢大家抽出时间。

试试这个

由于您使用的是CSV,我猜想您是从另一个AD cmdlet通过管道传输它们的

Get Member是一个很好的工具

$users | Get成员将输出TypeName:CSV:Selected.Microsoft.ActiveDirectory.Management.ADUser

但是,这不是ADUser中的筛选器参数所需的字符串类型。 所以要转换这个

$selection | Get成员将输出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)}}
   }

谷歌搜索“get aduser Escape撇号”会显示几个相关的答案,例如,
“EmailAddress-比如“$user””
您好,谢谢您的回复。我在这里发布关于我的撇号问题之前,已经看过了其他论坛。我还尝试了其他解决方案。虽然你在文章中提供的链接没有涉及撇号,但我遇到了他们之前遇到的问题,找到了与第一篇文章中编辑的答案相同的解决方案,解决了我最初的问题。虽然脚本无法解析撇号,但我仍然有问题。如果您能解释您的答案如何解决OP的问题,这将非常有用。我应该,现在已经编辑了,说我的.csv文件是一列没有标题的电子邮件地址。我认为提供的建议可能在使用upn的场景中起作用。只是好奇,您从哪里提取数据来创建CSV?为什么不在CSV中使用标题?我是从消息管理员的报告中提取的,而报告本身没有标题。我也无法访问这些数据,除了提供给我的谷歌表单上的上述信息。我试图不使用标题,这样我就可以将这个脚本提供给其他人,如果他们获得了相同的信息,除了更改从何处提取csv和将其存储在何处之外,我不会向他们解释太多。