无法以CSV格式

时间:2016-01-10 15:16:30

标签: csv powershell ip-address

我正在尝试检索正在运行的应用程序,计算机'用户名及其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

1 个答案:

答案 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"