2016-05-09 11 views
0

IISのWebサイトを取得する次の2つのスクリプトがあります。実行コマンドはOSとIFサービスに依存します。

6 IIS -

$website = Get-WmiObject -Class IIsWebServerSetting -Namespace "root\microsoftiisv2" | Select ServerComment | Format-Table -HideTableHeaders | out-file c:\website.txt 
$b = Get-Content -Path C:\website.txt 
$b | ForEach {$_.TrimEnd()} | ? {$_.trim() -ne '' } > C:\website.txt 
$b = Get-Content -Path C:\website.txt 
@(ForEach ($a in $b) {$a.Replace(' ', '')}) > C:\website.txt 
Get-Content C:\website.txt 

はwebadministrationモジュールがII6では使用できませんので、私はIIS 6(Windows 2003のホスト)のための別のスクリプトを持っている7+

Import-Module webadministration 
$a = Get-Website | Select-Object Name 
$a | ForEach-Object { 
$_.name = $_.name.replace(" ","") 
} 
$a | Format-Table -HideTableHeaders | Out-File $DeviceDrive\Apps\NetprobeNT\Auto-monitor\Website.txt 
$b = Get-Content -Path $DeviceDrive\Apps\NetprobeNT\Auto-monitor\Website.txt 
$b | ForEach {$_.TrimEnd()} | ? {$_.trim() -ne '' } > $DeviceDrive\Apps\NetprobeNT\Auto-monitor\Website.txt 
$b = Get-Content -Path $DeviceDrive\Apps\NetprobeNT\Auto-monitor\Website.txt 
@(ForEach ($a in $b) {$a.Replace(' ', '')}) > $DeviceDrive\Apps\NetprobeNT\Auto-monitor\Website.txt 

をIIS。

ホストオペレーティングシステムおよびW3SVCサービス(World Wide Web Publishing Service)が存在する(実行中または停止している)正しいコードを実行するロジックを追加する文を追加する必要があります。行に沿って何か

IF W3SVC is present 
    Check host operating system 
    IF operating system = Windows 2003 
    Run II6 code 
    Else 
    Run II7+ code

私はこのスクリプトのどこから始めるべきかわかりません。 PowerShellとスクリプトは私には新しく、これは私が作成している最初のスクリプトの一部です。どんな助けでも大歓迎です。

私はホストオペレーティングシステムを手に入れることができますが、必要な結果を得るためにどのようにロジックを組み込むのか混乱します。

(Get-WmiObject Win32_OperatingSystem).Name 

答えて

1

使用CaptionではなくNameGet-Serviceコマンドレットは使用できない場合Win32_Serviceクラスの

if (Get-Service -Name w3svc -ErrorAction SilentlyContinue) { 
    ... 
} 

またはGet-WmiObject:サービスのために

if ((Get-WmiObject Win32_OperatingSystem).Caption -eq 'Windows 2003') { 
    # Run II6 code 
} else { 
    # Run II7+ code 
} 

あなたがGet-Serviceコマンドレットを使用することができます:あなたは、単にあなたの擬似コードに次のルーチンを差し込むこと以外PowerShell v2(それについては不明):

if (Get-WmiObject Win32_Service -Filter "Name='w3svc'") { 
    ... 
} 
+0

すばやい回答ありがとうございます。Windows 2003の異なるバージョンつまり、Windows 2003のサービスパック2.どこにも*は必要ないでしょうか?また、どのようにIF文に結合するのですか? –

+0

異なるWindows Serverエディション(StandardやEnterpriseなど)を処理する必要がある場合は、ワイルドカードが必要です。サービスパックの情報がキャプションに表示されません。ステートメントを組み合わせる場合:あなたの宿題を考慮してください。あなたはすでに擬似コードを持っているので、あまりにも難しくはありません。 –

+0

組み合わせてテストしました。私はIF文を第1のIF文の中に入れます。 IveはWindows 2003 *をインストールしようとしましたが、間違っています。ワイルドカードを正しく使用していますか? –

関連する問題