2017-07-25 90 views
-1

当我运行我的PowerShell代码时,出现以下错误。我根本弄不清楚。我不确定它是否与我的文件位置的名称有关。PowerShell错误

Import-Csv : Cannot bind parameter 'Delimiter'. Cannot convert value "CSV" to type "System.Char". Error: "String must be exactly one character long." 
At line:4 char:60 
+ ... GroupList = Import-CSV C:\Users\eh3599\Desktop\Powershell CSV Test\Te ... 
+                ~~~ 
    + CategoryInfo   : InvalidArgument: (:) [Import-Csv], ParameterBindingException 
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.ImportCsvCommand 

脚本来源:

set-executionpolicy unrestricted 
Import-Module ActiveDirectory 

$GroupList = Import-CSV C:\Users\eh3599\Desktop\Powershell CSV Test\Test2-TestOutput1.csv -header GroupName,Domain | Select GroupName,Domain 

$Table = @() 
$Record = @{} 

foreach ($Group in $GroupList) {  
If ($Group.Domain -Eq "a") {$DomainPath = "a.corp"} 
If ($Group.Domain -Eq "x") {$DomainPath = "x.corp"} 
If ($Group.Domain -Eq "y") {$DomainPath = "y.com"} 
If ($Group.Domain -Eq "b") {$DomainPath = "b.com"} 

#Get-ADGroupMember command with -Recursive switch includes only object type users with members of nested groups 
$GroupMembership = Get-ADGroupMember -identity $Group.GroupName -Server $DomainPath -Recursive | select SamAccountName, Name, objectClass, distinguishedname 

#Get-ADGroupMember command without -Recursive switch includes both User and Group objects but no membership of nested groups 
#$GroupMembership = Get-ADGroupMember -identity $Group.GroupName -Server $DomainPath | select SamAccountName, Name, objectClass, distinguishedname 

foreach ($GroupMember in $GroupMembership) { 
    $Record."Account Name" = $GroupMember.samaccountname 
    $Record."Full Name" = $GroupMember.name 
    $Record."ObjectClass" = $GroupMember.objectClass 
    $Record."Object DistinguishedName" = $GroupMember.DistinguishedName 
    $Record."Group Name" = $Group.GroupName 
    $Record."Group Domain" = $Group.Domain 
    $objRecord = New-Object PSObject -property $Record 
    $Table += $objrecord 
} 
} 

$Table | export-csv "C:\Users\eh3599\Desktop\Powershell CSV Test\$(get-date -f yyyy-MM-dd-hh-mm-ss)-ADGroupMembers.csv" -NoTypeInformation 
+1

导入请确保您的路径放在引号当。 'Import-CSV C:\ Users \ eh3599 \ Desktop \ Powershell CSV Test \ Test2-TestOutput1.csv'您的导入路径缺少引号,导致没有任何内容被加载。 –

+1

标记为关闭/错字 –

+1

@JasonSnell不完全正确。它将'CSV'绑定到分隔符位置参数,并且该路径只被解释为'C:\ Users \ eh3599 \ Desktop \ Powershell'因此它试图找到一个名为'Powershell'的文件并使用'CSV'分隔条目hah – TheIncorrigible1

回答

0

你需要引用你的说法,否则空间被解释为位置参数。

$GroupList = Import-CSV 'C:\Users\eh3599\Desktop\Powershell CSV Test\Test2-TestOutput1.csv' -header GroupName,Domain | Select GroupName,Domain 
2

只要你有一个包含空格的路径(文件或文件夹名称),你需要引用它:

$GroupList = Import-CSV "C:\Users\eh3599\Desktop\Powershell CSV Test\Test2-TestOutput1.csv" -header GroupName,Domain | Select GroupName,Domain