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

时间:2018-01-05 18:38:11

标签: powershell powershell-v2.0 powershell-v3.0 powershell-v4.0

我有一个简单的powershell函数,我提供日志类型和事件,它扫描我们所有的SQL服务器。它的工作原理除了主机名返回hostname.domain.local。我希望它只返回主机名。我尝试过machinename.split('。')和substring,但它不起作用。我已经尝试将select-object放入一个单独的变量中,并将其与其余列连接起来,但运行时间太长。

这是我正在测试的示例废品代码,然后我更改了我的功能以及没有用的注释掉的部分。环顾四周,找到了很多关于这些命令的资源,但是当我尝试在我的脚本中使用它们时它们不起作用。

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

$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 个答案:

答案 0 :(得分:1)

您正在寻找的是" Calculated Property"使用Select-Object时。

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