2016-06-08 4 views
1

Derzeit kopiere ich alle $DeploymentPath (Ordner) lokal, und dann löschen alle Dateien darin, außer 1 Datei, die ich will.MsDeploy-Sync verwenden, um nur eine Datei lokal zu kopieren

MsDeploy-Sync ` 
     -SourceContentPath:"$DeploymentPath" ` 
     -DestinationContentPath:"$SupportFolder/WebPages" ` 

Get-ChildItem "$SupportFolder\WebPages" -Exclude "web.config.js" | 
    Remove-Item 

Was ich tun möchte:

Kopie nur 1 Datei web.config.js lokal, wenn sie dort nicht vorhanden sind, return false.

  • Ich schreibe dieses Stück Code in ps1 Datei, aber ich habe MsDeploy Befehle verwenden.

Ist es möglich?

Antwort

1

Als Erstes sollten Sie das Cmdlet Join-Path verwenden, um einen Pfad in PowerShell zu kombinieren.

Um zu überprüfen, ob die Datei vorhanden ist, verwenden Sie einfach die Test-Path Cmdlets:

$webConfigPath = Join-Path $SupportFolder '\WebPages\web.config.js' 
if (Test-Path $webConfigPath) 
{ 
    MsDeploy-Sync ` 
     -SourceContentPath (Join-Path $DeploymentPath 'web.config.js') ` 
     -DestinationContentPath (Join-Path $SupportFolder 'fromServer_web.config.js') 
} 
else 
{ 
    $false # return $false 
} 
+0

i MSDeploy-Sync verwendet ' -SourceContentPath: "$ DeploymentPath \ web.config.js"' -DestinationContentPath: "$ SupportFolder/fromServer_web.config.js "' um die eine Datei, die ich brauche, vom Server zu kopieren, fügen Sie bitte dieses hinzu, innerhalb der 'if' –

+0

Ich habe es hinzugefügt und auch mit dem Join-Path Cmdlet dort. –

+0

Warum verwenden Sie lieber 'Join-Path' anstelle des regulären Pfades? –