Powershell 自动删除边界';s与CSV-删除CMBoundary
Powershell 自动删除边界';s与CSV-删除CMBoundary,powershell,sccm,boundary,Powershell,Sccm,Boundary,CSV.CSV: Name,Type,Value,Name,Subnet Manchester, IPSubnet,192.168.1.0,Manchester,192.168.1.0 上述方法不起作用,因为您需要边界Id,而不仅仅是子网信息。后来我来到这里: $csv = Import-Csv "C:\csv.csv" foreach ($line in $csv) { Get-CMBoundary -BoundaryName $csv.Name | select Va
CSV.CSV
:
Name,Type,Value,Name,Subnet
Manchester, IPSubnet,192.168.1.0,Manchester,192.168.1.0
上述方法不起作用,因为您需要边界Id,而不仅仅是子网信息。后来我来到这里:
$csv = Import-Csv "C:\csv.csv"
foreach ($line in $csv) {
Get-CMBoundary -BoundaryName $csv.Name |
select Value,BoundaryID |
Export-Csv C:\Boundary.csv
$boundaryids = Import-Csv C:\Boundary.csv
foreach ($id in $boundaryids) {
Where-Object -eq $line.'Subnet'
} Remove-CMBoundary -Id $id.'boundaryID'
}
我敢打赌,这对我真正想做的事情来说太费劲了。有人知道我在想什么吗?我没有使用SCCM的经验,但从您的代码示例来看,您可能正在尝试这样做:
foreach ($line in $csv) {
Get-CMBoundary -BoundaryName $line.Name | Where-Object {
$_.Value -eq $line.Subnet
} | ForEach-Object {
Remove-CMBoundary -Id $_.BoundaryID
}
}
我没有使用SCCM的经验,但从您的代码示例来看,您可能正在尝试这样做:
foreach ($line in $csv) {
Get-CMBoundary -BoundaryName $line.Name | Where-Object {
$_.Value -eq $line.Subnet
} | ForEach-Object {
Remove-CMBoundary -Id $_.BoundaryID
}
}
我也不知道SCCM,但是
- 根据需要,它接受管道输入
- 并且有一个
参数-WhatIf
$csv = Import-Csv "C:\csv.csv"
ForEach ($line in $csv) {
Get-CMBoundary -BoundaryName $line.Name |
Where-Object Value -eq $line.Subnet |
Remove-CMBoundary -WhatIf
}
如果输出看起来正常,请删除-WhatIf
(或者使用-Confirm
)
以这种方式编辑,您从评论中的尝试可能会起作用
$Site = "ABC"
$csv = Import-Csv "C:\csv.csv"
ForEach ($line in $csv) {
Get-CMBoundary -BoundaryName $line.Name |
Where-Object{($_.Value -eq $line.Subnet) -and
($_.ShortCode -eq $Site) } |
Remove-CMBoundary
}
我也不知道SCCM,但是
- 根据需要,它接受管道输入
- 并且有一个
参数-WhatIf
$csv = Import-Csv "C:\csv.csv"
ForEach ($line in $csv) {
Get-CMBoundary -BoundaryName $line.Name |
Where-Object Value -eq $line.Subnet |
Remove-CMBoundary -WhatIf
}
如果输出看起来正常,请删除-WhatIf
(或者使用-Confirm
)
以这种方式编辑,您从评论中的尝试可能会起作用
$Site = "ABC"
$csv = Import-Csv "C:\csv.csv"
ForEach ($line in $csv) {
Get-CMBoundary -BoundaryName $line.Name |
Where-Object{($_.Value -eq $line.Subnet) -and
($_.ShortCode -eq $Site) } |
Remove-CMBoundary
}
除了原始查询外,要一次枚举一个站点,可以执行以下操作:
$Site = "ABC"
$csv = Import-Csv "C:\csv.csv"
foreach ($line in $csv) {
Get-CMBoundary -BoundaryName $line.Name | Where-Object {
$_.Value -eq $line.Subnet -and $_.ShortCode -eq $line.$Site} |
ForEach-Object {
Remove-CMBoundary -Id $_.BoundaryID
}
}
除了原始查询外,要一次枚举一个站点,可以执行以下操作:
$Site = "ABC"
$csv = Import-Csv "C:\csv.csv"
foreach ($line in $csv) {
Get-CMBoundary -BoundaryName $line.Name | Where-Object {
$_.Value -eq $line.Subnet -and $_.ShortCode -eq $line.$Site} |
ForEach-Object {
Remove-CMBoundary -Id $_.BoundaryID
}
}
为了一次只枚举CSV中的一个站点,我尝试了以下方法,但没有成功:$site=“ABC”$CSV=Import CSV“C:\CSV.CSV”foreach($CSV中的行){Get-CMBoundary-BoundaryName$line.Name |其中对象{$\值-eq$line.Subnet-和$\ ShortCode-eq$site}| ForEach对象{Remove-CMBoundary-Id$|.BoundaryID}管道错误-输入对象无法绑定到任何参数-我投票太早了。您的评论尝试遵循Ansgars模板,而不是我的模板-因此没有理由在这里抱怨。我认为您应该在添加前将两个where条件括在括号中。请参阅更改的答案。在我的编辑后,您可以撤回您的投票-但是为什么?Mu感谢您的输入和编辑,不会收回任何内容,只需自我提醒,在升级投票之前应进行测试,以确保其他codeccannot验证参数“Id”的参数。该参数为null或空。请提供一个不为null或空的参数,然后重试该命令。若要一次仅枚举CSV中的一个站点,请尝试此操作失败:$Site=“ABC”$csv=Import csv“C:\csv.csv”foreach($csv中的行){Get-CMBoundary-BoundaryName$line.Name |其中对象{$\值-eq$line.Subnet-和$\ ShortCode-eq$Site}foreach对象{删除CMBoundary-Id$\.BoundaryID}管道错误-输入对象无法绑定到任何参数-我投票太早了。您的评论尝试遵循Ansgars模板,而不是我的模板-因此没有理由在这里抱怨。我认为您应该在添加前将两个where条件括在括号中。请参阅更改的答案。在我的编辑后,您可以撤回您的投票-但是为什么?Much感谢您的输入和编辑,不会收回任何内容,只需自我提醒,在升级表决之前应进行测试,以确保其他codeCannot验证参数“Id”的参数。该参数为null或空。请提供一个不为null或空的参数,然后重试该命令。