New-ScriptSession.ps1
function New-ScriptSession { <# .SYNOPSIS Creates a new script session in Sitecore PowerShell Extensions via web service calls. .EXAMPLE The following remotely connects to an instance of Sitecore initializes a session. New-ScriptSession -Username admin -Password b -ConnectionUri http://remotesitecore Username : admin Password : b ConnectionUri : http://concentrasitecore/ SessionId : 528b9865-a69e-4875-919f-12209646c934 Credential : .PARAMETER Username Specifies the Sitecore identity used for connecting to a remote instance. .PARAMETER Password Specifies the Sitecore password associated with the identity. .PARAMETER SharedSecret Specifies the SharedSecret used to authenticate the identity. .PARAMETER Timeout Specifies the duration of the wait, in seconds. .PARAMETER ConnectionUri Specifies the remote instance url. HTTPS is highly recommended. .PARAMETER Credential Specifies a user account that has permission to perform this action. The default is the current user. This is an alternative to using the UseDefaultCredential parameter. .PARAMETER UseDefaultCredential Indicates that this command uses the default credential. This command sets the UseDefaultCredential property in the resulting proxy object to True. This is an alternative to using the Credential parameter. .LINK Invoke-RemoteScript .LINK Wait-RemoteScriptSession .LINK Stop-ScriptSession #> [CmdletBinding(DefaultParameterSetName="All")] param( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string]$Username = $null, [Parameter(Mandatory = $true, ParameterSetName = "Password")] [ValidateNotNullOrEmpty()] [string]$Password = $null, [Parameter(Mandatory = $true, ParameterSetName = "SharedSecret")] [ValidateNotNullOrEmpty()] [string]$SharedSecret = $null, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [Uri[]]$ConnectionUri = $null, [Parameter(Mandatory = $false, HelpMessage = "The timeout in seconds.")] [int]$Timeout, [Parameter(Mandatory = $false, ParameterSetName = "Password")] [Parameter(Mandatory = $false, ParameterSetName = "SharedSecret")] [Parameter(Mandatory = $false, ParameterSetName = "Credential")] [System.Management.Automation.PSCredential] $Credential, [Parameter(Mandatory = $false, ParameterSetName = "Password")] [Parameter(Mandatory = $false, ParameterSetName = "SharedSecret")] [Parameter(Mandatory = $false, ParameterSetName = "DefaultCredentials")] [switch]$UseDefaultCredentials ) begin { $sessionId = [guid]::NewGuid() $session = @{ "Username" = [string]$Username "Password" = [string]$Password "SharedSecret" = [string]$SharedSecret "SessionId" = [string]$sessionId "Credential" = [System.Management.Automation.PSCredential]$Credential "UseDefaultCredentials" = [bool]$UseDefaultCredentials "Connection" = @() "PersistentSession" = $false } } process { foreach($uri in $ConnectionUri) { $connection = [PSCustomObject]@{ Uri = [Uri]$uri BaseUri = [Uri]$uri } $session["Connection"] += @($connection) } } end { [PSCustomObject]$session } } |