Link to home
Start Free TrialLog in
Avatar of Paul Mauriello
Paul MaurielloFlag for United States of America

asked on

How do I properly pass 2 parameters to a Powershell Script that has function in it that also has 2 parameters?

I have a powershell script CubeProcess.ps1 which processes a cube but want to pass 2 parameters to it. But when I do this I get this error. Can someone tell me what I am doing wrong?

C:\WebDocs\PowershellScripts\CubeProcess.ps1 : A positional parameter cannot be found that accepts argument '
http://schemas.microsoft.com/analysisservices/2003/engine><Process><Object><DatabaseID>Sokana1</DatabaseID></
Object><Type>ProcessFull</Type><WriteBackTableCreation>UseExisting</WriteBackTableCreation></Process></Batch>
'.
At line:1 char:1
+ C:\WebDocs\PowershellScripts\CubeProcess.ps1 "DBVMS01" "<Batch xmlns= ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [CubeProcess.ps1], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,CubeProcess.ps1



#param($SomeTargetServerName="DBVMS01" , $SomeXmlaToExecute="<Batch xmlns=\"http://schemas.microsoft.com/analysisservices/2003/engine\"><Process><Object><DatabaseID>Sokana1</DatabaseID></Object><Type>ProcessFull</Type><WriteBackTableCreation>UseExisting</WriteBackTableCreation></Process></Batch>")


param
(
   [Parameter(Mandatory=$True)] [string] $SomeTargetServerName,
   [Parameter(Mandatory=$True, ValueFromPipeline=$True)] [string] $SomeXmlaToExecute
)

#################################################################################
# Execute-Xmla runs the given XMLA string against the target SSAS server
#################################################################################
function Execute-Xmla
{
    [CmdletBinding()]
    param
    (
        [Parameter(Position=0, Mandatory=$True)] [string] $TargetServerName,
        [Parameter(Position=1, Mandatory=$True, ValueFromPipeline=$True)] [string] $Xmla
    )
    begin
    {
        Add-Type -AssemblyName "Microsoft.AnalysisServices.AdomdClient, Version=13.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
        $ConnectionectionString = "Data Source=$TargetServerName;Provider=MSOLAP.4;Integrated Security=SSPI;Impersonation Level=Impersonate;"
        $Connection = New-Object Microsoft.AnalysisServices.AdomdClient.AdomdConnection($ConnectionectionString)
        $Connection.Open();
    }
    process
    {
        $Comand = $Connection.CreateCommand();
        $Comand.CommandTimeout = 20000;
        $Comand.CommandType = [System.Data.CommandType]::Text;
        $Comand.CommandText = $Xmla;
        $Reader = $Comand.ExecuteXmlReader();
        if($Reader.Read())
        {
            $Return = $Reader.ReadOuterXml();
        }
        return $Return;
    }
    end
    {
        $Connection.Close();
        $Connection.Dispose();
    }
};

Execute-Xmla -TargetServerName $SomeTargetServerName -Xmla $SomeXmlaToExecute

#Execute-Xmla 'DBVMS01' '<Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine"><Process><Object><DatabaseID>Sokana1</DatabaseID></Object><Type>ProcessFull</Type><WriteBackTableCreation>UseExisting</WriteBackTableCreation></Process></Batch>'
# SIG # Begin signature block
# MIIEMwYJKoZIhvcNAQcCoIIEJDCCBCACAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUbRvcbz9jYXuJPHejoifLV2aC
# 4yCgggI9MIICOTCCAaagAwIBAgIQrzAR3gl16bdJomcZ76hV5zAJBgUrDgMCHQUA
# MCwxKjAoBgNVBAMTIVBvd2VyU2hlbGwgTG9jYWwgQ2VydGlmaWNhdGUgUm9vdDAe
# Fw0yMDEyMTYxOTIwNDdaFw0zOTEyMzEyMzU5NTlaMBoxGDAWBgNVBAMTD1Bvd2Vy
# U2hlbGwgVXNlcjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAui6bD+0CwY2H
# euXGuBLLFzRCWzLARJOALvYRPOCS0khmeYuGPNEWs6qqIMSwmLG2/J3nFn5ig5ho
# hRlvuBWxHgSojwlrFN4QYcDpvi5U4/l38ym1Emblvts9VD+otEWH0swC9j5zDACM
# YUPAU1Y6fhYRKNCGjIYrKDDFu75ZnKECAwEAAaN2MHQwEwYDVR0lBAwwCgYIKwYB
# BQUHAwMwXQYDVR0BBFYwVIAQQDpqBBczvaoI+Sts4+nQeKEuMCwxKjAoBgNVBAMT
# IVBvd2VyU2hlbGwgTG9jYWwgQ2VydGlmaWNhdGUgUm9vdIIQ6PBeQWp9tbZNu4GU
# H+3cKjAJBgUrDgMCHQUAA4GBAFbq2QXDvoogNbDxxoZcD/t3kcgaQGQz5jd8gPKh
# ILiLsBZ/ZwouB4Ud4bINA+hrWND21wFlyxsZzpZalH0IPFM+mR5AmGB5AimgCGsD
# UdW5sXz2hAZ6fy2j2pAYWou2HM02J2DRApAAug7u4mwlBUvBR1iLXxjio10A75Q3
# hhquMYIBYDCCAVwCAQEwQDAsMSowKAYDVQQDEyFQb3dlclNoZWxsIExvY2FsIENl
# cnRpZmljYXRlIFJvb3QCEK8wEd4Jdem3SaJnGe+oVecwCQYFKw4DAhoFAKB4MBgG
# CisGAQQBgjcCAQwxCjAIoAKAAKECgAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcC
# AQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYE
# FCGnd3R82rYTORd7Bb3p4A+YwilIMA0GCSqGSIb3DQEBAQUABIGAtoWfhBQdaHrD
# MR2EmKWK1V8wdWN8/lliIAG+lNcGgWuV1X4Px5FskVUO6tmzcq0dS4XEvGRI6elc
# NRbcpwZqOyRsKrHnG6BVuecifwundIykGKMEtun93uVkf102hy5d9tHjSgJ0eWIO
# mJTDP9SbMUSpXhMn9uSKDOKnoUq01vY=
# SIG # End signature block


Open in new window

Avatar of aikimark
aikimark
Flag of United States of America image

Remove the first line (the comment) and retest.
Avatar of Paul Mauriello

ASKER

User generated image

Same error
Ah.  I see it now.  You are passing a quoted XML string that contains quote characters.  Try delimiting the XML with apostrophe characters.
ASKER CERTIFIED SOLUTION
Avatar of David Johnson, CD
David Johnson, CD
Flag of Canada image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial