PowerShell和Bash的定义与使用
程序员文章站
2022-03-14 16:45:08
...
PowerShell是运行在windows平台的脚本,而Bash是运行在linux平台的脚本
现在bash能做的事情,PowerShell也能做,PowerShell的强大之处是它可以管理windows服务器(特别是域domain),现在的开源PowerShell 也可以管理Linux和Mac(通过PSRP)。
下载最新的PS程序
安装后它会有powershell和它的开发IDE工具,ISE,非常不错!
一、进行powershell的程序
二、创建脚本,简单的Helloworld.ps1
任务的自动化是以程序文件或者可执行脚本文件为基础的,PowerShell也支持将命令列表做成脚本文件来执行。以下是Helloworld.ps1脚本文件的内容:
$a = "Hello World!"$a echo $a > a.txt dir a.txt
Helloworld.ps1脚本文件的执行情况结果如下:
PS E:\>.\Helloworld.ps1 --注意在执行它时要加.\,表示当前上当下的文章,类似于centos里的文件执行方法
Hello world!
Directory: E:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 5/30/2017 4:56 PM 16 a.txt
下面是在eShopOnContainers上的一个例子,分别用ps和bash实现了程序的部署
#!/bin/bash declare -a projectList=('../src/Services/Catalog/Catalog.API''../src/Services/Basket/Basket.API''../src/Services/Ordering/Ordering.API''../src/Services/Identity/Identity.API''../src/Web/WebMVC''../src/Web/WebSPA''../src/Web/WebStatus') # Build SPA app # pushd $(pwd)../src/Web/WebSPA # npm run build:prodfor project in "${projectList[@]}"doecho -e "\e[33mWorking on $(pwd)/$project"echo -e "\e[33m\tRemoving old publish output"pushd $(pwd)/$project rm -rf obj/Docker/publish echo -e "\e[33m\tRestoring project"dotnet restore echo -e "\e[33m\tBuilding and publishing projects"dotnet publish -o obj/Docker/publish popd done # remove old docker images: images=$(docker images --filter=reference="eshop/*" -q)if [ -n "$images" ]; then docker rm $(docker ps -a -q) -f echo "Deleting eShop images in local Docker repo"echo $images docker rmi $(docker images --filter=reference="eshop/*" -q) -f fi # No need to build the images, docker build or docker compose will # do that using the images and containers defined in the docker-compose.yml file.
powershell代码如下
Param([string] $rootPath) $scriptPath = Split-Path $script:MyInvocation.MyCommand.Path Write-Host "Current script directory is $scriptPath" -ForegroundColor Yellowif ([string]::IsNullOrEmpty($rootPath)) { $rootPath = "$scriptPath\.."} Write-Host "Root path used is $rootPath" -ForegroundColor Yellow $projectPaths = @{Path="$rootPath\src\Web\WebMVC";Prj="WebMVC.csproj"}, @{Path="$rootPath\src\Web\WebSPA";Prj="WebSPA.csproj"}, @{Path="$rootPath\src\Services\Identity\Identity.API";Prj="Identity.API.csproj"}, @{Path="$rootPath\src\Services\Catalog\Catalog.API";Prj="Catalog.API.csproj"}, @{Path="$rootPath\src\Services\Ordering\Ordering.API";Prj="Ordering.API.csproj"}, @{Path="$rootPath\src\Services\Basket\Basket.API";Prj="Basket.API.csproj"} @{Path="$rootPath\src\Web\WebStatus";Prj="WebStatus.csproj"} $projectPaths | foreach { $projectPath = $_.Path $projectFile = $_.Prj $outPath = $_.Path + "\obj\Docker\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 dotnet restore $projectPathAndFile dotnet build $projectPathAndFile dotnet publish $projectPathAndFile -o $outPath } ######################################################################################## # Delete old eShop Docker images ######################################################################################## $imagesToDelete = docker images --filter=reference="eshop/*" -q If (-Not $imagesToDelete) {Write-Host "Not deleting eShop images as there are no eShop images in the current local Docker repo."} Else { # Delete all containers Write-Host "Deleting all containers in local Docker Host"docker rm $(docker ps -a -q) -f # Delete all eshop images Write-Host "Deleting eShop images in local Docker repo"Write-Host $imagesToDelete docker rmi $(docker images --filter=reference="eshop/*" -q) -f } # WE DON'T NEED DOCKER BUILD AS WE CAN RUN "DOCKER-COMPOSE BUILD" OR "DOCKER-COMPOSE UP" AND IT WILL BUILD ALL THE IMAGES IN THE .YML FOR US
自己感觉,这两个东西在以后的程序部署上都会发挥各自强大的力量!
以上就是PowerShell和Bash的定义与使用的详细内容,更多请关注其它相关文章!
上一篇: 如何对Oracle中的优化器进行评估优化
下一篇: PHP中mb_strpos使用步骤详解
推荐阅读
-
css @page的使用与定义详解
-
jquery.extend 与 jquery.fn.extend的区别和使用
-
JavaEE基础day02 1.定义Java中的变量 四类八种 2.变量定义和使用的注意事项 3.数据类型的转换、强制数据类型转换4.算数运算符、比较运算符、逻辑运算符、赋值运算符、三元运算符
-
C#中事件的定义和使用
-
jquery中eq和get的区别与使用方法_jquery
-
jQuery:mouseout事件的使用与定义
-
Android 入门第十讲02-广播(广播概述,使用方法(系统广播,自定义广播,两个activity之间的交互和传值),EventBus使用方法,数据传递,线程切换,Android的系统广播大全)
-
举例讲解JDK注解的使用和自定义注解的方法
-
Objective-C中类和方法的定义以及协议的使用
-
深入解析c#中枚举类型的定义与使用