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-GET-服务,停止,服务,启动服务 然后命名

在这行代码 意外令牌表达式或语句:

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做的是在一行中引用两个字符串对象而没有任何操作符连接它们。这是例外的原因。

告诉PowerShell中,要执行字符串命令,你有几种选择:

一种选择是通过命令作为一个字符串到Invoke-Expression的cmdlet:

Invoke-Expression "$Service_Action $Service_Name" 

或者,您可以使用调用运算符&,它还告诉powershell将命令视为字符串。在这种情况下,你不能给小命令和参数在一个单一的字符串,但有两种:

& $Service_Action $Service_Name 
+0

更新脚本... –