2015-09-18 169 views
0

我試圖運行這個命令:PowerShell的變量APPCMD

$appcmd = "C:\windows\system32\inetsrv\appcmd.exe" 
$env = "dev1" 
$IP = "10.10.10.10" 

& $appCMD set config -section:system.applicationHost/sites /+"[name='customapp1$env'].bindings.[protocol='http',bindingInformation='$IP:80:customapp1$env.domain.com']" /commit:apphost 

這裏的問題是在APPCMD命令的$ IP的變量。它確實修改了綁定屬性,但是當我在IIS管理器中查看它時,它會顯示「綁定信息不正確」,並且只顯示其他所有字段都爲空的HTTP。

如果我真的鍵入IP地址,例如:

& $appCMD set config -section:system.applicationHost/sites /+"[name='customapp1$env'].bindings.[protocol='http',bindingInformation='10.10.10.10:80:customapp1$env.domain.com']" /commit:apphost 

它只是罰款(包括其他的 「$ ENV」 變量)。我怎樣才能讓這個$ IP變量正確傳遞?

我真的很感激它!

+1

嘗試使用'$ {IP}'語法代替。 –

+0

你是男人!謝謝 - 這工作。爲了我自己的好奇心,爲什麼這會起作用? –

+1

這是因爲以下冒號。 PowerShell使用它來定義範圍。使用括號可以解除字符的關聯,因此可以自行評估。 – Matt

回答

2

使用${IP}來精確指定變量名稱。 :實際上被認爲是變量名稱的一部分,它將範圍或PowerShell驅動器與變量名稱分開。因此,Powershell將該變量解釋爲$ip:80,範圍或驅動器爲ip,名稱爲80。由於ip未解析爲範圍或驅動器,因此值爲空。