【问题标题】:How to put/replace one word in selected place in file?如何在文件中的选定位置放置/替换一个单词?
【发布时间】:2017-10-06 11:41:51
【问题描述】:

我想在我的 PowerShell 脚本中调用 telnet.vbs。

该脚本应在 foreach 循环的每次迭代中重新启动主机 $line。

telnet.vbs脚本:

 Option explicit
    Dim oShell
    set oShell= Wscript.CreateObject("WScript.Shell")"
    oShell.Run "telnet"
    WScript.Sleep 3000
    oShell.Sendkeys "open $line~"
    WScript.Sleep 5000
    oShell.Sendkeys "y~"
    WScript.Sleep 5000
    oShell.Sendkeys "fusion~"
    WScript.Sleep 4000
    oShell.Sendkeys "tnniw~"
    WScript.Sleep 4000
    oShell.Sendkeys "shutdown -r -t 0~"
    Wscript.Quit}

我想在循环中运行这个脚本,在 telnet.vbs 内部,$line 应该在每次迭代中被替换:

foreach($line in $servers)
{
   & .\telnet.vbs
}

我试过了:

(Get-Content .\telnet.vbs).Replace("(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))","$line") | Set-Content .\telnet.vbs

但它什么也没做。肯定是语法错误。

【问题讨论】:

  • 如何将服务器名称传递给VBScript as a parameter?
  • 我不知道如何在 PowerShell 中进行操作。

标签: powershell


【解决方案1】:

将服务器名称作为参数传递给 VBScript 文件。像这样,

# Powershell
$servers = get-content c:\my\servers\list.txt
foreach($s in $servers)
{
   # Call the VBScript and pass each server as argument
   & c:\my\scripts\telnet.vbs $s
}

' VBScript
Option explicit
Dim oShell
set oShell= Wscript.CreateObject("WScript.Shell")"

' Build the open command string by catenating "open",
' server name from script arguments and "<enter>" together
dim openCmd
set openCmd = "open " & WScript.Arguments(0) & "~"

oShell.Run "telnet"
WScript.Sleep 3000
oShell.Sendkeys openCmd
WScript.Sleep 5000
oShell.Sendkeys "y~"
WScript.Sleep 5000
oShell.Sendkeys "fusion~"
WScript.Sleep 4000
oShell.Sendkeys "tnniw~"
WScript.Sleep 4000
oShell.Sendkeys "shutdown -r -t 0~"
Wscript.Quit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 2021-02-07
    相关资源
    最近更新 更多