Powershell 使用CSV填充导入Gpo的参数
CSV: 但我得到了一个错误:Powershell 使用CSV填充导入Gpo的参数,powershell,csv,import,group-policy,Powershell,Csv,Import,Group Policy,CSV: 但我得到了一个错误: $csv = Import-Csv -Path "C:\gpotest.csv" -Header BackupGpoName, BackupId, gponame, Path $csv | ForEach-Object { $params = @{ BackupGpoName = $_.BackupGpoName BackupId = $_.backupid TargetName = $_.g
$csv = Import-Csv -Path "C:\gpotest.csv" -Header BackupGpoName, BackupId, gponame, Path
$csv | ForEach-Object {
$params = @{
BackupGpoName = $_.BackupGpoName
BackupId = $_.backupid
TargetName = $_.gponame
Path = $_.path
}
$params.$type = $true
Import-Gpo @params -CreateIfNeeded
}
Foreach对象:无法绑定参数“BackupId”。无法转换值
“BackupId”以键入“System.Guid”。错误:“Guid应包含32位数字
带4个破折号(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx-xxxxxxxxxxxx)。”
第2行字符:10
+$csv | Foreach对象{
+ ~~~~~~~~~~~~~~~~
+CategoryInfo:InvalidArgument:(:)[ForEach对象],参数BindingException
+FullyQualifiedErrorId:CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.ForEachObjectCommand
Bill_Stewart是正确的,如果您的csv包含标题,则不应指定
-标题。使用示例csv和简单的打印语句:
Foreach-Object : Cannot bind parameter 'BackupId'. Cannot convert value
"BackupId" to type "System.Guid". Error: "Guid should contain 32 digits
with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)."
At line:2 char:10
+ $csv | Foreach-Object {
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [ForEach-Object], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.ForEachObjectCommand
由于代码试图将“BackupId”强制转换为GUID,导致出现和错误:
BackupGpoName
备份ID
GPOName
路径
GPO1
11111111-2222-3333-444444444444
GPO1
C:\BackupGPO
GPO2
78888888-1222-4555-8777-123456789123
GPO1
C:\BackupGPO
由于您的csv有一个标题,您的代码应该是
$csv = import-csv -Path "C:\temp\test.csv" -Header BackupGpoName, BackupId,
gponame, Path
$csv | Foreach-Object {
$_.BackupGpoName
$_.backupid
$_.gponame
$_.path
$params = @{
BackupGpoName=$_.BackupGpoName
BackupId=$_.backupid
TargetName=$_.gponame
Path=$_.path
}
$params.$type = $true
#import-gpo @params -CreateIfNeeded
}
}
以及预期的产量:
GPO1
11111111-2222-3333-444444444444
GPO1
C:\BackupGPO
GPO2
78888888-1222-4555-8777-123456789123
GPO1
C:\BackupGPO
读取错误,然后查看您的第一个备份ID。不要指定-Header
。您的CSV文件中已包含标题行。
$csv = import-csv -Path "C:\temp\test.csv" -Header BackupGpoName, BackupId,
gponame, Path
$csv | Foreach-Object {
$_.BackupGpoName
$_.backupid
$_.gponame
$_.path
$params = @{
BackupGpoName=$_.BackupGpoName
BackupId=$_.backupid
TargetName=$_.gponame
Path=$_.path
}
$params.$type = $true
#import-gpo @params -CreateIfNeeded
}
$csv = import-csv -Path "C:\temp\test.csv"
$csv | Foreach-Object {
$_.BackupGpoName
$_.backupid
$_.gponame
$_.path
$params = @{
BackupGpoName=$_.BackupGpoName
BackupId=$_.backupid
TargetName=$_.gponame
Path=$_.path
}
$params.$type = $true
#import-gpo @params -CreateIfNeeded