我在下面有一个PowerShell脚本
$ous = 'ou=office,dc=xxx,dc=com',`
'ou=shop0,dc=xxx,dc=com',`
'ou=shop1,dc=xxx,dc=com',`
'ou=shop2,dc=xxx,dc=com'
$outfile = 'c:\work\userinfo.csv'
New-Item -Force -type "file" -Path 'c:\work\userinfo.csv'
$ous | ForEach {
Get-ADUser -Filter * -SearchBase $_ |
Select-Object -Property CN,`
DisplayName,`
GivenName,`
Surname,`
SamAccountName,`
PasswordExpired,`
mail,`
Description,`
Office,`
EmployeeNumber,`
Title |
Sort-Object -Property Name |
export-csv -Append $outfile -NoTypeInformation
}
然后当我运行它时,我收到错误消息“New-Item:访问路径c:\ work \ userinfo.csv”被拒绝。
导致此错误的原因是什么?
更新
在我的情况下,不知何故,PowerShell区分大小写....输出文件夹名称是大写,在我的脚本中是小写,它在我匹配后工作它们。
答案 0 :(得分:1)
我绕过了错误的原因(我不确定原因。)。得到你想要的另一种方式
每次我运行脚本时,我都可以获得没有先前结果的新结果
您只需要将输出代码移到循环外部并删除追加。 Pipeline为您处理Append。
$ous | ForEach {
Get-ADUser -Filter * -SearchBase $_ |
Select-Object -Property CN,`
DisplayName,`
GivenName,`
Surname,`
SamAccountName,`
PasswordExpired,`
mail,`
Description,`
Office,`
EmployeeNumber,`
Title
} | Sort-Object -Property Name |
export-csv -Append $outfile -NoTypeInformation
注意到某些内容
您没有在select语句中调用您正在使用的所有属性。这应该会导致输出中的一些空列。我会将你的代码更新为这样的东西。
$props = "CN","DisplayName","GivenName","Surname","SamAccountName","PasswordExpired","mail","Description","Office","EmployeeNumber","Title"
$ous | ForEach-Object {
Get-ADUser -Filter * -SearchBase $_ -Properties $props | Select-Object $props
} | Sort-Object -Property Name |
export-csv $outfile -NoTypeInformation