2017-03-12 4 views
0

Hallo alles, ich versuche, Server-Anmeldedaten an meine createSQLServer-Funktion zu übergeben, aber weiterhin den Fehler 'Cannot process argument transformation on parameter 'creds'.userName'' Ich habe viele verschiedene versucht, sogar mit einem 'param block' versucht aber stull steckte. Ein Schub in die richtige Richtung wäre willkommen, Prost.Probleme beim Übergeben von Anmeldeinformationen an eine Funktion 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 

Antwort

2

Sie müssen Ihre benannten Parameter verwenden!

Hier ist ein Ausschnitt aus Ihrer ersten paar Parameter:

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

Und dann die, die Sie in dem Funktionsaufruf

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

Also, weil Sie nicht die mit vorbei sind Namen Ihrer Parameter, verwenden sie ihre relative Ordinalposition dh

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

Was haben wir gelernt?

Verwenden Sie immer benannte Parameter!

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

Das sollte man aussortieren :-)

Verwandte Themen