背景 我正在维护一个简单的html / php网站:http://www.archskirt.com.au/index.php
我使用notepad ++编辑网站的本地副本,我使用TortoiseHg v4.0进行版本控制,然后使用FileZilla v3.24将更改上传到实际网站。我想用“PowerShell FTP Client Module” 自动化我的部署过程,以便更快,更不容易出现人为错误。我是PowerShell及其集成脚本环境的新手,我很难理解“介绍性”指南中所说内容的一半以上。
这是我当前的代码在pushtotest.ps1
中##### Establish a connection to ftp.server.com.au #####
Import-Module PSFTP
$FTPServer = 'ftp.server.com.au'
$FTPUsername = 'username'
$FTPPassword = 'password'
$FTPSecurePassword = ConvertTo-SecureString -String $FTPPassword -asPlainText -Force
$FTPCredential = New-Object System.Management.Automation.PSCredential($FTPUsername,$FTPSecurePassword)
Set-FTPConnection -Credentials $FTPCredential -Server $FTPServer -Session MySession -UsePassive
$Session = Get-FTPConnection -Session MySession
##### Get list of files that have changed from TortoiseHG #####
Set-Location -path c:\xampp\htdocs\
$changeList = hg status --change . -n
echo $changeList
##### Copy files from local directory to live directory #####
ForEach ($file in $changeList) {
$fileName = (Get-Item $file).Name
echo $fileName
$localPath = (Get-Item $file).FullName
echo $localPath
$relativePath = ??
echo $relativePath
Add-FTPItem -path "/home/server/public_html/$relativePath" -localpath $localPath -Overwrite
}
echo $ changeList的结果是:
file.php
subdir\file4.php
subdir\file7.php
subdir\subdir2\file11.php
echo $ fileName的结果是:
file.php
file4.php
file7.php
file11.php
echo $ localPath的结果是:
c:\xampp\htdocs\file.php
c:\xampp\htdocs\subdir\file4.php
c:\xampp\htdocs\subdir\file7.php
c:\xampp\htdocs\subdir\subdir2\file11.php
我认为我需要的是$ relativePath包含与$ changeList相同的东西,但没有文件名。我不确定该怎么做。
奖金问题:当我将包含反斜杠的变量放入使用正斜杠编写的路径时,我的代码是否有效?例如:
Add-FTPItem -path "/home/server/public_html/$relativePath"