【问题标题】:Populate paramters of Import-Gpo using CSV使用 CSV 填充 Import-Gpo 的参数
【发布时间】:2018-10-03 19:37:51
【问题描述】:

CSV:

BackupGpoName、BackupId、GPOName、路径 "GPO1",11111111-2222-3333-444444444444,"GPO1","C:\BackupGPO" "GPO2",78888888-1222-4555-8777-123456789123,"GPO1","C:\BackupGPO"

脚本:

$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-Object:无法绑定参数“BackupId”。无法转换价值 “BackupId”键入“System.Guid”。错误:“Guid 应包含 32 位数字 带有 4 个破折号(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。” 在行:2 字符:10 + $csv | Foreach-对象 { + ~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [ForEach-Object], ParameterBindingException + FullyQualifiedErrorId:CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.ForEachObjectCommand

【问题讨论】:

  • 阅读错误,然后查看您的第一个 backupID。
  • 不要指定-Header。您的 CSV 文件中已包含标题行。

标签: powershell csv import group-policy


【解决方案1】:

Bill_Stewart 是正确的,如果您的 csv 包含标题,则不应指定 -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 
}

由于代码试图将“BackupId”转换为 GUID 导致错误:

BackupGpoName BackupId GPOName path 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"
$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

【讨论】:

    猜你喜欢
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    相关资源
    最近更新 更多