PowerShell是运作在windows平台的台本,而Bash是运作在linux平台的脚本

PowerShell和Bash的介绍,powershellbash

PowerShell是运作在windows平台的台本,而Bash是运转在linux平台的脚本

近期bash能做的事情,PowerShell也能做,PowerShell的强劲之处是它能够管理windows服务器(越发是域domain),未来的开源PowerShell
也得以管理Linux和Mac(通过PSLacrosseP)。

一、进行powershell的程序

澳门金沙国际 1

贰 、创制脚本,简单的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:\【澳门金沙国际】PowerShell和Bash的介绍。
Mode                LastWriteTime     Length   Name
----                -------------     ------ ----

-a---         5/30/2017   4:56 PM         16 a.txt

上面是在eShopOnContainers上的3个事例,分别用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:prod

for project in "${projectList[@]}"
do
    echo -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 Yellow

if ([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是运维在windows平台的剧本,而Bash是运作在linux平台的脚本
未来bash能做的事务,PowerShell也能做,…

PowerShell是运作在windows平台的脚本,而Bash是运营在linux平台的本子

近年来bash能做的工作,PowerShell也能做,PowerShell的精锐之处是它能够管理windows服务器(特别是域domain),以后的开源PowerShell
也得以管理Linux和Mac(通过PSQashqaiP)。

未来bash能做的作业,PowerShell也能做,PowerShell的强硬之处是它能够管理windows服务器(尤其是域domain),现在的开源PowerShell
也能够管理Linux和Mac(通过PSKoleosP)。

powershell版本

下载最新的PS程序

下载最新的PS程序

比方您的系统是window7依旧Windows Server 二〇一〇,那么PowerShell
2.0一度嵌入了,能够升级为3.0,4.0。
假若你的系统是Windows 8 只怕Windows server 贰零壹叁,那么PowerShell
3.0一度嵌入了,能够荣升为4.0。
假使您的种类为Windows 8.1大概Windows server 2013 奥迪Q52,那暗许已经是4.0了。

  Windows
Management Framework 4.0

设置后它会有powershell和它的付出IDE工具,ISE,分外正确!

设置后它会有powershell和它的支付IDE工具,ISE,十分不易!

启动 Windows PowerShell ISE  Integrated Scripting Environment**

一、进行powershell的程序

一、进行powershell的程序

在 Windows Vista、Windows Server 2009 和更高版本的 Windows
中,在“开始”菜单中,依次单击“开首”、“全体程序”、“附属类小部件”、“Windows
PowerShell”文件夹和“Windows PowerShell ISE”项。
在 Windows XP 和 Windows Server 二〇〇〇 中,若要运行 Windows
PowerShell,请在“伊始”菜单中各类单击“伊始”、“程序”、“附属类小部件”、“Windows
PowerShell”文件夹和“Windows PowerShell ISE”项。
在 Windows PowerShell 控制台、Cmd.exe
或“运行”框中,键入“powershell_ise.exe”。

澳门金沙国际 2

澳门金沙国际 3

PowerShell中一贯不公文的概念,唯有项【Item】的定义,像Windows驱动器、目录、文件、注册表、变量等新闻都被架空成了”项”的定义,PowerShell使用”项”来展开统管。本次大家只关心文件系统,即目录、文件,别的系统持续篇章再做询问。
有关文件系统的指令有如下一些:
New-Item
Copy-Item
Move-Item
Remove-Item
Rename-Item
Invoke-Item
理所当然,那几个命令不仅仅用于文件系统,像驱动器、注册表等都得以应用,本次我们只从文件系统的角度去关怀那一个命令。

二 、创立脚本,简单的Helloworld.ps1

② 、创设脚本,简单的Helloworld.ps1

执行powershell脚本
PowerShell[.exe] -Help | -? | /?

义务的自动化是以程序文件大概可实行脚本文件为底蕴的,PowerShell也支撑将指令列表做成脚本文件来举行。以下是Helloworld.ps1脚本文件的始末:

职责的自动化是以程序文件或然可实施脚本文件为根基的,PowerShell也支撑将指令列表做成脚本文件来举行。以下是Helloworld.ps1脚本文件的内容:

Restricted——暗中同意的装置, 不容许任何script运营
AllSigned——只好运营经过数字证书签名的script
RemoteSigned——运营本地的script不供给数字签名,可是运营从互连网上下载的script就必需求有数字签名
Unrestricted——允许具备的script运转
windows暗中认可不一样意任何脚本运转,你能够使用”Set-ExecutionPolicy”cmdlet来改变的您PowerShell环境。例如,你能够选拔如下命令让PowerShell运行在无界定的条件之下:
PS C:\Users\flt\ps> Set-ExecutionPolicy Unrestricted
Set-ExecutionPolicy :
对注册表项“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell”的造访被驳回。
要更改暗中认可(LocalMachine)成效
域的实践策略,请使用“以管理员身份运营”选项运营 Windows
PowerShell。要改成当前用户的推行政策,请运转 “Set-ExecutionPolicy -Scope
CurrentUser”。
PS C:\Users\flt> Set-ExecutionPolicy Unrestricted -Scope
CurrentUser
抑或输入以下命令:runas /noprofile /user:Administrator cmd
只是自身的总指挥账号没有密码,不大概切换来administrator权限,彰显无法起动服务。
总的来说那种经过的法子对于没有安装管理员密码的微处理器还是有个别难题。

$a = "Hello World!"
$a
echo $a > a.txt
dir a.txt
$a = "Hello World!"
$a
echo $a > a.txt
dir a.txt

利用java调用powershell脚本,可以选取以下命令:
String cmd = “cmd /c powershell -ExecutionPolicy RemoteSigned -noprofile
-noninteractive -file \””

Helloworld.ps1脚本文件的推汇兑况结果如下:

Helloworld.ps1脚本文件的实施景况结果如下:

  • scriptFilename + “\””;

PS E:\>.\Helloworld.ps1  --注意在执行它时要加.\,表示当前上当下的文章,类似于centos里的文件执行方法

PS E:\>.\Helloworld.ps1  --注意在执行它时要加.\,表示当前上当下的文章,类似于centos里的文件执行方法

一.最家常的运转脚本的章程是调用它:
PS C:\> & “C:\Belfry\My first Script.ps1”  
留意: 这里的”&”操作符能允许你调用三个指令, 脚本, 或函数. 比如:
只要路径不含有其余的空格, 那么你就足以忽略引号和’&’操作符.
PS C:\> C:\Belfry\Myscript.ps1
若是脚本就在当前路线下,
你无法不利用标志”.\”来告诉PowerShell该脚本就在此时此刻路线下.
PS C:\> .\Myscript.ps1  

Hello world!

Hello world!

二.Dot Sourcing
当使用方面包车型地铁语法执行脚本的时候,
脚本中定义的变量和函数会在本子运营停止后没有。如若你利用dot
sourcing来运作脚本的时候,
全体脚本中定义的变量和函数会在剧本运行结束后如故留存。
比方运营dot-sourcing脚本.
PS C:\> . “C:\Belfry\My first Script.ps1”  
PS C:\> . .\Myscript.ps1″

Directory: E:\

Directory: E:\

Powershell对象=属性+方法

Mode                LastWriteTime     Length   Name

Mode                LastWriteTime     Length   Name

在切实世界中,你也许已经驾驭对象正是那贰个能够摸到的东西。Powershell中的对象和现实生活很相像。例如要在现实生活中描述一把小刀。大家或者会分两方面描述它
澳门金沙国际,属性:一把小刀拥有一些异样的属性,比如它的水彩、创制商、大小、刀片数。那一个指标是森林绿的,重55克,有二个刀片,ABC公司生产的。由此属性描述了一个目的是什么。
方法:能够运用那几个目的做什么,比如切东西、当螺丝钉用、开洋酒盖。八个对象能干什么就属于那个目的的艺术。

----                -------------     ------ ----

----                -------------     ------ ----

按Insert键设置命令行编辑格局为改写情势,
再按三回Insert键命令行再次回到插入方式. 当命令行处于改写情势,
你输入字符将会代替被光标高亮展现的字符. 当命令行处于插入方式(暗中同意状态),
字符被插入到光标字符从前.
按Backspace键删除光标前二个字符(改写或插队格局). 改写格局中,
按Delete键删除高亮字符. 在插入情势, 按Delete键删除下三个字符.
按Tab键自动补全你输入的路径. 假使第②个有血有肉的路径不是您指望的,
再3遍按Tab知道科学的门路出现. 注意Tab键补全的门道只可以是时下子目录中.
例如, 若是你输入了c:\ 然后按Tab键, 可选路径之一将会是c:\windows,
而不是c:\windows\system32. 要进去结构中的下个层次(译者注:
文件系统中就是子目录), 在甄选的父目录后输入反斜杠, 然后按Tab键. 例如,
假若你一直按Tab直到看见c:\windows, 你能够在行尾输入一个反斜线,
然后继续按Tab键来遍历结构中的下一层.

-a---         5/30/2017   4:56 PM         16 a.txt

-a---         5/30/2017   4:56 PM         16 a.txt

前日为大家计算了在控制台的装有飞快键, 方便大家利用PowerShell.
实际上Cmd.exe或任何控制台都帮衬那个快速键的.

上边是在eShopOnContainers上的多少个例子,分别用ps和bash完毕了先后的安顿

下边是在eShopOnContainers上的四个例证,分别用ps和bash完毕了先后的配置

按键

功能

光标向左移动一个字符

Ctrl + ←

光标向左移动一个单词

光标向右移动一个字符

Ctrl + →

光标向右移动一个单词

Home键

光标移动到行首

End键

光标移动到行尾

Delete键

删除光标指向的字符

Backspace键或Ctrl + H

删除光标左边第一个字符

Ctrl + End键

删除从光标到行尾的所有字符

Esc键

清除当前输入的所有字符

Insert键

插入与改写模式切换

Tab键

Tab键自动完成命令,例如:自动完成命令的名称、cmdlet命令的参数、路径。如果第一个提示的对象不是您期望的结果,继续输入Tab键,将会自动显示下一个候选对象。

向上查询历史命令

向下查询历史命令

F7键

显示命令历史记录,以图形列表窗的形式给出所有曾经输入的命令,并可用上下箭头键选择再次执行该命令。

F8键

搜索命令对应的历史记录,在命令上输入命令的一部分内容后,按F8键,可以得到匹配该输入的历史命令。如果有多个匹配项,重复按F8,可以循环显示所有曾经输入的命令。如果命令行为空,则默认匹配所有历史输入的命令。

F9键

按编号选择历史命令,以图形对话框方式要求您输入命令所对应的编号(从0开始),并将该命令显示在屏幕上。

Enter键或Ctrl + M

回车(Enter)

Ctrl + C

终止当前执行的命令

Ctrl + Break

终止当前执行的命令

Alt + F7键

清除所有曾经输入的命令历史记录

#!/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:prod

for project in "${projectList[@]}"
do
    echo -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.
#!/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:prod

for project in "${projectList[@]}"
do
    echo -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把所有环境变量的记录保存在env: 虚拟驱动中,因此可以列出所有环境变量 。一旦查出环境变量的名字就可以使用$env:name 访问了。
PS C:\Users\flt\ps> ls env:

Name                           Value
----                           -----
ALLUSERSPROFILE                C:\ProgramData
APPDATA                        C:\Users\flt\AppData\Roaming
CommonProgramFiles             C:\Program Files\Common Files
CommonProgramFiles(x86)        C:\Program Files (x86)\Common Files
CommonProgramW6432             C:\Program Files\Common Files
COMPUTERNAME                   FLT-NB
ComSpec                        C:\Windows\system32\cmd.exe

PS C:\Users\flt\ps> $env:APPDATA
C:\Users\flt\AppData\Roaming
PS C:\Users\flt\ps> dir a.ps|Format-List *


PSPath            : Microsoft.PowerShell.Core\FileSystem::C:\Users\flt\ps\a.ps
PSParentPath      : Microsoft.PowerShell.Core\FileSystem::C:\Users\flt\ps
PSChildName       : a.ps
PSDrive           : C
PSProvider        : Microsoft.PowerShell.Core\FileSystem
PSIsContainer     : False
VersionInfo       : File:             C:\Users\flt\ps\a.ps
                    InternalName:
                    OriginalFilename:
                    FileVersion:
                    FileDescription:

PS C:\Users\flt\ps> Get-Variable

Name                           Value
----                           -----
$                              *
?                              True
^                              Get-Variable
args                           {}
ConfirmPreference              High

PS C:\Users\flt\ps> Get-Variable|fl *|more

Name        : $
Description :
Value       : more
Visibility  : Public
Module      :
ModuleName  :
Options     : None
Attributes  : {}

Value       : False
Name        : ?
Description : 上一命令的状态
Visibility  : Public
Module      :
ModuleName  :
Options     : ReadOnly, AllScope
Attributes  : {}

powershell代码如下

powershell代码如下

 

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\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
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\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

 

和谐深感,那四个东西在之后的先后铺排上都会发布各自强大的力量!

团结深感,那多个东西在后头的顺序安顿上都会表达各自强大的能力!

cmd控制台与ps控制台
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\flt>powershell
Windows PowerShell
版权所有 (C) 2009 Microsoft Corporation。保留所有权利。
PS C:\Users\flt>

例如通过ls获取当前目录的所有文件信息,然后通过Sort -Descending对文件信息按照Name降序排列,最后将排序好的文件的Name和Mode格式化成Table输出。
PS C:\Users\flt> ls | sort -Descending Name | Format-Table Name,Mode

Name                                                                            Mode
----                                                                            ----
Videos                                                                          d-r--
Searches                                                                        d-r--
Saved Games                                                                     d-r--
Roaming                                                                         d----
Desktop                                                                         d-r--
Contacts                                                                        d-r--
.vmrc_plugin_ovftool_settings.js                                                -a---

重定向
把命令的输出保存到文件中,‘>’为覆盖,’>>’追加。
PS C:\Users\flt\ps> "poweersheel" > a.txt
PS C:\Users\flt\ps> cat .\a.txt
poweersheel
PS C:\Users\flt\ps> "poweersheel" >>a.txt
PS C:\Users\flt\ps> cat a.txt
poweersheel
poweersheel

我们可以把powershell当成一个计算器。象键入命令行那样输入数学表达式,回车,powershell会自动计算并把结果输出。常用的加减乘除模(+,-,*,/,%)运算和小括号表达式都支持。
PS C:\Users\flt> 1+2+3
6
PS C:\Users\flt> 2/2
1
PS C:\Users\flt> 6/3
2
PS C:\Users\flt> 2*4
8
PS C:\Users\flt> 3%2
1
PS C:\Users\flt> 9%6
3
1gb/20mb*10kb
80kb*800*30/1gb
10GB/(80KB*5)/30

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\flt>powershell
Windows PowerShell
版权所有 (C) 2013 Microsoft Corporation。保留所有权利。

先看看$psversiontable,这个变量拆开来看就是ps-version-table,表示PowerShell中各组件的版本号列表。其中表示PowerShell自己的版本号(PSVersion),也包括.NET的版本号(CLRVersion),还有Windows版本号(BuildVersion)
PS C:\Users\flt> $psversiontable

Name                           Value
----                           -----
PSVersion                      4.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.18408
BuildVersion                   6.3.9600.16406
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.2

接下来看看$host变量,里面一个Version,表示PowerShell的版本号。
PS C:\Users\flt> $host

Name             : ConsoleHost
Version          : 4.0
InstanceId       : ec93e349-4833-4185-8f3d-8d365af04d70
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : zh-CN
CurrentUICulture : zh-CN
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace
PS C:\Users\flt> Get-Host

Name             : ConsoleHost
Version          : 4.0
InstanceId       : ec93e349-4833-4185-8f3d-8d365af04d70
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : zh-CN
CurrentUICulture : zh-CN
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

PS C:\Users\flt> Get-Host|Select-Object Name

Name
----
ConsoleHost 

相关文章