通过 Powershell 在没有 SharePoint 模块的情况下列出 SharePoint 库中的文件
Listing files in SharePoint library without SharePoint module via Powershell
我们的 Exchange 服务器 (Exchange 2010/Win 2008 R2) 上有一个 powershell 脚本 运行,它需要查询 SharePoint 2013 中的 SharePoint 文档库,以查找名称每天可能不同的文件。例如,
Stats_2015_10_14_06_00_01.csv 或 Stats_2015_10_15_06_05_01.csv
这使我无法硬编码文件名并使用 System.Net.WebClient 方法在本地下载文件。
我也没有在 Exchange 服务器上安装 SharePoint 模块,当然那里的管理员也不想安装它。
我尝试将基于 HTTPS 的共享点站点名称转换为基于 UNC (\...) 的名称,但这似乎只适用于我的 Windows 8 笔记本电脑...但在 Exchange 服务器上失败了。
有什么建议吗?
使用 New-WebServiceProxy 调用 Lists.asmx 网络服务。
类似于:
$listname = "Documents"
$query = "<Query>
<Where>
<Lt>
<FieldRef Name="ID" />
<Value Type="Counter">3</Value>
</Lt>
</Where>
</Query>"
$queryOptions = ""
$Credentials = Get-Credential
$Ws = New-WebServiceProxy -Uri "Http://mysharepoint.com/mysite/_vti_bin/lists.asmx" -namespace WebServiceProxy -class lists -Credential $Credentials
[xml]$list = $Ws.GetListItems($listName, "", $query, "", 1000, $queryOptions, null)
参考 Lists.Asmx 调用:https://msdn.microsoft.com/en-us/library/office/websvclists.lists.getlistitems.aspx
您现在有一个包含列表中所有项目的 XML 的对象(基于您的查询)。然后您应该能够遍历该 XML 数据以找到您的文件名,然后使用 System.Net.WebClient 直接下载,因为您现在有了路径。
或者,您可以说服您的系统管理员让您将 Microsoft.Sharepoint.Dll 库安装到您的 Exchange 服务器中。然后,您可以使用 powershell 导入它并获取您习惯使用的所有通用 SP 数据结构(spsite、Splistitem 等),而无需安装完整的 Sharepoint Management shell 插件
我们的 Exchange 服务器 (Exchange 2010/Win 2008 R2) 上有一个 powershell 脚本 运行,它需要查询 SharePoint 2013 中的 SharePoint 文档库,以查找名称每天可能不同的文件。例如,
Stats_2015_10_14_06_00_01.csv 或 Stats_2015_10_15_06_05_01.csv
这使我无法硬编码文件名并使用 System.Net.WebClient 方法在本地下载文件。
我也没有在 Exchange 服务器上安装 SharePoint 模块,当然那里的管理员也不想安装它。
我尝试将基于 HTTPS 的共享点站点名称转换为基于 UNC (\...) 的名称,但这似乎只适用于我的 Windows 8 笔记本电脑...但在 Exchange 服务器上失败了。
有什么建议吗?
使用 New-WebServiceProxy 调用 Lists.asmx 网络服务。
类似于:
$listname = "Documents"
$query = "<Query>
<Where>
<Lt>
<FieldRef Name="ID" />
<Value Type="Counter">3</Value>
</Lt>
</Where>
</Query>"
$queryOptions = ""
$Credentials = Get-Credential
$Ws = New-WebServiceProxy -Uri "Http://mysharepoint.com/mysite/_vti_bin/lists.asmx" -namespace WebServiceProxy -class lists -Credential $Credentials
[xml]$list = $Ws.GetListItems($listName, "", $query, "", 1000, $queryOptions, null)
参考 Lists.Asmx 调用:https://msdn.microsoft.com/en-us/library/office/websvclists.lists.getlistitems.aspx
您现在有一个包含列表中所有项目的 XML 的对象(基于您的查询)。然后您应该能够遍历该 XML 数据以找到您的文件名,然后使用 System.Net.WebClient 直接下载,因为您现在有了路径。
或者,您可以说服您的系统管理员让您将 Microsoft.Sharepoint.Dll 库安装到您的 Exchange 服务器中。然后,您可以使用 powershell 导入它并获取您习惯使用的所有通用 SP 数据结构(spsite、Splistitem 等),而无需安装完整的 Sharepoint Management shell 插件