使用 PowerShell 创建 Facebook URL 的 HTML 报告





0/5 (0投票)
在本文中,我们将探讨添加自定义用户配置文件属性并基于该属性生成报告的场景。
引言
在本文中,我们将探讨添加自定义用户配置文件属性并基于该属性生成报告的场景。这里的**挑战**在于,报告的生成应使用 PowerShell 进行,因为它更容易由管理员创建、执行和管理。
场景
公司里的每位用户都需要一个属性来存储他们的 Facebook URL。这个属性可以由相应的用户通过**我的个人资料**页面进行编辑。
需要为所有已分配 URL 值的用户生成一份 HTML 报告。该报告应以 PowerShell 的形式呈现,以便管理员可以进行修改。报告应如下所示:
解决方案
由于需要为每位用户分配一个自定义属性,因此我们必须使用用户配置文件服务应用程序。
实现步骤如下:
创建用户配置文件属性
更新用户及其 Facebook URL
创建 PowerShell 脚本
生成报告
用户配置文件属性
作为第一步,我们需要创建一个新的用户配置文件属性。SharePoint 2010 提供了用户配置文件属性,例如:
科目名称
电子邮件
网站
入职日期等。
但这些属性可能不足以满足您的组织需求!
我们可以创建自定义用户配置文件属性来满足需求。在此特定场景中,我们需要添加一个类型为字符串的属性来存储 Facebook URL。
注意:用户配置文件服务应用程序是负责存储用户配置文件、同步、我的网站配置等服务的应用程序。
要创建自定义用户配置文件属性,请打开中央管理 > 管理服务应用程序 > 用户配置文件服务应用程序 > 管理。
在出现的页面中,您可以看到“人员”、“同步”、“组织”、“我的网站设置”组。在“人员”组中,选择**管理用户属性**。
管理用户属性
此页面显示现有的用户配置文件属性。您可以看到属性列表,如下所示:
使用此屏幕,我们可以添加/编辑/删除属性。单击顶部的**新建属性**链接以添加**Facebook URL**属性。
在出现的页面中,输入详细信息,如下所示:
请注意,**名称**代表编程目的,**显示名称**代表格式化显示目的。将类型输入为字符串,长度输入为 255。
我们期望 Facebook URL 属性具有以下值:
- https://#/UserA
- https://#/UserA
设置属性值后,单击“确定”按钮保存更改。现在,我们的新属性应该已列在“属性”页面 >“自定义属性”部分。
管理用户配置文件
现在我们需要设置此属性的值。可以通过以下方式设置值:
每位用户的我的网站 > 我的个人资料页面
管理员通过中央管理
我们可以通过中央管理 > 管理服务应用程序 > 用户配置文件服务应用程序 > 管理快速设置配置文件属性。
在出现的页面中,单击上面突出显示的“管理用户配置文件”链接。您将看到以下页面:
在文本框中输入用户名,然后单击“查找”按钮。对于检索到的结果,选择**编辑我的个人资料**上下文菜单来设置 Facebook URL 属性。
保存更改,并对几个配置文件重复此操作。
现在,我们已准备好分配了 Facebook URL 属性的足够配置文件。
创建 PowerShell 脚本
我们可以开始创建 PowerShell 脚本。可以使用 Windows 自带的编辑器来编写脚本。
脚本应包含以下活动:
枚举所有用户配置文件
将账户名、Facebook URL 写入屏幕
将账户名、Facebook URL 写入 HTML 文件
以下是实现相同功能的脚本:
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server.UserProfiles")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$RootSite = "https://";
$site = new-object Microsoft.SharePoint.SPSite($RootSite);
$ServiceContext = [Microsoft.SharePoint.SPServiceContext]::GetContext($site);
$ProfileManager = new-object Microsoft.Office.Server.UserProfiles.UserProfileManager($ServiceContext)
$AllProfiles = $ProfileManager.GetEnumerator()
$array = @()
write-output "Account Name, Facebook Url"
foreach($profile in $AllProfiles)
{
$FacebookUrl = $profile["FacebookUrl"].value
$AccountName = $profile["AccountName"].value
$IsEmpty = [string]::IsNullOrEmpty($FacebookUrl)
if ($IsEmpty -ne "False")
{
# Create object and store in array
$obj = New-Object System.Object
$obj | Add-Member -type NoteProperty -name "Account Name" -value "$AccountName"
$obj | Add-Member -type NoteProperty -name "Facebook Url" -value "$FacebookUrl"
$array += $obj
# Output to Screen
write-output "$AccountName, $FacebookUrl"
}
}
# Output to HTML, sorted
$array | Select-Object | Sort-Object -Descending -Property "FacebookUrl" |
ConvertTo-Html -title "Active Users" | Set-Content .\FacebookUsers.html
$site.Dispose()
代码解释如下:
前三行代表:
添加命名空间
接下来的五行代表 SPSite
、UserProfileManager
实例的创建
new-object 关键字在 C# 中代表 new 操作符
$ 符号用于创建变量
在
ProfileManager
实例上调用GetEnumerator()
foreach
循环遍历 $AllProfiles
变量,并在其中:
丢弃 Facebook URL 为空的配置文件
使用属性账户名、Facebook URL 创建新对象
将值分配给新对象
将对象添加到数组
将行写入屏幕(写入 HTML 在
foreach
循环之后进行)
请注意,以下语句将对象添加到数组:
$array += $obj
write-output 语句
将文本写入输出屏幕(ISE 编辑器)
注意:脚本在底层被解释,并使用 .Net 反射来调用方法和属性。例如,new-object
映射到 C# 中的 new
并调用反射的 Activator.CreateInstance
方法。
运算符
PowerShell 中可用的比较运算符如下:
运算符 |
描述 |
-eq |
等于 |
-lt |
小于 |
-gt |
大于 |
-ge |
大于或等于 |
-le |
小于或等于 |
-ne |
不等于 |
-like |
类似 (* 用于通配符) |
-contains |
包含(用于集合) |
更多运算符可以在“参考”部分找到。
PowerShell 中的注释
# 用于表示单行注释
PowerShell 中的数组
使用 @ 符号创建数组
$arrayVariable = @()
PowerShell 中的对象
创建一个类,并使用以下代码分配属性:
$obj = New-Object System.Object
$obj | Add-Member -type NoteProperty -name "Account Name" -value "$AccountName"
$obj | Add-Member -type NoteProperty -name "Facebook Url" -value "$FacebookUrl"
-name 标记指定对象的属性名。-value 标记指定对象的属性值。
PowerShell 中的格式化 HTML 输出
创建 HTML 文件包括添加 <table>
、<tr>
、<td>
等 HTML 标签。名为 ConvertTo-HTML 的 PowerShell Cmdlet 帮助我们完成这项工作。
执行代码
您可以在 ISE 编辑器中执行代码,并在屏幕上查看结果。
生成的 HTML 文件将位于上面突出显示的文件夹中,并且因机器而异。在 Internet Explorer 中打开该文件,您可以看到以下结果。
至此,我们关于使用 PowerShell 生成 HTML 报告的文章就结束了。
参考文献
摘要
在本文中,我们探讨了创建自定义用户配置文件属性以及使用 PowerShell 生成 HTML 报告的场景。总结来说,我们探讨了以下方面:
用户配置文件服务应用程序
创建自定义用户配置文件属性
PowerShell 比较运算符
使用 PowerShell 进行 HTML 报告生成
源代码附件包含我们讨论过的脚本。