我尝试使用PowerShell从另一台服务器在远程服务器上创建IIS网站。当我执行它时,该站点已在本地服务器中创建,而不是在远程服务器中创建。 这是powershell函数。它位于function.ps1文件中。
function CreateIISWebsite
{
param (
[string]$iisAppName,
[string]$directoryPath,
[string]$iisAppPoolName,
[string]$rhost,
[string]$un,
[string]$pw
)
$MSDeployExe = "C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe"
Import-Module WebAdministration
$iisAppPoolDotNetVersion = "v4.0"
#navigate to the app pools root
cd IIS:\AppPools\
#check if the app pool exists
if (Test-Path $iisAppPoolName -pathType container)
{
Remove-Item $iisAppPoolName -recurse
}
#create the app pool
$appPool = New-Item $iisAppPoolName
$appPool | Set-ItemProperty -Name "managedRuntimeVersion" -Value $iisAppPoolDotNetVersion
Set-ItemProperty IIS:\AppPools\$iisAppPoolName managedRuntimeVersion v4.0
Set-ItemProperty -Path IIS:\AppPools\$iisAppPoolName -Name processmodel.identityType -Value 3
Set-ItemProperty -Path IIS:\AppPools\$iisAppPoolName -Name processmodel.username -Value $un
Set-ItemProperty -Path IIS:\AppPools\$iisAppPoolName -Name processmodel.password -Value $pw
#navigate to the sites root
cd IIS:\Sites\
#check if the site exists
if (Test-Path $iisAppName -pathType container)
{
Remove-Item $iisAppName -recurse
}
#create the site
$iisApp = New-Item $iisAppName -bindings @{protocol="http";bindingInformation=":80:" + $iisAppName} -physicalPath $directoryPath
$iisApp | Set-ItemProperty -Name "applicationPool" -Value $iisAppPoolName
}
我这样称呼这个函数。
。 ./function.ps1 CreateIISWebsite -iisAppName $ sitename -directoryPath $ path -iisAppPoolName $ appPool -rhost $ rhost -un $ un -pw $ pw
即使我将远程服务器的ip作为rhost传递,我也不知道我需要在哪里使用它。因此IIS站点正在本地创建成功。不使用rhost参数,它不会在服务器中创建。所以我需要在代码中的正确位置使用该参数。 我在两台服务器上都安装了Web Deploy。 请给我一个解决方案。
答案 0 :(得分:2)
在本地和远程系统上配置PowerShell远程处理(使用Enable-PSRemoting -Force
,然后使用Invoke-Command
将脚本部署到远程计算机。
<强>更新强>
e.g。 在本地和远程系统上,请使用提升的Powershell命令提示符:
Enable-PSRemoting -Force
如果您还没有这样做,请记住Set-ExecutionPolicy
(See here for more info)适用于远程服务器上的某些内容。
要从本地计算机调用远程计算机上的powershell脚本,您可以执行以下操作:
Invoke-Command -ComputerName server01 -File c:\path\to\script.ps1