powershell - 尝试从从 CSV 导入的 Wkst LoginIDs 获取 Dist.Name 时,Powershell -> Get-ADComputer 错误
问题描述
我正在尝试从 CSV 列表中获取工作站的 DN。
$distname = (Get-ADComputer "$($wkst.wkstID)").distinguishedName
上面的行导致错误,因为$wkst.wkstID
没有SameAccountNames
单独列出,但它将整个 CSV 列表复制到同一命令中。
有人可以帮忙解决这个错误吗?
Import-Module ActiveDirectory
$wkst = import-csv XXX.csv
Foreach($wkstID in $wkst){
$distname = (Get-ADComputer "$($wkst.wkstID)").distinguishedName
#Remove-ADObject -Identity $distname
}
解决方案
好的,我可能会写一个答案而不是对此使用评论。
在您的代码中,您正在创建一个变量来使用 迭代项目集合foreach($wkstID in $wkst){..}
,但在循环中,您从整个集合中获取属性$wkst.wkstID
,而不是从迭代变量中获取它。
这就是为什么我评论使用更好的名称来避免当变量名称与您从中使用的属性相同时您现在遇到的混淆。
尝试
Import-Module ActiveDirectory
$wkst = Import-Csv -Path 'XXX.csv'
foreach($item in $wkst){
$distname = (Get-ADComputer -Identity $item.wkstID).DistinguishedName
# Remove-ADObject -Identity $distname
}
当找不到具有该名称的计算机时,上述内容可能会引发异常,因此最好使用以下内容:
Import-Module ActiveDirectory
$wkst = Import-Csv -Path 'XXX.csv'
foreach($item in $wkst){
$computer = Get-ADComputer -Filter "Name -eq '$($item.wkstID)'" -ErrorAction SilentlyContinue
if ($computer) {
# Remove-ADObject -Identity $computer.DistinguishedName
}
else {
Write-Warning "Computer '$($item.wkstID)' does not exist"
}
}
推荐阅读
- swift - 有没有办法将变量/布尔值携带到视图的超级视图中?
- java - mysql连接-检查与您的mysql服务器版本相对应的手册
- javascript - 如何将 Laravel 环境数据传递给 Vue 组件
- c# - 如何在 c# selenium chromedriver 中选择下拉列表的下拉值而不选择?
- r - 如何将每年从原始单独文件附加到新的合并数据集
- c# - 如何使用 Caliburn Micro ActivateItem 等待并从 ViewModel 获取返回值
- python - 如何计算python中多列中2列的协方差?
- docker - 安装了 repo 的 docker-ce 未显示在 `yum list available` 中
- c# - 新手:创建 enum.FirstOrDefault(),得到“无法隐式转换类型”
- python-3.x - 我是 python 新手,我正在尝试构建一个简单的井字游戏。当我从用户那里获取输入时,它会进入无限循环