标签: vbscript

通过VBScript和PowerShell使用WMI时的差异

我有一个测试Windows XP SP3干净安装与电源外壳.如果我从PowerShell和VBScript访问WMI,这是一个非常奇怪的区别.来自powershell:

Get-WmiObject 'Win32_OperatingSystem" | select Caption
Run Code Online (Sandbox Code Playgroud)

这正确显示"Windows XP Professional".和编写为VBScript的代码相同:

WScript.Echo( GetObject( "winmgmts:Win32_OperatingSystem" ).Caption )
Run Code Online (Sandbox Code Playgroud)

显示"null"O_O.为什么会这样?

vbscript powershell wmi

3
推荐指数
1
解决办法
1833
查看次数

document.getElementbyId:需要对象

我有一个是试图获得一个传统的ASP页面上的一些代码,innerHTML一个的<div>元素.

    Dim oElm 
    Set oElm = document.getElementById("screenDiv")

    if oElm Is Nothing then
        '''
    else
        document.getElementById("screenDiv").innerHTML = ""
    end if
Run Code Online (Sandbox Code Playgroud)

我已经尝试了上述但我得到了Object Required错误.

我需要做些什么来解决这个错误?

vbscript

3
推荐指数
1
解决办法
3万
查看次数

使用VBScript更改快捷方式中的目标

我正在尝试创建一个VBScript来更改链接中的目标

目前的目标是

"C:\Program Files\Hyland\Application Enabler\AEClient.exe"
Run Code Online (Sandbox Code Playgroud)

我想要新的目标

"C:\Program Files\Hyland\Application Enabler\AEClient.exe" \\rrscwpappimg02\Workflow\CWF\AppEnabler\CombinedCWF.xml
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止的脚本.我在第4行char 78上一直收到错误:

Set wsc = WScript.CreateObject("WScript.Shell")
Set lnk = wsc.CreateShortcut(wsc.SpecialFolders("desktop") & "\AE Client.LNK")

lnk.targetpath = "C:\Program Files\Hyland\Application Enabler\AEClient.exe"      \\rrscwpappimg02\Workflow\CWF\AppEnabler\CombinedCWF.xml
lnk.description = "AE Client"
lnk.workingdirectory = "C:\Program Files (x86)\Hyland\Application Enabler\"
lnk.save`
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

即使只是一个脚本来创建在桌面上工作的快捷方式也行.

vbscript shortcut target

3
推荐指数
1
解决办法
2万
查看次数

使用ExecuteGlobal导入.vbs函数库文件时,为什么VBScript会说"无效字符"?

我在VBscript中遇到"无效字符"错误!特别是在这段代码中:

'*******************************************************************
'Import Code
'by Cheyne Wallace
'November 2008

'When using only VBscript (not QTP), this code will import any function library passed into it.
'Copy this function into a file, then use it to bring in various other function libraries.
'Usage:
'   Import "Library.vbs"

Sub Import(strFile)
    Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
    Dim wss : Set wss = CreateObject("WScript.Shell")
    strFile = wss.ExpandEnvironmentStrings(strFile)
    strFile = objFSO.GetAbsolutePathName(strFile)
    Set objFile = objFSO.OpenTextFile(strFile, 1)
    ExecuteGlobal objFile.ReadAll
    objFile.Close : Set objFSO = nothing …
Run Code Online (Sandbox Code Playgroud)

import vbscript invalid-characters character-encoding importerror

3
推荐指数
1
解决办法
2万
查看次数

Windows VBScript - 使用Eval执行代码

我的vbscript文件中有一个字符串.我想将字符串作为代码执行.例如,字符串可以是'msgbox("hello")'.但是,eval函数只接受数字或字符串操作.我该如何执行代码?我总是可以创建一个新文件并将该字符串写入文件,执行该文件并删除它,但我正在寻找一种更好的方法来执行此操作.

windows vbscript eval

3
推荐指数
1
解决办法
4412
查看次数

是否可以像Windows上的另一个用户一样无头地(在bat脚本中)运行命令?

我想让.bat脚本作为不同的用户执行特定任务并无头地运行(不允许用户输入或提示).有没有办法用.bat脚本执行此操作?请注意,我不能使用PowerShell,因为默认情况下我们不必安装所有必须支持的Windows操作系统.

我在我的脚本中考虑了RUNAS,但它显然需要交互式输入.

在Linux中,等价的成语是:

echo "Password" | sudo -S -u username "command"
Run Code Online (Sandbox Code Playgroud)

有关Windows .bat脚本的任何建议吗?

更新:我相信vbscript在Windows上始终可用,所以如果通过vbscript提供纯粹的无头解决方案,那么这也很好!

vbscript cmd batch-file

3
推荐指数
1
解决办法
1万
查看次数

从vbscript中的函数返回二维数组

我正在处理一个程序问题.我试图做的是有一个函数接受来自用户的输入并将该数据存储在一个数组中用于小测试目的它是一个3 x 3数组我已经通过回显所有存储的值来使函数内的数组工作.然而,当我试图将数组返回到调用它的子时,我得到不匹配错误,我不知道我做错了什么.

    Sub SubroutineA()
          Dim Array(2,2)

          Array = GetInfo()

    End Sub

    Function GetInfo()
          Dim FunctionArray(2,2)
          {input all data into array}
          GetInfo = FunctionArray()
    End Function
Run Code Online (Sandbox Code Playgroud)

我能得到的任何帮助都会很棒,因为这对我来说是个新手.

vbscript return function multidimensional-array

3
推荐指数
1
解决办法
2125
查看次数

如何从托管的脚本中关闭父cmd控制台窗口?

我在注册表中使用以下命令从Windows资源管理器的上下文菜单本地运行vbscript:

cmd /T:1F /K "cscript.exe //nologo "C:\Some Path\Some Folder\MyScript.vbs" "%1""

我使用/K交换机有两个原因:在脚本错误的情况下保持控制台窗口打开,并改变控制台的背面和前面的颜色(这实际上是通过/T交换机完成的,但出于某种原因,我不这样做了解,/C使用开关时颜色会恢复为默认值.

我的问题:如何在正常执行结束时关闭主机控制台窗口(附加到"cmd.exe"进程)?WScript.Quit显然会返回控制台提示符.我考虑过基于CommandLine的Win32_Process的WMI查询,但是如果使用相同的参数(即文件)多次调用脚本,那么这不起作用.有没有办法获得最顶层的父进程的id,例如,我可以用它来终止?

windows vbscript cmd

3
推荐指数
1
解决办法
8112
查看次数

日期功能,以mm/dd/yy显示日期

我正在尝试使用VB脚本以mm/dd/yy格式获取日期.

但我找不到任何功能来做这个要求,请问有些人帮我吗?

vbscript date

3
推荐指数
1
解决办法
9416
查看次数

使用PowerShell获取上次Windows Update安装日期

我正在尝试编写一个PowerShell脚本,该脚本将查询Active Directory中的所有服务器并查看应用Windows Update的最后日期.

我遇到了一些麻烦,所以为了完成它,我创建了两个脚本,一个在Powershell中获取服务器,另一个在VBScript中查询最后一个日期.我找到了一个允许我查询上次安装日期的Powershell 模块,但它非常慢,特别是在远程服务器上.

这是PS代码:

Get-ADComputer -Filter 'OperatingSystem -like "*Server*"' -Properties * |
Select-Object Name | Sort-Object Name |
ForEach-Object {
    Get-WUHistory -ComputerName $_.Name | Sort-Object Date,ComputerName -Descending |
    Select-Object -First 1
}
Run Code Online (Sandbox Code Playgroud)

它太慢了,几乎无法使用.

我有一些VBScript,我拼凑在一起,速度快得多.见下文:

On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile ("servers.csv", 1)
server = ""

Do Until file.AtEndOfStream
  line = file.Readline
  server = line
  'wscript.echo server
  Set objSession = CreateObject("Microsoft.Update.Session", server)
  If Err.Number <> 0 Then
    'WScript.Echo …
Run Code Online (Sandbox Code Playgroud)

vbscript powershell windows-update

3
推荐指数
2
解决办法
2万
查看次数