0
## To run the script 
# .\get_status.ps1 -Hostname <host> -Service_Action <action> -Service_Name <name> 

#$Hostname = "hostname" 
#$Service_Action = "Get-Service" 
#$Service_Name = "service_name" 

param(
    [string]$Hostname, 
    [string]$Service_Action, 
    [string]$Service_Name 
) 

$ScriptBlockContent = { 
    param($Service_Action, $Service_Name) 
    & $Service_Action $Service_Name 
    } 

# user credentials 
$Username = "username" 
$Password = "password" 

# To avoid Manual entry of Username and Password 
$Secure_String = convertto-securestring $Password -asplaintext -force 
$User_cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $Username, $Secure_String 

# Create a Session 
$pso = New-PSSessionOption -NoMachineProfile 
$sess = New-PSSession -ComputerName $Hostname -SessionOption $pso -credential $User_cred 

#Run a powershell script in the session. 
Invoke-Command -Session $sess -ScriptBlock $ScriptBlockContent -ArgumentList $Service_Action, $Service_Name 

# Remove session 
Remove-PSSession $sess 

スクリプトを実行するには:元のために予期しないトークン - PowerShellは

.\<script_name>.ps1 -Hostname <host> -Service_Action <action> -Service_Name <name> 

:サービスアクションを取得し、サービス、ストップ・サービス、 サービス-起動し、

名前を付けIS-このコード行の式や文で 予期しないトークン:

Command: Get-Service Servicename 

私はエラーを取得しています

$ScriptBlockContent = { 
     param($Service_Action, $Service_Name) 
     $Service_Action $Service_Name # here is the error 
     } 
+0

'&$ Service_Action $ Service_Name' – PetSerAl

+0

を追加しました。エラーを取得中:$ Service_nameの引数を受け入れる位置パラメータが見つかりません –

+0

完全なエラーメッセージを表示してください。 – PetSerAl

答えて

0
## To run the script 
# .\get_status.ps1 -Hostname <host> -Service_Action <action> -Service_Name <name> 

#$Hostname = "hostname" 
#$Service_Action = "Get-Service" 
#$Service_Name = "service_name" 

param(
    [string]$Hostname, 
    [string]$Service_Action, 
    [string]$Service_Name 
) 

$ScriptBlockContent = { 
    param($Service_Action, $Service_Name) 
    & $Service_Action $Service_Name 
    } 

# user credentials 
$Username = "username" 
$Password = "password" 

# To avoid Manual entry of Username and Password 
$Secure_String = convertto-securestring $Password -asplaintext -force 
$User_cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $Username, $Secure_String 

# Create a Session 
$pso = New-PSSessionOption -NoMachineProfile 
$sess = New-PSSession -ComputerName $Hostname -SessionOption $pso -credential $User_cred 

#Run a powershell script in the session. 
Invoke-Command -Session $sess -ScriptBlock $ScriptBlockContent -ArgumentList $Service_Action, $Service_Name 

# Remove session 
Remove-PSSession $sess`enter code here` 
-1

コマンドを文字列として関数に渡しているので、$Service_Action $Service_Nameで構文的に何を行っているのかは、演算子を1つの行に含めずに2行の文字列オブジェクトを参照することです。これが例外の理由です。

あなたはいくつかのオプションを持っているコマンドとして文字列を実行することを、PowerShellを伝えるには:

一つの選択肢はInvoke-Expressionコマンドレットに1つの文字列としてコマンドを渡すことです:

Invoke-Expression "$Service_Action $Service_Name" 

あるいは、call-Operator &を使用することもできます。これは、powershellにコマンドを文字列として扱うよう指示します。この場合、あなたは、単一の文字列内のコマンドレットと引数を与えることはできませんが、二つで:

& $Service_Action $Service_Name 
+0

更新されたスクリプト... –

関連する問題