Скрипт Powershell, как запустить несколько строк кода в новом окне PowerShell с помощью start-process - PullRequest
1 голос
/ 28 января 2020

У меня есть основной сценарий меню c с параметрами для отображения информации о конкретном компьютере c. Пользователям предлагается ввести права администратора домена и имя компьютера (имя компьютера сохраняется в $ ComputerName) при запуске сценария, и это работает как задумано.

Все опции в скрипте открывают второе окно с Start-Process, где выполняется код.

пример:

start-process powershell.exe -argument "-noexit -nologo -noprofile -command

Я хочу, чтобы первая опция в моем скрипте открыла новое окно, запустила

Get-WmiObject Win32_PhysicalMemory -computername $ComputerName

и извлекла номер компонента RAM (в $ Partnumber), и дать пользователям возможность искать его в Chrome с помощью Google.

Моя проблема в том, что (кроме того, что я новичок в кодировании), в новом окне запускается только первая строка кода, остальная часть кода, кажется, возвращается к главному окну.

Первый вариант выглядит следующим образом:

start-process powershell.exe -argument "-noexit -nologo -noprofile -command Get-WmiObject Win32_PhysicalMemory -computername $ComputerName"
$ToChrome = Read-Host 'Do you wish to Google the partnumber? Y or N'
if ($ToChrome -eq 'j') {
    $Partnumber = Get-WmiObject Win32_PhysicalMemory -computername $ComputerName | select -expandproperty Partnumber
    Start-Process "chrome.exe" ("https://www.google.com/?q=$Partnumber")
} 

if ($ToChrome -eq 'n') {
    Continue
}

Вся информация об оперативной памяти отображается в «новом окне», как я хотите, но в главном окне отображается запрос «Google it», есть ли способ обойти это, чтобы все строки кода запускались в «новом окне»?

Это мой первый пост между прочим.

1 Ответ

0 голосов
/ 28 января 2020

Если вы хотите, чтобы все было сделано в новом окне, создайте сценарий и выполните его за один вызов Start-Process

$script = {
  $ComputerName = $env:COMPUTERNAME  
  $ToChrome = Read-Host 'Do you wish to Google the partnumber? Y or N'
  if ($ToChrome -eq 'j') {
    $Partnumber = (Get-WmiObject Win32_PhysicalMemory -computername $ComputerName | select -expandproperty PartNumber)[0]

    Start-Process "chrome" "https://www.google.com/search?q=$Partnumber"
  } 
}

Start-Process powershell -ArgumentList $script

BTW ... используя google.com/search?q= фактически начнет поиск вместо открытия chrome сайта Google с номером детали в окне поиска.

...