Depuis quelques jours le SDK permettant de monétiser vos applications à travers des publicités est disponibles pour les applications universelles de windows 10 et windows phone 10
Voici le lien pour télécharger le sdk :
https://visualstudiogallery.msdn.microsoft.com/401703a0-263e-4949-8f0f-738305d6ef4b
De même voici un exemple de comment intégrer le nouveau composant, interstitial vidéo dans une application:
http://www.microsoftvirtualacademy.com/training-courses/a-developers-guide-to-windows-10
Cela se fait très simplement
private void Pub()
{
var ad = new Microsoft.Advertising.WinRT.UI.InterstitialAd(); //Création de l'objet Interstitial Ad
ad.ErrorOccurred += (s, args) => { /* didn't load */}; //En cas d'erreur
ad.Cancelled += (s, args) => { /* didn't watch */}; //Si l'utilisateur décide de ne pas regarder la vidéo en entier
ad.Completed += (s, args) => { /* did watch*/}; //Si l'utilisateur regarder la vidéo en entier, le contenu est débloqué
ad.AdReady += (s, args) => { ad.Show(); }; //Dès que l'Ad est prêt on l'affiche.
var unitId = "11532061";
var appId = "e1b25f9e-fdb2-454c-8dfd-09887f228128"; //Inscription depuis le site https://pubcenter.microsoft.com
ad.RequestAd(Microsoft.Advertising.WinRT.UI.AdType.Video, appId, unitId); //Demande de la vidéo avec les identifiants de l'application et de la vidéo.
}
Lien officiel:
http://advertising.microsoft.com/en/blog/34601/announcing-the-microsoft-universal-ad-client-sdk-with-support-for-video-interstitial-ads-and-ad-mediation
Du SharePoint, du silverlight, pas mal de C#, un peu de powershell et surtout du Microsoft
mardi 18 août 2015
mardi 30 juin 2015
Lancement d'un powershell via tâche planifiée
Il arrive en production de devoir lancer des scripts certains jours ou à une certaine heure de la journée.
Les tâches planifiées Windows peuvent vous aider à effectuer ce travail.
Depuis l'outil "Task Sheduler" effectuez un clic droit puis "Create new task"
Les tâches planifiées Windows peuvent vous aider à effectuer ce travail.
Depuis l'outil "Task Sheduler" effectuez un clic droit puis "Create new task"
Spécifiez un nom pour la tâche puis un mode de lancement
Puis un type de schedule ici une fois par mois le dernier jour du mois à 23h30
Ajouter une action
Saisir "Powershell.exe" dans le programme à lancer. Saisir dans les arguments "-File" puis le chemin complet vers le fichier.
Enregistrer enfin la tâche et tester là via l'option "Run"
Suppression de documents en masse dans SharePoint à l'aide de SPWeb.ProcessBatchData
Aujourd'hui je dois supprimer plus de 100.000 documents dans plusieurs collection de sites et le tout en un temps de traitement le plus court qui soit, VDM.
Cela aurait pu se terminer comme ça !
Plus sérieusement, SharePoint offre plusieurs moyen pour supprimer des éléments au sein d'une liste / Bibliothèque. En revanche toutes les méthodes ne sont pas aussi performantes, en particulier la fonction SPList.Items.DeleteById si cette fonction reste facile à utiliser et à mettre en place lors de la suppression d'un ou plusieurs éléments.
Mais lorsqu'il s'agit de supprimer plusieurs milliers d'élément cela va lentement très très lentement (environ 3-4 secondes par fichier sur un environnement de développement) Alors effectuer ce traitement sur un volume plus important va vite devenir problématique.
Heureusement une autre fonction existe et permet d'effectuer des traitements par lot. La méthode SPWeb.ProcessBatchData prend en paramètre une chaîne CAML (Collaborative Application Markup Language) qui contient les commandes, qui se compose d'un élément de Batch et un nombre quelconque d'éléments subordonnés Method qui spécifient chacun une méthode d'appel (RPC) de procédure à distance SharePoint .
La forme la plus simple est la suivante:
<batch>
<method>
<setlist scope="Request">ID_LIST</setlist>
<setvar name="ID">ID_ELEMENT</setvar>
<setvar md="" name="`">COMMANDE</setvar>
</method>
</batch>
Dans le cadre d'une suppression en masse la fonction suivante qui prend en paramètre l'url du site et le nom de la bibliothèque permet de supprimer les éléments par lot de 2000.
Une requête CAML permet de faire un filtre sur les documents à supprimer.
Function purgeSite($params){
$web = get-spweb $params[0]
$list = $web.lists[$params[1]]
try
{
$i=0
$spQuery = New-Object Microsoft.SharePoint.SPQuery
$spQuery.ViewFieldsOnly = $true
$spQuery.Query = "<where><lt><fieldref name="Created"><value type="DateTime"><today offsetdays="2"></today></value></fieldref></lt></where>"
$spQuery.RowLimit = 2000;
$itemCount = 0;
$listId = $list.ID;
do
{
[System.Text.StringBuilder]$batchXml = New-Object "System.Text.StringBuilder";
$batchXml.Append("<batch>");
$command = [System.String]::Format( "<method><setlist scope="Request">{0}</setlist><setvar name="`">{1}</setvar><setvar name="owsfileref">{2}</setvar><setvar md="" name="`">Delete</setvar></method>", $listId, "{0}","{1}" );
$listItems = $list.GetItems($spQuery)
$spQuery.ListItemCollectionPosition = $listItems.ListItemCollectionPosition
$count = $listItems.Count
Write-Host $count
foreach ($item in $listItems)
{
Write-Host -ForegroundColor Green "Delete item "$item.ID
$list.Items.DeleteItemById($item.ID)
if($item -ne $null)
{
$batchXml.Append([System.String]::Format($command, $item.ID.ToString(),$item["FileRef"])) | Out-Null;
}
#break;
}
$batchXml.Append("</batch>");
# $web.ProcessBatchData($batchXml.ToString())
$result = $web.ProcessBatchData($batchXml.ToString())
$web.RecycleBin.DeleteAll()
}
while ($spQuery.ListItemCollectionPosition -ne $null)
}
catch
{
Write-Host -ForegroundColor Red $_.Exception.ToString()
}
}
Cela aurait pu se terminer comme ça !
Plus sérieusement, SharePoint offre plusieurs moyen pour supprimer des éléments au sein d'une liste / Bibliothèque. En revanche toutes les méthodes ne sont pas aussi performantes, en particulier la fonction SPList.Items.DeleteById si cette fonction reste facile à utiliser et à mettre en place lors de la suppression d'un ou plusieurs éléments.
Mais lorsqu'il s'agit de supprimer plusieurs milliers d'élément cela va lentement très très lentement (environ 3-4 secondes par fichier sur un environnement de développement) Alors effectuer ce traitement sur un volume plus important va vite devenir problématique.
Heureusement une autre fonction existe et permet d'effectuer des traitements par lot. La méthode SPWeb.ProcessBatchData prend en paramètre une chaîne CAML (Collaborative Application Markup Language) qui contient les commandes, qui se compose d'un élément de Batch et un nombre quelconque d'éléments subordonnés Method qui spécifient chacun une méthode d'appel (RPC) de procédure à distance SharePoint .
La forme la plus simple est la suivante:
<batch>
<method>
<setlist scope="Request">ID_LIST</setlist>
<setvar name="ID">ID_ELEMENT</setvar>
<setvar md="" name="`">COMMANDE</setvar>
</method>
</batch>
Une requête CAML permet de faire un filtre sur les documents à supprimer.
Function purgeSite($params){
$web = get-spweb $params[0]
$list = $web.lists[$params[1]]
try
{
$i=0
$spQuery = New-Object Microsoft.SharePoint.SPQuery
$spQuery.ViewFieldsOnly = $true
$spQuery.Query = "<where><lt><fieldref name="Created"><value type="DateTime"><today offsetdays="2"></today></value></fieldref></lt></where>"
$spQuery.RowLimit = 2000;
$itemCount = 0;
$listId = $list.ID;
do
{
[System.Text.StringBuilder]$batchXml = New-Object "System.Text.StringBuilder";
$batchXml.Append("<batch>");
$command = [System.String]::Format( "<method><setlist scope="Request">{0}</setlist><setvar name="`">{1}</setvar><setvar name="owsfileref">{2}</setvar><setvar md="" name="`">Delete</setvar></method>", $listId, "{0}","{1}" );
$listItems = $list.GetItems($spQuery)
$spQuery.ListItemCollectionPosition = $listItems.ListItemCollectionPosition
$count = $listItems.Count
Write-Host $count
foreach ($item in $listItems)
{
Write-Host -ForegroundColor Green "Delete item "$item.ID
$list.Items.DeleteItemById($item.ID)
if($item -ne $null)
{
$batchXml.Append([System.String]::Format($command, $item.ID.ToString(),$item["FileRef"])) | Out-Null;
}
#break;
}
$batchXml.Append("</batch>");
# $web.ProcessBatchData($batchXml.ToString())
$result = $web.ProcessBatchData($batchXml.ToString())
$web.RecycleBin.DeleteAll()
}
while ($spQuery.ListItemCollectionPosition -ne $null)
}
catch
{
Write-Host -ForegroundColor Red $_.Exception.ToString()
}
}
mardi 7 avril 2015
mardi 7 octobre 2014
Liste des ports standards utilisés par SharePoint 2013
Protocol | Port | Usage | Comment |
TCP | 80 | http | Client to SharePoint web server traffic |
(SharePoint – Office Web Apps communication) | |||
TCP | 443 | https/ssl | Encrypted client to SharePoint web server traffic |
(Encrypted SharePoint – Office Web Apps communication) | |||
TCP | 1433 | SQL Server default communication port. | May be configured to use custom port for increased security |
UDP | 1434 | SQL Server default port used to establish connection | May be configured to use custom port for increased security |
TCP | 445 | SQL Server using named pipes | When SQL Server is configured to listen for incoming client connections by using named pipes over a NetBIOS session, SQL Server communicates over TCP port 445 |
TCP | 25 | SMTP for e-mail integration | Cannot be configured |
TCP | 16500-16519 | Ports used by the search index component | Intra-farm only |
Inbound rule Added to Windows firewall by SharePoint | |||
TCP | 22233-22236 | Ports required for the AppFabric Caching Service | Distributed Cache… |
TCP | 808 | Windows Communication Foundation communication | WCF |
TCP | 32843 | Communication between Web servers and service applications | http (default) To use custom port, see references section |
Inbound rule Added to Windows firewall by SharePoint | |||
TCP | 32844 | Communication between Web servers and service applications | https |
Inbound rule Added to Windows firewall by SharePoint | |||
TCP | 32845 | net.tcp binding: TCP 32845 (only if a third party has implemented this option for a service application) | Custom Service Applications |
Inbound rule Added to Windows firewall by SharePoint | |||
TCP | 32846 | Microsoft SharePoint Foundation User Code Service (for sandbox solutions) | Inbound on all Web Servers |
Inbound rule Added to Windows firewall by SharePoint | |||
Outbound on all Web and App servers with service enabled. | |||
TCP | 5725 | User Profile Synchronization Service(FIM) | Synchronizing profiles between SharePoint 2013 and Active Directory Domain Services (AD DS) on the server that runs the Forefront Identity Management agent |
TCP + UDP | 389 | User Profile Synchronization Service(FIM) | LDAP Service |
TCP + UDP | 88 | User Profile Synchronization Service(FIM) | Kerberos |
TCP + UDP | 53 | User Profile Synchronization Service(FIM) | DNS |
UDP | 464 | User Profile Service(FIM) | Kerberos change password |
TCP | 809 | Office Web Apps | Intra-farm Office Web Apps communication. |
lundi 6 octobre 2014
Powershell : Reporting Service, modification de l'email d'abonnement
L'exemple de script PowerShell suivant met à jour la configuration de l'extension de remise du courrier électronique par le serveur de rapports pour l'application de service nommée My RS Service App. Mettez à jour les valeurs du serveur SMTP
#Modification de l'email Service reporting
$app=get-sprsserviceapplication -Name $rsService
$emailCfg = Get-SPRSExtension -identity $app -ExtensionType "Delivery" -name "Report Server Email" | select -ExpandProperty ConfigurationXml
$emailXml = [xml]$emailCfg
$emailXml.SelectSingleNode("//SMTPServer").InnerText = $smptServer
$emailXml.SelectSingleNode("//SendUsing").InnerText = "2"
$emailXml.SelectSingleNode("//SMTPAuthenticate").InnerText = "2"
$emailXml.SelectSingleNode("//From").InnerText = $fromAddr
Set-SPRSExtension -identity $app -ExtensionType "Delivery" -name "Report Server Email" -ExtensionConfiguration $emailXml.OuterXml
Powershell : Modification du SMTP SharePoint 2013
# Adresse du serveur SMTP
$smptServer = 'smtp.server.com'
# Adresse mail d envoi
$fromAddr = 'noreply@mydomaine.com'
# Adresse mail de réponse
$replyAddr = 'noreply@mydomaine.com'
#Ne rien modifier à partir de cette ligne
#serveurs smtp
Add-PSSnapin Microsoft.SharePoint.PowerShell
$SMTPSvr = $smptServer
$FromAddr = $fromAddr
$ReplyAddr = $replyAddr
$Charset = 65001
$smptServer = 'smtp.server.com'
# Adresse mail d envoi
$fromAddr = 'noreply@mydomaine.com'
# Adresse mail de réponse
$replyAddr = 'noreply@mydomaine.com'
#Ne rien modifier à partir de cette ligne
#serveurs smtp
Add-PSSnapin Microsoft.SharePoint.PowerShell
$SMTPSvr = $smptServer
$FromAddr = $fromAddr
$ReplyAddr = $replyAddr
$Charset = 65001
Inscription à :
Articles
(
Atom
)