代码之家  ›  专栏  ›  技术社区  ›  Alen

使用select object提取主机名的一部分

  •  1
  • Alen  · 技术社区  · 7 年前

    我有一个简单的powershell函数,其中我提供了日志类型和事件,它会扫描我们所有的SQL服务器。它可以工作,但主机名作为主机名返回。领域地方的我希望它只返回主机名。我试过machinename。拆分('.')和子字符串,它将不起作用。我曾尝试将select对象放入一个单独的变量中,并打算将其与其余列联接,但运行时间太长。

    这是我在更改函数之前测试的示例代码,以及注释掉的不起作用的部分。环顾四周,找到了许多关于这些命令的资源,但当我尝试在脚本中使用它们时,它们不起作用。

    我一直得到的错误是找不到接受参数“.”的位置参数。

    $servers = Get-Content -literalpath   "C:\temp\sql_servers3.txt" 
    #$server
    #$result = 
    ForEach($box in $servers) {Get-Eventlog -ComputerName $box -LogName 
    application -After 1-4-2018 -Entrytype Error | Where {$_.source -notin 
    'Perfnet','Perflib', 'ntfs', 'vss'}| select-object -property MachineName}  
    #$result_Host_name = select-object -inputobject $result -property 
     'MachineName'
     #'TimeGenerated', 'MachineName'.Split('.')[1], 'EventID','message'}
     #| Where {$_.source -notin 'Perfnet','Perflib', 'ntfs', 'vss'} 0
     #return $result_Host_name
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   BenH    7 年前

    您要找的是“ Calculated Property “使用时 Select-Object .

    | Select-Object @{n='HostName';e={($_.MachineName -split '\.')[0]}}