2009-03-12 41 views
1

私はVB.NETを初めて使い、サーバー名の入力を求めるプロンプトを表示し、そのコンピューター上のIISを再起動するプログラムを作成しようとしています。VB.NETでサービスを再起動するには?

問題1)名前空間System.ServiceProcessが認識されません。問題2)コードに助けが必要で、servernameをsubに渡す必要があります。

あなたが...右のプロジェクトをクリックし、[参照の追加]をクリックして System.ServiceProcessアセンブリへの参照を追加し、このような Mainメソッドに渡されたコマンドライン引数を取得する必要があります
Imports System 
Imports System.ServiceProcess 
Imports System.IO 
Imports System.Threading 

Class RestartIIS 
    Shared Sub Main() 
     Run() 
    End Sub 

    Public Sub Run() 
     Console.WriteLine("Please enter the Server Name: ") 
     Dim ServerName As String = Console.ReadLine() 

     Dim sc As ServiceController = New ServiceController("W3SVC") 

     sc.Stop() 
     Thread.Sleep(2000) 
     sc.Start() 

     Console.Write("Press Enter to Exit") 
     Console.ReadLine() 
    End Sub 
End Class 

答えて

2

Imports System 
Imports System.ServiceProcess 
Imports System.IO 
Imports System.Threading 

Class RestartIIS 
    Shared Sub Main(ByVal commandLineArgs() as String) 
     Run(commandLineArgs(0)) 
    End Sub 

    Public Sub Run(ByVal machineName as String) 
     Console.WriteLine("Please enter the Server Name: ") 
     Dim ServerName As String = Console.ReadLine() 

     Dim sc As ServiceController = New ServiceController("W3SVC", machineName) 

     sc.Stop() 
     Thread.Sleep(2000) 
     sc.Start() 

     Console.Write("Press Enter to Exit") 
     Console.ReadLine() 
    End Sub 
End Class 
+0

この質問は練習問題だと思われるので、完全に動作するコードを投稿しないともっと便利になるはずです。 – Tomalak

+0

Mehrdad、私はこれを実行しようとしたとき、私は共有メソッド内で実行を呼び出すことができないと言っています。 "は、クラス" –

+0

@Tomalak "の明示的なインスタンスを持たない共有メソッドまたは共有メンバ初期化子の中からクラスのインスタンスメンバを参照することはできません。これは宿題よりもスクリプト管理のタイプの質問に似ています。私は宿題がサービスやこの種のものを扱うとは思わない。 –

0
ServiceControl.Stop() 
Do 
    ServiceControl.Refresh() 
    If ServiceControl.Status = ServiceControllerStatus.Stopped Then 
     ServiceControl.Start() 
     Exit Do 
    End If 
Loop 
+1

このコードスニペットがなぜこの質問に答えるのかが、質問をしている人だけでなく、後でこの質問を見つける人々にとっても役立つだろうという少しの説明 –