我正在尝试检索正在运行的应用程序,计算机'用户名及其IP地址。现在,每次将结果保存在文本文件中时,IP地址部分总是会给我这个结果:
"Length" "11"
有没有办法获取IP地址?
$savepath = "C:\Users\$([Environment]::UserName)\Desktop\apps\runningapps.txt"
Get-Process | where {$_.mainwindowtitle.length -ne 0} |
select name, mainwindowtitle| ConvertTo-Csv -NoType |
Set-Content $savepath
Get-WmiObject -Class Win32_ComputerSystem | select username |
ConvertTo-Csv -NoType | Add-Content $savepath
Get-WmiObject Win32_NetworkAdapterConfiguration |
Where { $_.IPAddress } |
Select -Expand IPAddress |
Where { $_ -notlike "*:*" } | ConvertTo-Csv -NoType | Add-Content $savepath
答案 0 :(得分:0)
IP地址是字符串列表,因此如果您希望每行一个地址,可以将它们直接写入输出文件:
Get-WmiObject Win32_NetworkAdapterConfiguration |
Where { $_.IPAddress } |
Select -Expand IPAddress |
Where { $_ -notlike "*:*" } | Add-Content $savepath
如果您希望将地址作为逗号分隔列表放在一行中,则需要先将它们连接起来:
(Get-WmiObject Win32_NetworkAdapterConfiguration |
Where { $_.IPAddress } |
Select -Expand IPAddress |
Where { $_ -notlike "*:*" }) -join ',' | Add-Content $savepath
ConvertTo-Csv
在这里没有帮助,因为它将对象作为输入并输出以逗号分隔的对象属性列表。如果您的输入对象是字符串(只有属性Length
),那么输出将成为输入字符串长度的列表。
作为旁注:构建输出文件路径的一种更简单的方法是使用USERPROFILE
环境变量:
$savepath = "$env:USERPROFILE\Desktop\apps\runningapps.txt"