英文:
WSUS Computers exported: Filter that CSV file with Powershell in import
问题
你好,我需要使用PowerShell筛选一个.csv文件。
我导出的信息如下:
Get-WsusComputer -ComputerTargetGroups "group" | Export-Csv -Path "C:\export.csv"
但Get-WsusComputer向该.csv文件中添加了比我需要的更多信息,我只想要"FullDomainName",以便将这些计算机添加到新的AD组。
因此,我需要在导入时仅筛选"FullDomainName"标题。我该怎么做?
我尝试过这样:
Import-Csv "C:\export.csv" -Delimiter "," | select "FullDomainName"
但这样做时,尝试打印导入的值时,导入的值看起来像这样:
@{FullDomainName=blablabla.de}
我对PowerShell相当陌生,但据我理解,导入后以这种方式使用它将不正确,无法将这些完整域名添加到新的AD组。
感谢您的帮助!
英文:
Hello I need to filter a .csv file with powershell.
I exported the information like this:
Get-WsusComputer -ComputerTargetGroups "group" | Export-Csv -Path "C:\export.csv"
but Get-WsusComputer adds more information into that .csv than I need, I only want the "FullDomainName" so I can add those computers to a new AD-Group.
Therefore I need to filter for only the header "FullDomainName" when importing. how do i do that?
I tried this:
Import-Csv "C:\export.csv" -Delimiter "," | select "FullDomainName"
but when doing that and trying to print out the imported values, the imported values look like this:
@{FullDomainName=blablabla.de}
Im quite new to powershell, but to my understanding that import would not be right this way to after that be used to add those fulldomainnames to a new AD-Group.
Thanks for your help!
答案1
得分: 0
假设 FullDomainName
包含目标计算机的完全限定域名(例如 computer01.child.domain.tld
),循环遍历这些名称并将它们拆分为名称和域,然后像这样查询 AD:
$computerFQDNs = Import-Csv "C:\export.csv" -Delimiter "," | ForEach-Object {
$name,$domain = $_.FullDomainName -split '\.',2
$computerAccount = Get-ADComputer -Identity $name -Server $domain -ErrorAction SilentlyContinue
if($computerAccount){
# 找到计算机帐户,将其添加到组
Add-ADGroupMember -Identity myGroup -Member $computerAccount
}
else {
Write-Warning "无法在域 '$domain' 中找到计算机帐户 '$name'"
}
}
-split '\.',2
操作将接受输入字符串并在第一个 .
处分割它(即 computer.domain.tld
-> computer
和 domain.tld
)。
英文:
Assuming the FullDomainName
contains the FQDN of the target machines (eg. computer01.child.domain.tld
), loop over the names and split them into a name and domain, then query AD like this:
$computerFQDNs = Import-Csv "C:\export.csv" -Delimiter "," |ForEach-Object {
$name,$domain = $_.FullDomainName -split '\.',2
$computerAccount = Get-ADComputer -Identity $name -Server $domain -ErrorAction SilentlyContinue
if($computerAccount){
# Computer account found, add to group
Add-ADGroupMember -Identity myGroup -Member $computerAccount
}
else {
Write-Warning "Unable to find computer account '$name' in domain '$domain'"
}
}
The -split '\.',2
operation will take the input string and split it at the first .
(ie. computer.domain.tld
-> computer
and domain.tld
)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论