بوويرشيل-تكرار من خلال جميع الشبكات ، ثم تكرار من خلال جميع القوائم ، ثم إضافة عمود حيث قائمة هو اسم معين

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/96719

  •  10-12-2019
  •  | 
  •  

سؤال

أحاول تجميع نص برمجي يجب أن يتكرر من خلال جميع الشبكات في مجموعة مواقع ، ثم يتكرر من خلال جميع القوائم في تلك الشبكات ، ثم أضف عمودا حيث تحتوي القائمة على اسم معين.

هذا ما لدي حتى الآن:

[CmdletBinding()]
Param
(
[Parameter(Mandatory=$True,Position=1)]
[string]$sc
)

$spsite = Get-SPsite $sc 

foreach ($web in $spsite.AllWebs)
{   
        foreach ($list in $spsite.AllWebs)
        {
            $splist = $list.Lists["PSList"]
            $splist.Fields.Add("Calc", "Calculated", 0)
            $spfield = $splist.Fields.Getfield("Calc")
            $spfield.formula = "=TEXT([Start Date],`"mm/dd/yyyy`")`&`" - `"`&TEXT([End Date],`"mm/dd/yyyy`")"
            $spfield.outputtype = "Text"
            $spfield.update()
        }
}
$spsite.dispose()

هذا هو الخطأ الذي أحصل عليه:

لا يمكنك استدعاء طريقة على تعبير قيمة فارغة.في C:\scripts\addcalc.ps1:24 شار: 22 + spl سبليست.الحقول.إضافة <<<< ("احسب" ، "محسوب" ، 0) + الفئةالمعلومات :إنفاليدوبيراتيون:(إضافة: سلسلة) [] ، رونتيميكسيبتيون + بالكاملالمؤهلإساءة :إنفوكيميثودونول

أنا متأكد من ذلك لأنني لا أتكرر من خلال الشبكات ثم من خلال خاصية القوائم.ما هي الطريقة الصحيحة لتحقيق ما أحاول القيام به?

هل كانت مفيدة؟

المحلول

أولا - يجب عليك حذف foreach ($list in $spsite.AllWebs) ثم ابحث عن القائمة باستخدام

$list = $web.Lists["InternalNameOfTheList"]

أو

$list = $web.GetList($web.Url + "/Lists/" + $ListName) وبعد ذلك إضافة عمود باستخدام

$spFieldType = [Microsoft.SharePoint.SPFieldType]::Text //change to your field type

$list.Fields.Add("YourColumn",$spFieldType,$false)
$list.Update()

والتخلص من كائن سبويب بعد استخدامه ، كما تفعل لكائن سبسيت .

نصائح أخرى

شكرا أندري.اقتراحك قادني إلى أسفل المسار الصحيح.إليك إصدار العمل النهائي من البرنامج النصي الذي يحل السؤال الأصلي. giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى sharepoint.stackexchange
scroll top