【问题标题】:Powershell Import-CSV outputs "@{"Powershell Import-CSV 输出“@{”
【发布时间】:2016-06-28 13:29:10
【问题描述】:

PS 上的相对新手。我有一个简单的 CSV 文件:

Computer,Team
server,team1
server2,team2
server3,team2

我希望将此列表导入 PS。我使用以下命令,我将使用它来对每个计算机名称执行查询:

$Serverlist = import-csv "c:\temp\appsupportAll.txt"
$Servers = $Serverlist | Select Computer
Foreach ($Computer in $Servers)
    {etc etc}

$Serverlist 和 $Servers 的输出与我预期的一样。但是,每个 $Computer 都以如下形式呈现给 PS:

@{$_.Computer=server}
@{$_.Computer=server2}
@{$_.Computer=server3}
etc

我正在寻找“server”、“server2”、“server3”等。请问我做错了什么?

谢谢

【问题讨论】:

    标签: powershell import


    【解决方案1】:

    $Computer 在你的 foreach 循环中不仅仅是你正在寻找的值。本质上,它是一个自定义对象,具有一个名为“计算机”的属性。如果您只想要单个“计算机”属性的字符串表示,请使用 select -ExpandProperty,如下所示:

    $Serverlist = import-csv "c:\temp\appsupportAll.txt"
    $Servers = $Serverlist | Select -ExpandProperty Computer
    Foreach ($Computer in $Servers)
        {etc etc}
    

    或者更简单,你可以这样写:

    $Serverlist = import-csv "c:\temp\appsupportAll.txt"
    Foreach ($Computer in $serverlist.Computer)
        {etc etc}
    

    或者,如果您需要更多属性:

    $Serverlist = import-csv "c:\temp\appsupportAll.txt"
    
    foreach ($server in $serverlist) {
        $server.team
        $server.computer
    }
    

    【讨论】:

    • 漂亮!我实际上应该知道,因为我已经在同一个脚本的其他地方完成了这项工作!谢谢一百万
    • 接受我的回答! :)
    • 我无法获得“更简单”的工作方式,但出现空白。我对第一个很满意。我还需要获取与计算机相关的团队
    • 已编辑以显示更多属性。奇怪的是第二个例子不适合你;它在 PowerShell 5 中非常适合我。
    • 还有一件事,在我的脚本下方,我正在尝试与注册表建立 WMI 连接:'$HKLM = [UInt32] "0x80000002" $WMI_Reg =WMIClass] "\\$Computer. Computer\root\default:StdRegProv” $RegConnect = $True',但它不喜欢路径中的变量。它带有错误:'无法将值“\\@{Computer=TESTWEBVIEW01; Team=App_Support}.Computer\root\default:StdRegProv”转换为“System.Management.ManagementClass”。错误:“RPC 服务器不可用。(来自 HRESULT 的异常:0x800706BA)”'
    【解决方案2】:

    如果您的输入文件没有标题,请改用:

     $Serverlist = Get-Content "c:\temp\appsupportAll.txt"
    
     $Serverlist | % {whatever you need}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-24
      • 1970-01-01
      • 2013-09-23
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多