我正在使用以下脚本并正确创建输出文件,但它是空的。我不确定它到底缺少什么。这是我第一次尝试使用工作流程。
workflow DisableIISParallel
{
$ScriptPath = "C:\Scripts\Server_Lists"
$OLD = "Legacy-Servers"
$OldList = Get-Content "$ScriptPath\$OLD.txt"
$objHost=$Records.Length
function DisableIIS ($appName) {
$objHostStr = [System.Net.Dns]::GetHostEntry([string]$objHost).HostName
Invoke-Command -ComputerName $objHostStr { iisreset /stop }
Set-Service -Name W3SVC -StartupType Disabled -Status Stopped -ComputerName $objHostStr
Get-WmiObject -Class win32_service -ComputerName $objHostStr |
where { $_.name -eq "W3SVC" } |
Format-Table -Property @{Expression={$_.PSComputerName};Label="Server";width=18},
@{Expression={$_.Name};Label="Service";width=45},
@{Expression={$_.StartMode};Label="Mode";width=10},
@{Expression={$_.State};Label="State";width=10},
@{Expression={$_.Status};Label="Status";width=10} |
Format-List | out-string -s | ? {$_} | Out-File C:\Scripts\Output\$appName.log -Append
Write-Output "" | Out-File C:\Scripts\Output\$appName.log -Append
}
foreach -parallel($objHost in $OldList)
{
$appName = $OLD
DisableIIS $appName
}
}
DisableIISParallel
答案 0 :(得分:0)
这个位不对:
Get-WmiObject -Class win32_service -ComputerName $objHostStr |
where { $_.name -eq "W3SVC" } |
Format-Table -Property @{Expression={$_.PSComputerName};Label="Server";width=18},
@{Expression={$_.Name};Label="Service";width=45},
@{Expression={$_.StartMode};Label="Mode";width=10},
@{Expression={$_.State};Label="State";width=10},
@{Expression={$_.Status};Label="Status";width=10} |
Format-List | out-string -s | ? {$_} | Out-File C:\Scripts\Output\$appName.log -Append
您不应将一个格式命令(Format-Table)的输出运行到另一个格式命令(Format-List)中。
试试这个(假设您需要表格格式 - 如果不是,请将Format-Table更改为Format-List):
Get-WmiObject -Class win32_service -ComputerName $objHostStr |
where { $_.name -eq "W3SVC" } |
Format-Table @{Expression={$_.PSComputerName};Label="Server";width=18},
@{Expression={$_.Name};Label="Service";width=45},
@{Expression={$_.StartMode};Label="Mode";width=10},
@{Expression={$_.State};Label="State";width=10},
@{Expression={$_.Status};Label="Status";width=10} >> C:\Scripts\Output\$appName.log
并传递函数所需的所有变量,例如:
function DisableIIS ($appName, $objHost) {
...
}
foreach -parallel($objHost in $OldList)
{
$appName = $OLD
DisableIIS $appName $objHost
}