2008-11-04 14 views
6

का उपयोग कर आईआईएस 6.0 एप्लिकेशन पूल बनाना एक PowerShell स्क्रिप्ट का उपयोग करके IIS 6.0 पर एक एप्लिकेशन पूल कैसे बना सकता हूं?पावरहेल

यह वही है मैं अब तक के साथ आए हैं है ...

$appPool = [wmiclass] "root\MicrosoftIISv2:IIsApplicationPool" 

धन्यवाद

उत्तर

6

यह सबसे स्पष्ट प्रक्रिया नहीं है, लेकिन यहाँ क्या मेरे लिए काम किया है ..

$AppPoolSettings = [wmiclass]'root\MicrosoftIISv2:IISApplicationPoolSetting' 
$NewPool = $AppPoolSettings.CreateInstance() 
$NewPool.Name = 'W3SVC/AppPools/MyAppPool' 
$Result = $NewPool.Put() 

आपको कॉल() को कॉल करने में कोई त्रुटि हो सकती है, लेकिन इसे एक दूसरे (या तीसरे) समय पर कॉल करना इसे काम करना चाहिए। यह PowerShell V1 और WMI के साथ किसी समस्या के कारण है।

+0

धन्यवाद, बहुत अच्छा काम करता है। मुझे लगता है कि मैंने कोशिश की, लेकिन उस त्रुटि से हटा दिया गया। –

+0

खुशी है कि यह आपके लिए काम करता है। वह त्रुटि विचलित है, लेकिन यह केवल PowerShell का V1 है। –

7

सोचा था कि मैं जिस स्क्रिप्ट के साथ आया था उसे साझा कर सकता हूं। स्टीवन और लियोन जाने के लिए धन्यवाद।

# Settings 
$newApplication = "MaxSys.Services" 
$poolUserName = "BRISBANE\svcMaxSysTest" 
$poolPassword = "ThisisforT3sting" 

$newVDirName = "W3SVC/1/ROOT/" + $newApplication 
$newVDirPath = "C:\" + $newApplication 
$newPoolName = $newApplication + "Pool" 

#Switch the Website to .NET 2.0 
C:\windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -sn W3SVC/ 

# Create Application Pool 
$appPoolSettings = [wmiclass] "root\MicrosoftIISv2:IISApplicationPoolSetting" 
$newPool = $appPoolSettings.CreateInstance() 
$newPool.Name = "W3SVC/AppPools/" + $newPoolName 
$newPool.PeriodicRestartTime = 0 
$newPool.IdleTimeout = 0 
$newPool.MaxProcesses = 2 
$newPool.WAMUsername = $poolUserName 
$newPool.WAMUserPass = $poolPassword 
$newPool.AppPoolIdentityType = 3 
$newPool.Put() 
# Do it again if it fails as there is a bug with Powershell/WMI 
if (!$?) 
{ 
    $newPool.Put() 
} 

# Create the virtual directory 
mkdir $newVDirPath 

$virtualDirSettings = [wmiclass] "root\MicrosoftIISv2:IIsWebVirtualDirSetting" 
$newVDir = $virtualDirSettings.CreateInstance() 
$newVDir.Name = $newVDirName 
$newVDir.Path = $newVDirPath 
$newVDir.EnableDefaultDoc = $False 
$newVDir.Put() 
# Do it a few times if it fails as there is a bug with Powershell/WMI 
if (!$?) 
{ 
    $newVDir.Put() 
} 

# Create the application on the virtual directory 
$vdir = Get-WmiObject -namespace "root\MicrosoftIISv2" -class "IISWebVirtualDir" -filter "Name = '$newVDirName'" 
$vdir.AppCreate3(2, $newPoolName) 

# Updated the Friendly Name of the application 
$newVDir.AppFriendlyName = $newApplication 
$newVDir.Put() 
+0

@robert wagner - मैं आपकी त्रुटि हैंडलिंग को डीओ {$ newVDir.Put()} WHILE (! $?) में बदल दूंगा, फिर आपको पहले पुट() की आवश्यकता नहीं होगी। जब तक कोई त्रुटि नहीं होती है तब तक डू/लूप लूप प्रदर्शन करेगा। केवल एक सलाह। –

+0

यह एक अनंत लूप में फंस सकता है, लेकिन यह एक विचार है। –

+0

आप हमेशा एक छोटा सा काउंटर ले सकते हैं, केवल अधिकतम संख्या तक पुनः प्रयास करें। – jrista

0

सब ठीक है! मैंने कोड को संशोधित किया है, इसलिए शुरुआती त्रुटि के बाद $ newPool.Put() कमांड के लिए एक स्पष्ट कॉल है। आपकी सहायताके लिए धन्यवाद!