ps提供了豐富的文件操做,如創建,刪除,更名,移動,複製,文件夾創建,顯示文件列表,同時對數組對象的遍歷也很方便,若是在使用PS腳本時,但願現時傳入參數,能夠把參數聲明爲param,固然須要把它寫在文件開頭的位置。web
下面是大叔在看完eshop項目後,寫的幾個測試代碼,對它們進行了註釋,方便你們學習。api
Param([string] $rootPath) #輸入參數 $scriptPath = Split-Path $script:MyInvocation.MyCommand.Path #當前應用程序目錄 Write-Host "Current script directory is $scriptPath" -ForegroundColor Yellow #定義字體顏色 if ([string]::IsNullOrEmpty($rootPath)) { #若是變量爲空,就爲它賦值 $rootPath = "$scriptPath\" } Write-Host "Root path used is $rootPath" -ForegroundColor Yellow $projectPaths = @{Path="$rootPath\src\web";Prj="test.txt"}, @{Path="$rootPath\src\api";Prj="test.txt"} $projectPaths | foreach { $projectPath = $_.Path $projectFile = $_.Prj $outPath = $_.Path + "\publish" $projectPathAndFile = "$projectPath\$projectFile" Write-Host "Deleting old publish files in $outPath" -ForegroundColor Yellow remove-item -path $outPath -Force -Recurse -ErrorAction SilentlyContinue #先刪除先來的文件夾及內容 Write-Host "Publishing $projectPathAndFile to $outPath" -ForegroundColor Yellow New-Item $outPath -type directory -Force #創建文件夾 Copy-Item $projectPathAndFile -Destination $outPath # 複製到指定位置 # dotnet restore $projectPathAndFile # dotnet build $projectPathAndFile # dotnet publish $projectPathAndFile -o $outPath } $test=1,2,3 #定義簡單類型數組 $test | foreach{ Write-Host $_ #遍歷每一個元素 } $testObj=@{name="zzl";age=34},@{name="zhz";age=8} #定義一個對象數組 $testObj | foreach{ $name= $_.name #必須將它賦給一個變量,若是直接在字符串裏使用,它將輸出本身的類型 $age=$_.age Write-Host "name=$name,age=$age" }
上面代碼會在E盤指定目錄進行文件的複製,這相似於網站的發佈機制,從一個地方複製到網站目錄。數組
其中param要求咱們在使用ps1文件時,提供一下參數,固然能夠不傳,咱們代碼裏也有對它的賦值。學習
整個DEMO運行的結果如圖測試