Включение powershell в vbscript

Вопрос: У меня есть сценарий powershell, который я вызываю, используя файл.vbs. Это уменьшает усилия пользователя, чтобы каждый раз перейти на cmd, введите powershell и затем вызовите файл.ps1. Скрипт vbs напрямую открывает powershell в новом окне cmd, вызывающем файл ps1. Сценарий VB: Set objShell = CreateObject("Wscript.Shell") objShell.Run("powershell.exe -noexit C:Scriptsanydrive.ps1") Теперь я хочу, чтобы я смог вставить

Вопрос:

У меня есть сценарий powershell, который я вызываю, используя файл.vbs. Это уменьшает усилия пользователя, чтобы каждый раз перейти на cmd, введите powershell и затем вызовите файл.ps1. Скрипт vbs напрямую открывает powershell в новом окне cmd, вызывающем файл ps1.

Сценарий VB:

Set objShell = CreateObject(«Wscript.Shell») objShell.Run(«powershell.exe -noexit C:Scriptsanydrive.ps1»)

Теперь я хочу, чтобы я смог вставить файл .ps1 в файл .vbs, чтобы у меня был один файл.vbs, который я могу распространять среди пользователей, а не иметь 2 отдельных файла.

Лучший ответ: да

Вы можете делать то, что вы просите. Самый простой способ – кодировать его как строку base64, возможно, что-то вроде этого (это одно время):

$script = Get-Content C:Scriptsanydrive.ps1 -Raw $bytes = [System.Text.Encoding]::Unicode.GetBytes($script) $encoded = [Convert]::ToBase64String($bytes) $encoded | clip # copy it to the clipboard

Затем вы вставляете его в кодировку VBScript.

Вы бы назвали powershell следующим образом:

powershell.exe -NoExit -EncodedCommand $e

($e в этом случае относится к закодированной командной строке или переменной VBscript, которая содержит ее).

Но почему?

Если вы не хотите, чтобы пользователи открывали PowerShell и вручную загружали файл, и вам нужно что-то, на что они могут дважды щелкнуть, почему бы просто не сделать ярлык для них? Ярлык будет просто нацелен на ту же самую командную строку, которую вы вызываете из VBscript.

Ответ №1

Я ненавижу, когда люди спрашивают, почему, а затем предлагают другой путь, который не достигает цели. Вот причина, почему для этой цели. Диспетчер операций системного центра позволяет вам распространять скрипты на клиента, поэтому вам не нужно хранить скрипты на клиентах, но он будет распространять только vbs, а не power shell, и многие люди пишут power shell лучше, чем vbs, или вообще не пишут vbs. Таким образом, встраивание сценария power shell в оболочку vbs позволит достичь цели распространения сценариев и все же позволит сценарию писать сценарий в кодировке, которую он знает.

Оцените статью
Добавить комментарий