Powershell 到 .vbs [重复]

Posted

技术标签:

【中文标题】Powershell 到 .vbs [重复]【英文标题】:Powershell to .vbs [duplicate] 【发布时间】:2021-11-04 18:05:58 【问题描述】:

您好,我可以将以下内容转换为 .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

推荐的修复方法不起作用,并希望避免使用 .ps1 到 .vbs

【问题讨论】:

【参考方案1】:

这里有几个选项...

选项 1:仅 VBScript

下面的示例假定您真正需要的唯一过滤器是“192.168*”,因为其他过滤器似乎对我的测试没有任何影响。但是,YMMV,所以你可能需要调整这个脚本:

Set oWMI = GetObject("winmgmts:\\.\root\cimv2")
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:TEMP\IPList.txt"

【讨论】:

.vbs 非常感谢!!

以上是关于Powershell 到 .vbs [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Vbs脚本将本地文件上传到Azure存储账户

VBS产生随机不重复的数字

powershell 来自https://stackoverflow.com/questions/1862554/get-childitem-recurse-as-a-parameter-in-pow

VBS 脚本在 Access 数据库中不起作用

PowerShell 批量拷贝本地文件到远程多台主机

在powershell中展平数组