كيف يمكنني تمرير معلمات سلسلة متعددة إلى برنامج PowerShell النصي؟
-
09-06-2019 - |
سؤال
أحاول القيام ببعض تسلسل/تنسيق السلسلة، ولكنني أضع جميع المعلمات في العنصر النائب الأول.
شفرة
function CreateAppPoolScript([string]$AppPoolName, [string]$AppPoolUser, [string]$AppPoolPass)
{
# Command to create an IIS application pool
$AppPoolScript = "cscript adsutil.vbs CREATE ""w3svc/AppPools/$AppPoolName"" IIsApplicationPool`n"
$AppPoolScript += "cscript adsutil.vbs SET ""w3svc/AppPools/$AppPoolName/WamUserName"" ""$AppPoolUser""`n"
$AppPoolScript += "cscript adsutil.vbs SET ""w3svc/AppPools/$AppPoolName/WamUserPass"" ""$AppPoolPass""`n"
$AppPoolScript += "cscript adsutil.vbs SET ""w3svc/AppPools/$AppPoolName/AppPoolIdentityType"" 3"
return $AppPoolScript
}
$s = CreateAppPoolScript("name", "user", "pass")
write-host $s
انتاج |
cscript adsutil.vbs CREATE "w3svc/AppPools/name user pass" IIsApplicationPool
cscript adsutil.vbs SET "w3svc/AppPools/name user pass/WamUserName" ""
cscript adsutil.vbs SET "w3svc/AppPools/name user pass/WamUserPass" ""
cscript adsutil.vbs SET "w3svc/AppPools/name user pass/AppPoolIdentityType" 3
المحلول
تفقد الأقواس والفواصل.
استدعاء وظيفتك كـ:
$s = CreateAppPoolScript "name" "user" "pass"
يعطي:
cscript adsutil.vbs CREATE "w3svc/AppPools/name" IIsApplicationPool
cscript adsutil.vbs SET "w3svc/AppPools/name/WamUserName" "user"
cscript adsutil.vbs SET "w3svc/AppPools/name/WamUserPass" "pass"
cscript adsutil.vbs SET "w3svc/AppPools/name/AppPoolIdentityType" 3
نصائح أخرى
بالمناسبة، باستخدام PowerShell هنا سلسلة قد يجعل قراءة وظيفتك أسهل قليلًا أيضًا، نظرًا لأنك لن تحتاج إلى مضاعفة جميع العناصر "
-علامات:
function CreateAppPoolScript([string]$AppPoolName, [string]$AppPoolUser, [string]$AppPoolPass)
{
# Command to create an IIS application pool
return @"
cscript adsutil.vbs CREATE "w3svc/AppPools/$AppPoolName" IIsApplicationPool
cscript adsutil.vbs SET "w3svc/AppPools/$AppPoolName/WamUserName" "$AppPoolUser"
cscript adsutil.vbs SET "w3svc/AppPools/$AppPoolName/WamUserPass" "$AppPoolPass"
cscript adsutil.vbs SET "w3svc/AppPools/$AppPoolName/AppPoolIdentityType" 3
"@
}
بول على حق.
في PowerShell، لا يتم وضع معلمات الوظيفة بين قوسين.(لا تزال معلمات الطريقة موجودة.)
كان مكالمتك الأولية مجرد تمرير مصفوفة واحدة كبيرة إلى الوظيفة، بدلاً من المعلمات الثلاثة المنفصلة التي تريدها.
لا تنتمي إلى StackOverflow