2017-09-21 1 views
0

Ich schreibe ein Powershell-Skript, das eine Exe mit den Eingabeparametern aufruft. Dies ist mein Code:Verketten von Variablen zur Übergabe an exe in Powershell

param([string]$sourceIP, [string]$destinationIP, [string]$prefix) 
$ErrorActionPreference = "Stop" 
try 
{ 
    Write-Host "Starting Copy of Keyspaces to Dev" 
    Write-Host "Copying One" 
    .\CopyDatabase.exe -s $sourceIP -o $($prefix)_one -d $destinationIP -n $($prefix)_one -c 
    Start-Sleep -s 2 
    Write-Host "Copying Two" 
    .\CopyDatabase.exe -s $sourceIP -o $($prefix)_two -d $destinationIP -n $($prefix)_two -c 
    Start-Sleep -s 2 
    Write-Host "Copying Three" 
    .\CopyDatabase.exe -s $sourceIP -o $($prefix)_three -d $destinationIP -n $($prefix)_three -c 
    Start-Sleep -s 2 
    Write-Host "Copying Four" 
    .\CopyDatabase.exe -s $sourceIP -o $($prefix)_four -d $destinationIP -n $($prefix)_four -c 
    Write-Host "Finished Backup" 
} 
catch 
{ 
    write-host "EXCEPTION:" 
    write-host "Exception Type: $($_.Exception.GetType().FullName)" 
    write-host "Exception Message: $($_.Exception.Message)" 
    exit -1 
} 

Es funktioniert, wie ich erwarten, mit der Ausnahme, dass $($prefix)_keyspace gibt mir prefix _keyspace wo ich prefix_keyspace wollen. Ich bin mir sicher, dass ich für jede Verkettung eine Funktion schreiben oder eine neue Variable erstellen kann, aber ich frage mich, ob es einen Befehl gibt, den ich dafür verwenden kann, der mich davor bewahren wird, das zu tun. Vielen Dank!

+1

'$ {Präfix} _ein' – PetSerAl

+0

@PetSerAl Perfekt, danke –

Antwort

0

Ersetzen Sie den Try-Block mit diesem:

try 
{ 
    Write-Host "Starting Copy of Keyspaces to Dev" 
    Write-Host "Copying One" 
    .\CopyDatabase.exe -s $sourceIP -o ${prefix}_one -d $destinationIP -n ${prefix}_one -c 
    Start-Sleep -s 2 
    Write-Host "Copying Two" 
    .\CopyDatabase.exe -s $sourceIP -o ${prefix}_two -d $destinationIP -n ${prefix}_two -c 
    Start-Sleep -s 2 
    Write-Host "Copying Three" 
    .\CopyDatabase.exe -s $sourceIP -o ${prefix}_three -d $destinationIP -n ${prefix}_three -c 
    Start-Sleep -s 2 
    Write-Host "Copying Four" 
    .\CopyDatabase.exe -s $sourceIP -o ${prefix}_four -d $destinationIP -n ${prefix}_four -c 
    Write-Host "Finished Backup" 
} 

dies Ihre Arbeit tun sollten. Nicht getestet.

Verwandte Themen