我有一个简单的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
答案 0 :(得分:1)
您正在寻找的是" Calculated Property"使用Select-Object
时。
| Select-Object @{n='HostName';e={($_.MachineName -split '\.')[0]}}