Powershell to .vbs



嗨,我可以把下面的。vbs文件,所以当选择它可以在窗口中显示IPAddress,如Wscript.echo?

get-netipaddress | Where-Object -FilterScript {$_.AddressFamily -match "IPv4"} |Where-Object -FilterScript {$_.InterfaceAlias -notlike "Loopback*"}| Where-Object {$_.IPAddress -like "192.168*"} | Select-Object -ExpandProperty IPAddress

建议修复不工作,并希望避免通过。vbs使用。ps1

这里有几个选项…

选项1:只使用VBScript

下面的示例假设您真正需要的唯一过滤器是"192.168*",因为在我的测试中,其他过滤器似乎没有任何区别。然而,YMMV,所以你可能不得不调整这个脚本:

Set oWMI = GetObject("winmgmts:\.rootcimv2")
Set oItems = oWMI.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")

For Each oItem in oItems
IP = oItem.IPAddress(0)
If Left(IP,7) = "192.168" Then IPList = IPList & IP & VBCRLF
Next
MsgBox IPList

选项2:两个脚本文件(。VBS和。ps1)

下面的示例使用临时文件在脚本之间传递数据。这使用了你所有的原始过滤器,但与只使用VBScript的版本相比,速度非常慢。

IPList.vbs

Set oWSH = CreateObject("Wscript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")
oWSH.Run "Powershell.exe -ExecutionPolicy Bypass -File .IPList.ps1",0,True
Temp  = oWSH.ExpandEnvironmentStrings("%Temp%")
Set oFile = oFSO.OpenTextFile(Temp & "IPList.txt",1)
IPList = oFile.ReadAll
oFile.Close
MsgBox IPList

IPList.ps1

get-netipaddress | Where-Object -FilterScript {$_.AddressFamily -match "IPv4"} |Where-Object -FilterScript {$_.InterfaceAlias -notlike "Loopback*"}| Where-Object {$_.IPAddress -like "192.168*"} | Select-Object -ExpandProperty IPAddress | Out-File -Encoding ascii "$env:TEMPIPList.txt"

最新更新