2013年12月5日,星期四

在Office 365中的PowerShell脚本中使用CSOM

在我最近“Office 365开发人员的决定,技巧和窍门”我说过我们’d做了很多“PowerShell with CSOM” work, and this was enabling us to run scripts against 双色球推荐一注 线上 in the same way that we are used to (for on-premises 双色球推荐一注). 这个 is becoming a popular approach, but since I got questions on it I thought it worth writing about.

刚开始使用Office 365时,我记得我非常担心缺少PowerShell cmdlet–基本上我们所有的命令’习惯使用那里不存在。这里’一个免费的图形来说明这一点:

图片

是的,SP2013中的将近800个PowerShell命令(从SP2010中的530个左右)减少到双色球推荐一注 线上中的仅30个。这30个主要涵盖网站,用户和权限的基本操作–没有托管元数据,用户个人资料,搜索等脚本。它’可以肯定地说,其中有些东西现在可以在网站收集范围内使用(当然,当您不这样做时,’t have a true “Central Admin”网站,但仍然“tenant-level”您想要使用脚本而不是通过UI进行手动更改的设置。

所以呢’开发人员/管理员做的不好吗?

答案是像往常一样编写PowerShell,但是将CSOM代码嵌入其中。稍后会有更多示例,但是这里’一个小插图:

#获取网站集范围内的功能集(例如,激活一个)–这里没有显示如何获取$ clientContext。
$ siteFeatures = $ clientContext.Site.Features
$ clientContext.Load($ siteFeatures)
$ clientContext.ExecuteQuery()

所以我们’重新使用.NET CSOM,但我们使用的是PowerShell,而不是C#’调用任何.NET对象的能力(实际上,几乎每个脚本都将使用PowerShell’s 新对象 命令)。我们开始喜欢PowerShell的所有东西都重新摆在桌子上:

  • 可以轻松修改脚本,而无需重新编译(或打开Visual Studio)
  • 我们可以使用PowerGui或PowerShell ISE进行调试
  • 我们可以利用PowerShell擅长的其他方面使用其他PowerShell模块和其他API(包括.NET)等可以轻松地从XML文件读取。

当然, 我们只能在.NET CSOM中存在该方法的地方执行操作 – that’是我们能做的事的界限。

入门

第1步–了解风景

The first thing to understand is that there are actually 3 different approaches for scripting against Office 365/双色球推荐一注 线上, depending on what you need to do. It might just be me, but I think that when you start it’它们之间容易混淆,或者无法完全理解它们全部存在。我的三种方法’m thinking of are:

  • 双色球推荐一注 线上 cmdlets
  • MSOL cmdlet
  • PowerShell + CSOM

这个 帖子着重介绍最后的味道。我还写了一篇简短的随笔文章,内容涉及整体情况,以及其他口味的一些细节/示例,网址为 Using 双色球推荐一注 线上 and MSOL cmdlet in PowerShell with Office 365

第2步– prepare the machine you will run scripts against 双色球推荐一注 线上

选项1-如果您不会从SP2013框(例如SP2013 VM)运行脚本,请执行以下操作:

您需要获取包含.NET CSOM的双色球推荐一注 DLL,并将其复制到计算机上的文件夹中。–您的脚本将引用这些DLL。

  1. 转到任何双色球推荐一注 2013服务器,并复制任何DLL
  2. 该文件以C. \ Program Files \ Common Files \ microsoft shared \ Web服务器扩展\ 15 \ ISAPI文件夹中的Microsoft.双色球推荐一注.Client * .dll开头。
  3. 将它们存储在计算机上的文件夹中C:\ Lib–记录此位置。

CSOM DLL

选项2-如果要从SP2013框(例如SP2013 VM)运行脚本,请执行以下操作:

在这种情况下,无需复制DLL。–您的脚本将在原始双色球推荐一注安装位置(C:\ Program Files \ Common Files \ microsoft shared \ Web服务器扩展\ 15 \ ISAPI)中引用它们。

脚本顶部–引用DLL和身份验证

在使用API​​之前,每个调用双色球推荐一注 CSOM的.ps1文件都需要处理两件事。–加载CSOM类型,并认证/获取ClientContext对象。那么你’在脚本顶部需要此代码:

** N.B.我较新的代码示例未在RSS阅读器中显示- 点击这里查看全文 **

在下面的脚本中,我们’ll include this “top of script”在下面的每个脚本中通过点置TopOfScript.ps1来填充内容–您可以采用类似的方法(也许使用不同的名称!),也可以将这些内容粘贴到您创建的每个脚本中。如果输入一组有效的凭据和URL,则运行上面的脚本应会发现您已经准备就绪:

PS CSOM具有上下文

脚本示例

在SPO中激活功能

您可能需要在某个时候执行的操作是使用脚本启用或禁用功能。下面的脚本和后面的脚本一样,都引用了我上面的TopOfScript.ps1脚本:

** N.B.我较新的代码示例未在RSS阅读器中显示- 点击这里查看全文 **

PS CSOM激活功能

Enable 侧装 (for app deployment)

沿着非常相似的思路(因为它还涉及激活功能)是启用“side-loading”在网站上。默认情况下,如果您’重新开发双色球推荐一注应用程序时,只能将其从Visual Studio F5部署到通过“开发人员网站”模板创建的网站,但要启用“side-loading”您也可以在(例如)团队网站上进行操作。由于功能不是’在用户界面中可见,您’需要一个这样的脚本:

** N.B.我较新的代码示例未在RSS阅读器中显示- 点击这里查看全文 **

PS CSOM启用侧面加载

迭代网

有时,您可能想遍历网站集中的所有网站,或在特定网站的下方浏览:

** N.B.我较新的代码示例未在RSS阅读器中显示- 点击这里查看全文 **

PS CSOM迭代网

(请注意,在上图中,您还可以看到双色球推荐一注托管的应用程序网络,因为它们只是子网站(尽管可以通过应用程序域URL而不是实际主机站点进行访问)’的网络应用程序网址)。

迭代Web,然后列出,并更新每个列表上的属性

还是将上述示例扩展为不仅迭代Web,而且迭代每个Web列表-我在每个列表上更新的属性是EnableVersioning属性,但您可以通过相同的方式轻松使用任何其他属性或方法:

** N.B.我较新的代码示例未在RSS阅读器中显示- 点击这里查看全文 **

 PS CSOM迭代列表启用版本控制

导入搜索架构XML

在双色球推荐一注 2013和Office 365中,搜索配置的许多方面(例如托管属性和爬网属性,查询规则,结果源和结果类型)可以作为XML文件在环境之间导出和导入。以下示例显示了使用PS + CSOM处理的导入操作: 

** N.B.我较新的代码示例未在RSS阅读器中显示- 点击这里查看全文 **

PS CSOM导入搜索架构

概要

如您所愿,那里 ’使用PowerShell和CSOM组合可以完成很多工作。可以使用CSOM API进行的所有操作都可以包装到脚本中,并且可以像过去一样建立有用的PowerShell代码段库。 您无法使用CSOM做一些有趣的事情(例如,自动化将沙盒WSP上传/部署到Office 365的过程),但是有解决这些问题的方法,我’在以后的文章中,很可能会涉及到这一点(以及我们的经验)。

在PowerShell + CSOM方面的最终想法是,您可以拥有“hybrid”可以同时处理双色球推荐一注 线上和本地双色球推荐一注的脚本。例如,在我当前的项目中,我们构建的所有内容都必须可部署到SPO和本地,并且脚本使用“DeploymentTarget”参数可以在其中的值“Online” or “OnPremises”。脚本之间存在一些差异(即分支),但是对于许多操作,可以运行相同的命令。

相关帖子- Using 双色球推荐一注 线上 and MSO cmdlets in PowerShell with Office 365

Using 双色球推荐一注 线上 and MSOL / WAAD cmdlet in PowerShell with Office 365

这是与之相关的文章 在Office 365中的PowerShell脚本中使用CSOM。正如我在那篇文章中提到的,为Office 365编写PowerShell大致有3种方式–确切地说,您需要运行哪些命令将决定您使用哪个命令,但是它确实’也可以设想您可能在同一脚本中使用所有3个脚本。当您开始使用Office 365时,我认为’它们之间容易混淆,或者无法完全理解它们全部存在。我什么’我想到这里是:

味道

笔记

例子

安装后,您’ll have:

双色球推荐一注 线上 (SPO) cmdlets 这些是 双色球推荐一注 线上 具体的,可以通过“SPO”在cmdlet的名词部分中。 
  • 获取-SPOSite(在Office 365中列出您的网站集)
  • 新站点(用于创建新的网站集)
 SPO外壳
MS 线上 (MSOL)/WAAD cmdlets 这些是与Office 365租赁有关的命令(但不一定特定于Exchange,Lync或双色球推荐一注),并且可以通过以下方式识别“Msol”在cmdlet的名词部分中。
  • Get-MSolUser(列出您的租户中的用户)
  • Set-MsolUserPassword(更新密码)
 MSO外壳
在PS脚本中使用SP CSOM 我其他帖子的主要重点是 在Office 365中的PowerShell脚本中使用CSOM
  • Activating a Feature in 双色球推荐一注 线上
  • Updating webs or lists in 双色球推荐一注 线上
无需安装–您可以在常规Windows PowerShell命令提示符下运行这种类型的脚本。

 

有关MSOL / Windows Azure AD cmdlet的注释

您可能想知道为什么MSOL cmdlet显示“Windows Azure Active Directory。”在快捷方式标题中(全名是“适用于Windows PowerShell的Windows Azure Active Directory模块”),尽管其他所有内容都被标记了“MSOnline” or “MSOL”。答案是,最初这些cmdlet被称为“Windows PowerShell cmdlet的Microsoft联机服务模块”,但是从那时起,Microsoft便将Windows Azure Active Directory作为正式服务推出。 Windows Azure Active Directory(WAAD)支持每个Office 365租约 –并且由于MSOL cmdlet始终专注于目录内容(管理用户/组,管理与Active Directory的同步等),因此这些已被WAAD产品所吸收。

入门

如果你’对于将定期使用Office 365的开发人员或管理员,我建议安装‘shells’ for both the 双色球推荐一注 线上 and Office 365 PowerShell commands – you’在某个时候可能会需要它们。

  1. 如果不安装,请安装PowerShell 3.0’还没有。它’Windows Management Framework 3.0中包含的- http://www.microsoft.com/en-us/download/details.aspx?id=34595
  2. 安装SPO cmdlet- http://office.microsoft.com/en-gb/sharepoint-help/redir/XT102919083.aspx?CTT=5&origin=HA102919087
  3. 安装MSOL cmdlet- http://technet.microsoft.com/en-us/library/jj151815.aspx#bkmk_installmodule

安装完成后,’重新准备开始思考“top of script”内容(例如,向Office 365进行身份验证)。您’ll find that it’SPO和MSOL脚本都非常相似,但是必须运行不同的cmdlet才能启动会话:

  • 连接SPO服务
  • Connect-MsolService

脚本示例– SPO scripts

Authenticating to 双色球推荐一注 线上 to run SPO cmdlet:

** N.B.我较新的代码示例未在RSS阅读器中显示- 点击这里查看全文 **

List all site collections in 双色球推荐一注 线上:

** N.B.我较新的代码示例未在RSS阅读器中显示- 点击这里查看全文 **

Recreate a site collection in 双色球推荐一注 线上:

** N.B.我较新的代码示例未在RSS阅读器中显示- 点击这里查看全文 **

脚本示例– MSOL/WAAD scripts

验证到Office 365以运行MSOL / WAAD cmdlet:

** N.B.我较新的代码示例未在RSS阅读器中显示- 点击这里查看全文 **

获取目录中的所有用户

一个简单的MSOL示例,仅出于完整性考虑:

** N.B.我较新的代码示例未在RSS阅读器中显示- 点击这里查看全文 **

进一步阅读

附录–SPO和MSOL / WAAD cmdlet的完整列表

为了帮助您了解每个系列中的所有命令(如果您不’还没有安装),我’m在下面列出它们:

SPO cmdlet

Add-SPOUser                                       
连接SPO服务                                
断开SPOService                             
Get-SPOAppErrors                                  
获取SPOAppInfo                                    
Get-SPODeletedSite                                
Get-SPOExternalUser                               
获取-SPOSite                                       
获取-SPOSiteGroup                                  
获取点                                     
获取点LogEntry                             
获取点LogLastAvailableTimeInUtc            
Get-SPOUser                                       
Get-SPOWebTemplate                                
新站点                                       
新星集团                                  
删除SPODeletedSite                             
删除-SPOExternalUser                            
删除-SPOSite                                    
删除-SPOSiteGroup                               
删除-SPOUser                                    
维修现场                                    
Request-SPOUpgradeEvaluationSite                  
Restore-SPODeletedSite                            
固定位置                                       
固定位置Group                                  
设定点                                     
Set-SPOUser                                       
测试现场                                      
升级-现场          

MSOL / WAAD cmdlet

Add-MsolForeignGroupToRole   
Add-MsolGroupMember          
Add-MsolRoleMember           
确认-MsolDomain           
Confirm-MsolEmailVerifiedDomain   
Connect-MsolService          
Convert-MsolDomainToFederated     
Convert-MsolDomainToStandard      
Convert-MsolFederatedUser    
Get-MsolAccountSku           
获取MsolCompanyInformation   
Get-Msol联系              
获取MsolDomain               
获取MsolDomainFederationSettings  
获取MsolDomainVerificationDns     
Get-MsolFederationProperty   
Get-MsolGroup                
Get-MsolGroupMember          
Get-MsolPartnerContract      
Get-MsolPartnerInformation   
Get-MsolPasswordPolicy       
Get-MsolRole                 
Get-MsolRoleMember           
Get-MsolServicePrincipal     
Get-MsolServicePrincipalCredential   
获取Msol订阅         
Get-MsolUser                 
Get-MsolUserByStrongAuthentication
Get-MsolUserRole             
新MsolDomain               
New-MsolFederatedDomain      
新玛索集团                
New-MsolLicenseOptions       
New-MsolServicePrincipal     
New-MsolServicePrincipalAddresses
New-MsolServicePrincipalCredential
New-MsolUser                 
New-MsolWellKnownGroup       
Redo-MsolProvision联系方式    
重做-MsolProvisionGroup      
Redo-MsolProvisionUser       
Remove-MsolApplicationPassword    
Remove-MsolContact           
删除MsolDomain            
Remove-MsolFederatedDomain   
Remove-MsolForeignGroupFromRole   
删除-MsolGroup             
删除-MsolGroupMember       
Remove-MsolRoleMember        
Remove-MsolServicePrincipal       
Remove-MsolServicePrincipalCredential  
Remove-MsolUser              
Reset-MsolStrongAuthenticationMethodByUpn
Restore-MsolUser             
Set-MsolADFSContext          
Set-MsolCompanyContactInformation
Set-MsolCompanySettings      
Set-MsolDirSyncEnabled       
Set-MsolDomain               
Set-MsolDomainAuthentication      
Set-MsolDomainFederationSettings  
Set-MsolGroup                
Set-MsolPartnerInformation   
Set-MsolPasswordPolicy       
Set-MsolServicePrincipal     
Set-MsolUser                 
Set-MsolUserLicense          
Set-MsolUserPassword         
Set-MsolUserPrincipalName    
Update-MsolFederatedDomain