【发布时间】:2016-11-29 14:58:55
【问题描述】:
我正在尝试让 PowerShell 在提供凭据后停止并启动远程计算机上的 AppPool。
启动应用程序池的功能:
Function fnStartApplicationPool([string]$appPoolName)
{
import-module WebAdministration
if((Get-WebAppPoolState $appPoolName).Value -ne 'Started')
{
Start-WebAppPool -Name $appPoolName
}
}
停止应用程序池的功能:
Function fnStopApplicationPool([string]$appPoolName)
{
import-module WebAdministration
if((Get-WebAppPoolState $appPoolName).Value -ne 'Stopped')
{
Stop-WebAppPool -Name $appPoolName
}
}
我的代码不起作用:
if ($pathback -eq $false)
{
#Copying Data from Source to Destination
copy-Item -Recurse $backupsrc -Destination $backupdes
write-host "Backup Successful"
#Validating the apppool value
import-module WebAdministration
if((Get-WebAppPoolState $appPoolName).Value -ne 'Stopped')
{
#Stop apppool
Stop-WebAppPool -Name $appPoolName
write-host "AppPool Stopped Successfully"
}
#Copying Data from Source to Destination
#Start apppool
Start-WebAppPool -Name $appPoolName
write-host "AppPool Started Sucessfully"
cd c:\
}
【问题讨论】:
-
那么当您尝试该解决方案时发生了什么?您是否收到任何错误消息或脚本根本无法运行?
-
它工作得很好,但现在我在每台服务器上单独手动运行它例如:-我想从服务器 A 停止服务器 B 中的应用程序池。所以我认为我需要提供一些信誉?如何做到这一点
-
如果您的帐户在两台服务器上都拥有权限,则无需传递凭据。只需创建一个接受
$appPoolName参数的脚本块,将您的函数放入其中,然后遍历运行invoke-command 的服务器列表并传递您的脚本块和应用程序池名称。 -
我刚刚更新了最后一个功能,请检查
-
好的。这些更改都不会改变我为您列出的在多台服务器上运行脚本的方法。将您拥有的任何代码包装在一个脚本块中,并使用 invoke-command 在多个服务器上运行它。
标签: powershell iis-7 powershell-2.0