我正在使用powershell與sharepoint 07一起列出一些東西。我試圖讓一個(權力)用戶指定他們想要顯示哪些字段。
例如,我可以運行如下我的代碼:
\ psextractor -fields「類型|名稱|用戶說明
這樣做後,我會得到顯示上面列出的域目前我使用的文件的列表。選擇-對象標識符,我想知道,如果這是可能的,如果沒有,有沒有辦法做到這一點不使用創建對象cmdlet
我的代碼:?Powershell:如何使用select-object來獲取一組動態屬性?
#$Args
if($Args[0] -eq "-fields" -and $Args.Count -ge 2){
$flds = $Args[1].split("|")
}
#Later in code
$web.Lists | foreach{
$lib = $_
if($lib.BaseType -eq [Microsoft.SharePoint.SPBaseType]::DocumentLibrary
-and $lib.BaseTemplate -eq [Microsoft.SharePoint.SPListTemplateType]::DocumentLibrary){
$lib.Items | Select-Object DisplayName,
@{n=$flds[0];e={$_.Item($flds[0])}} ,
@{n=$flds[1];e={$_.Item($flds[1])}}
#, etc, etc
}
}
編輯: 我用下面有一些調整Graimer的解決方案
SOLUTION:
param([object[]]$flds)
[email protected]() #globally declared since some of this is done in functions later
$mflds = $("Author","Created","Modified","Modified By") #mandatory fields
$mflds | foreach{
if($flds -notcontains $_){
$flds += $_
}
}
#had to use regular for loop because the $_ identifier was conflicting
for ($i =0; $i -lt $flds.Count; $i++) {
$props += @{n=$flds[$i];e=([Scriptblock]::Create("`$_[`$flds[$i]]"))}
}
#other mandatory custom fields
#the create method could have been used here
$props += @{n="FileName";e={"$($_.Item('Name'))"}}
$props += @{n="Url";e={"$wburl/$($_.Url)"}}
#Later in code
$web.Lists | foreach{
$lib = $_
if($lib.BaseType -eq [Microsoft.SharePoint.SPBaseType]::DocumentLibrary
-and $lib.BaseTemplate -eq [Microsoft.SharePoint.SPListTemplateType]::DocumentLibrary){
$lib.Items | Select-Object -property $props
}
}
順便說一句,如果人們會低估我的答案,我將非常感激評論,說明我應該改進什麼。這是一個社區,我們應該 –
我希望我沒有不小心投票給你,因爲你的帖子肯定有幫助,但正如我在其他答案中所述,你不能以這種方式獲得這些屬性,唯一的辦法是他們可以訪問是通過一個方法或使用散列,即:@ {$ _ [「my fields」]}或@ {$ _ get(「My Field」)}。任何建議,請分享。 – Realistic
嘗試我的更新回答:) –