运行依赖于OS和IF服务的命令

时间:2016-05-09 16:06:17

标签: powershell iis powershell-v2.0

我有两个脚本,如下所示,可以获取IIS的网站。

IIS 6 -

$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

IIS 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 6脚本(Windows 2003主机),因为Web管理模块不适用于II6。

我需要添加一个if语句,该语句将添加逻辑以运行依赖于主机操作系统的正确代码,以及W3SVC服务(万维网发布服务)是否存在(运行或停止)。一些事情

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 个答案:

答案 0 :(得分:1)

使用Caption而不是Name。除此之外,您只需将例程插入您的伪代码:

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

对于服务,您可以使用Get-Service cmdlet:

if (Get-Service -Name w3svc -ErrorAction SilentlyContinue) {
  ...
}
如果Get-WmiObject cmdlet在PowerShell v2中不可用(不确定),则Win32_Service类上的

Get-Service

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