Как мне передать имя компьютера в качестве переменной в PowerShell -ComputerName из пакетного файла?

#powershell-3.0

#powershell-3.0

Вопрос:

Я безуспешно искал правильный ответ.

У меня есть командный файл, который выполняет сценарий PowerShell.

Пакетный файл — это;

 PowerShell C:scriptsGetStatus.ps1
  

Работающий скрипт PowerShell — это;

 Get-Service -Name svcUdpLogger -Computer Name server01 | Start-Service
  

Что я ищу, так это как мне передать server01 в качестве переменной в этот скрипт из командного файла.

В зависимости от того, остановилась ли серверная служба, этот пакетный файл будет запущен автоматически для перезапуска этой службы.

Я пытался использовать следующее;

 param([string]$computername=)
  

Я продолжаю получать недопустимый аргумент.

Спасибо,

ОБНОВЛЕНИЕ — Я думаю, что решил проблему. Возможно, это неправильный способ сделать это, однако он работает таким образом;

 PowerShell C:scriptsGetStatus.ps1 -ComputerName server01
  

Если есть более элегантный способ сделать это, я был бы признателен за ясность!

Спасибо,

Ответ №1:

Я думаю, проблема была в том, как вы вызывали скрипт.

Если вы хотите пофантазировать:

  param([string]$computername)

 if ($computername) { 
    Write-Host "Starting Service on: $computername"

    try {
        Get-Service -Name svcUdpLogger -ComputerName $computername -ErrorAction Stop | Start-Service -ErrorAction Stop
        Write-Host "...Service Started"
    } catch {
        $ErrorMessage = $_.Exception.Message
        Write-Host "...Error Occurred Starting Service: $ErrorMessage"
    }

 } else {
    Write-Host "Computer Name Not Passed on the Command Line"
 }
  

И вызвать его следующим образом:

 PowerShell C:scriptsGetStatus.ps1 HostName
  

Комментарии:

1. Отлично! Спасибо. Я не представлял, что смогу написать сценарий PowerShell с кодировкой типа C # / Java. Это было очень полезно.