AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 447108
Accepted
MDMarra
MDMarra
Asked: 2012-11-10 07:01:29 +0800 CST2012-11-10 07:01:29 +0800 CST 2012-11-10 07:01:29 +0800 CST

使用 Compare-Object 比较 CSV 的两个特定属性未给出预期结果

  • 772

我有来自两个不同域的用户列表。这些列表采用 CSV 格式,我只关心 SAMAccountName,这是这些 CSV 中的一个字段。

我正在使用的代码目前是:

$domain1 = Import-CSV C:\Scripts\Temp\domain1.xxx.org.csv | Select-Object SAMAccountName
$domain2 = Import-CSV C:\Scripts\Temp\domain2.xxx.org.csv | Select-Object SAMAccountName

Compare-Object ($domain1) ($domain2)

这仅以这种格式返回少数结果(不准确):

@{samaccountname=SomeUser}                                       =>

显然,Compare-Object 不会将对象评估为字符串。我如何使这项工作?

powershell
  • 2 2 个回答
  • 5343 Views

2 个回答

  • Voted
  1. Best Answer
    jscott
    2012-11-10T07:07:49+08:002012-11-10T07:07:49+08:00

    给定示例 CSV 文件“domain1.xxx.org.csv”,其内容为:

    "name","samaccountname","description","distinguishedname","enabled","lastlogondate" 
    "ADAUser01","ADAUser01",,"CN=ADAUser01,OU=Users,OU=ADA,DC=phl,DC=xxx,DC=ORG","True","8/7/2012 2:28:37 PM"
    

    我们可以看到如何Import-Csv使用标题将文本转换为 PSCustomObject:

    Import-Csv domain1.xxx.org.csv | Select-Object -First 1 | Get-Member
    
       TypeName: Selected.System.Management.Automation.PSCustomObject
    
    Name              MemberType   Definition
    ----              ----------   ----------
    Equals            Method       bool Equals(System.Object obj)
    GetHashCode       Method       int GetHashCode()
    GetType           Method       type GetType()
    ToString          Method       string ToString()
    description       NoteProperty System.String description=
    distinguishedname NoteProperty System.String distinguishedname=CN=ADAUser01,OU=Users,OU=ADA,DC=phl,DC=xxx,DC=ORG
    enabled           NoteProperty System.String enabled=True
    lastlogondate     NoteProperty System.String lastlogondate=8/7/2012 2:28:37 PM
    name              NoteProperty System.String name=ADAUser01
    samaccountname    NoteProperty System.String samaccountname=ADAUser01
    

    过滤Select-Object SAMAccountName结果如下:

    Import-Csv domain1.xxx.org.csv | Select-Object -First 1 SamAccountName
    
       TypeName: Selected.System.Management.Automation.PSCustomObject
    
    Name           MemberType   Definition
    ----           ----------   ----------
    Equals         Method       bool Equals(System.Object obj)
    GetHashCode    Method       int GetHashCode()
    GetType        Method       type GetType()
    ToString       Method       string ToString()
    samaccountname NoteProperty System.String samaccountname=ADAUser01
    

    如果你想比较两个 PSCustomObjects 的 NoteProperty,因为我们不只是评估一个字符串,你只需要告诉Compare-Object你想要比较哪个属性:

    Compare-Object $domain1 $domain2 -Property SamAccountName
    
    • 4
  2. jbsmith
    2012-11-10T14:59:10+08:002012-11-10T14:59:10+08:00

    实现相同效果的另一种方法是在选择对象中使用 -ExpandProperty:

    $domain1 = Import-CSV C:\Scripts\Temp\domain1.xxx.org.csv | Select-Object -ExpandProperty SAMAccountName
    $domain2 = Import-CSV C:\Scripts\Temp\domain2.xxx.org.csv | Select-Object -ExpandProperty SAMAccountName
    

    在几乎所有情况下,当我只是使用 Select-Object 选择一个属性时,-ExpandProperty 都会得到我真正想要的东西——在本例中,是原始字符串。

    • 2

相关问题

  • 资源锁和电源外壳

  • 脚本 - 如何断开远程桌面会话?

  • 如何限制向通讯组发送到外部地址?

  • Powershell对值与数组的作用不同?

  • Windows Powershell Vim 键绑定

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve