2016-10-31 5 views
0

PowerShellウィンドウのサービスを停止するためにPowerShell関数の下を実行すると正常に動作しています。 しかし、同じ機能をスケジュールしてタスクスケジューラから実行すると、サービスが停止せず、イベントビューアにもイベントがキャプチャされません。タスクスケジューラから.ps1関数を実行すると正しい結果が得られません。

#Function to stop the service 
function StopService { 
    [cmdletbinding()] 
    Param(
     [Parameter(Position=0, Mandatory=$True, HelpMessage="ServiceName")] 
     [string]$ServiceName, 
     [Parameter(Position=1, Mandatory=$True, HelpMessage="ComputerName")] 
     [string]$ComputerName 
    ) 

    Invoke-Command -ComputerName $ComputerName -ScriptBlock { 
     Param($Service) 
     Stop-Service $Service 
    } -ArgumentList $ServiceName 
} 

タスクスケジューラの詳細:

enter image description here

+3

スクリプトは関数を定義するだけで、実際には実行されません。実行するスクリプトの最後の行に 'StopService $ args [0] $ args [1]'を入れてください –

+0

@ MathiasR.Jessenが指摘するように、あなたのスクリプトファイルは 'StopService'という関数を定義していますが、 。 –

答えて

0

取り除く(または)それが正常に動作している.ps1というファイルから機能をFunctionNameがコメントした後。今私は問題なしでタスクスケジューラからそれを実行することができます。

#Function to stop the service 
#Function StopService 
# { 
    [cmdletbinding()] 
    Param 
    (
    [Parameter(Position=0, Mandatory=$True,HelpMessage="ServiceName")] 
    [string]$ServiceName, 
    [Parameter(Position=1, Mandatory=$True,HelpMessage="ComputerName")] 
    [string]$ComputerName 
    ) 

Invoke-Command -ComputerName $ComputerName -ScriptBlock {param($Service) Stop-Service $Service} -ArgumentList $ServiceName 

# } 
関連する問題