41

現在、このpowershellスクリプトを実行しようとしています:

Param (
    $websiteName,
    $physicalPath
)

import-module WebAdministration
$website = get-website | where-object { $_.name -eq "$websiteName" }
if($website -eq $null){
    New-webapppool -Name "$websiteName"
    Set-WebConfiguration -filter "/system.applicationHost/applicationPools/add[@name='$websiteName']" -PSPath IIS:\ -value (@{managedRuntimeVersion="v4.0"})
    New-website -Name "$websiteName" -PhysicalPath "$physicalPath" -ApplicationPool "$websiteName"
    start-website "$websiteName"
}

次のコマンドを使用してスクリプトを実行します。

& .\InstallWebsite.ps1 -websiteName "MyWebsite" -physicalPath "C:\TEST\MyWebsite"

if ステートメント内の最後のコマンドを除いて、すべて正常に動作します。

start-website "$websiteName"

そのコマンドを実行すると、次のエラーが表示されますが、トラブルシューティングを成功させることができませんでした。

Start-Website : Cannot create a file when that file already exists. (Exception from HRESULT: 0x800700B7)
At line:1 char:14
+ start-website <<<<  "MyWebsite"
    + CategoryInfo          : InvalidOperation: (:) [Start-Website], COMException
    + FullyQualifiedErrorId : InvalidOperation,Microsoft.IIs.PowerShell.Provider.StartWebsiteCommand

重要な場合は、Web サイトを削除する次のスクリプトもあります。

Param (
    $websiteName,
    $appPoolName
)

import-module WebAdministration
$website = get-website | where-object { $_.name -eq "$websiteName" }
if($website -ne $null){
    remove-website -Name "$websiteName"
    remove-webapppool -Name "$websiteName"
}

次のコマンドで実行します。

& .\UninstallWebsite.ps1 -websiteName "MyWebsite" -appPoolname "MyWebsite"
4

4 に答える 4

72

エラーメッセージ:

Start-Website : ファイルが既に存在する場合、ファイルを作成できません。

...通常、同じIPアドレス、ポート、およびそれらを使用している場合はホストヘッダーで実行されているサイトが既に存在する場合、バインディングの競合があることを意味します。

IIS MMC で新しいサイト バインディングを確認し、まったく同じバインディングを使用しているものがないか調べます。

于 2012-06-23T00:05:38.620 に答える
0

詳細なエラー トレースを有効にして、理由を見つけます。私の場合、それはmimeTypeデフォルトのものを複製した要素でした。

于 2019-02-01T06:59:32.157 に答える
0

同じエラーで問題があります。これは、別のエージェント マシンから Invoke-Command を使用して、リモートで IIS サイトに Add-WebBinding を実行しようとしているときに発生します。

それは私のために働いています、多分それは誰かにも役立ちます:

$Mutex = New-Object -TypeName System.Threading.Mutex($false, "Global\Mutex")    
if ($Mutex.WaitOne(300000)) {
   #For example
   #$Command = {
        #New-WebBinding -name $iis_site_name -Protocol https -HostHeader             
           #$iis_host_name -Port 443 -SslFlags 1
   #}
   #Invoke-Command -Command $Command
} else {
   Write-Warning "Timed out acquiring mutex!"
}
    
$Mutex.Dispose()
于 2020-08-05T19:32:59.520 に答える