2017-03-12 1 views
0

Salut tout J'essaie de transmettre les informations de connexion du serveur à ma fonction 'createSQLServer mais continue à frapper l'erreur 'Cannot process argument transformation on parameter 'creds'.userName'' J'ai essayé beaucoup de différents, même essayé avec un' bloc param ' mais stull coincé. Une poussée dans la bonne direction serait appréciée, vive.Problèmes transmettant les informations d'identification à une fonction Azure Powershell

###### SQL SERVER LOGIN CREDENTIALS 
$userName = "aaron" 
$password = "Password_1234" 
$securePassword = ConvertTo-SecureString -String $password -AsPlainText -Force 
$creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $userName, $securePassword 

### SQL server names with resource group name appeneded 
$server1 = "sqlserver1" + $resGroup 
$serVerion = "12.0" 

function createSQLserver ([string]$server1,[string]$server2, [string]$server3, [System.Management.Automation.PSCredential]$creds,[string]$server1Location, [string]$server2Location, [string]$server3Location, [string]$resGroup, [string]$serVerion, [string]$userName, [string]$password, [SecureString]$securePassword) 
    { 
     #Create server 1(Server A) 
    <#check to see if server exists - It exists, $continue is created and passed to 
    if statement to append two random characters to name#> 
    Write-Host "Creating First SQL Server" 

     $sqlServer = New-AzureRmSqlServer -ServerName $server1 -SqlAdministratorCredentials $creds -Location $server1Location -ResourceGroupName $resGroup -ServerVersion $serVerion -ErrorVariable continue -ErrorAction SilentlyContinue 

    if ($continue) 
    { 
    do { 
     $server1 = $server1 + (rand) 
     $sqlServer = New-AzureRmSqlServer -ServerName $server1 ` 
    -SqlAdministratorCredentials $creds -Location $server1Location ` 
    -ResourceGroupName $resGroup -ServerVersion "12.0" -ErrorVariable continue -ErrorAction SilentlyContinue 
     } 
     until(!$continue) 

    Write-Host 'exists creating new' $server1 'Created' 
    }else{ 
    Write-Host $server1 ' Created' 
    } 
     Start-Sleep -s 2 
    } 


    createSQLserver $server1 $username $password $securePassword $creds $server1Location $resGroup $serVerion 

Répondre

2

Vous devez utiliser vos paramètres nommés!

Voici un extrait de vos premiers paramètres:

... 
[string]$server1 
, 
[string]$server2 
, 
[string]$server3 
, 
[System.Management.Automation.PSCredential]$creds 
... 

Et puis ceux que vous en passant à l'appel de la fonction

createSQLserver $server1 $username $password $securePassword ... 

parce que vous n'êtes pas en utilisant la noms de vos paramètres, ils utilisent leur position ordinale relative ie

param | value 
---------+---------------- 
$server1 | $server1 
$server2 | $username 
$server3 | $password 
$creds | $securePassword 

Alors qu'avons-nous appris?

Utilisez toujours les paramètres nommés!

createSQLserver -server1 $server1 -username $username -password $password -securePassword $securePassword 

Cela devrait vous trier :-)