news 2026/1/16 4:05:43

powershell 入门及简单应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
powershell 入门及简单应用

poweshell介绍

官方介绍:https://docs.microsoft.com/zh-cn/powershell/scripting/overview?view=powershell-5.1

Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。

.NET Framework 是管理面向 .NET Framework 的应用的运行时执行环境。 它包括公共语言运行时(提供内存管理和其他系统服务)和一个全面的类库(使程序员能利用强大可靠的代码实现所有主要领域的应用开发)。

PowerShell ISE是基于图形用户界面的应用程序, 并且是Windows PowerShell的默认编辑器。 ISE代表集成脚本环境。它是一个接口, 我们可以在其中运行命令以及编写, 测试和调试PowerShell脚本, 而无需在命令行界面中编写所有命令

启动powershell

现在的Windows系统中一般都集成了PowerShell,启动方法有如下几种:
a) 开始菜单 -> 运行(run) -> 输入”PowerShell”。启动成功后和上图一样。


b) 命令提示符(Command Prompt) -> PowerShell。启动后效果如下:

版本查询

修改脚本执行策略

windows系统默认禁止脚本运行,以管理员身份运行先放开并允许所有的script运行


程序、脚本、bat命令调用

& 'C:\Users\Admin\AppData\Local\google\Chrome\Application\chrome.exe' ./echohello.ps1 & cmd /c whoami

PowerShell帮助

PowerShell命令叫做cmdlet。所有的cmdlet命令规则都遵循动词-名词这种语法结构,如Get-Command、Get-Content等,如下Get-Command命令意思是获取包含get的所有命令集合:

获取命令帮助文档

计算命令执行时间

如果想计算一个命令执行时间,可以使用Measure-Command命令,如下:

命令的别名

PowerShell一些内置命令都有别名,方便记忆和输入,可以用Get-Alias命令查看别名

Get-Alias |Group-Object Definition |where {$_.Name -match 'get'}

对象类型、属性和方法

网络和端口测试

返回值判断

与cmdlet命令使用$?,对bat命令或者程序使用$LASTEXITCODE

PS C:\Users\lixiang> & where.exe curl C:\Windows\System32\curl.exe PS C:\Users\lixiang> $LASTEXITCODE 0 PS C:\Users\lixiang> Write-Host "HI" HI PS C:\Users\lixiang> $? True

下载与解压

## 适应于http下载,原生server 2008 及以上 速度比invoke-webrequest 快 function Download-File($file_url, $file_path) { $OSversion = [Environment]::OSVersion.Version if ($OSversion.Major -le 6) { $client = New-Object -TypeName System.Net.WebClient $client.DownloadFile($file_url, $file_path) } else { #在server2012中NET Framework 小于4.6,使用Invoke-WebRequest https://example 出现“请求被中止: 未能创建 SSL/TLS 安全通道”的解决办法 [System.Net.ServicePointManager]::SecurityProtocol=[System.Net.SecurityProtocolType]::Tls12 Invoke-WebRequest -Uri $file_url -OutFile $file_path -UseBasicParsing } if (! $?) { throw "$file_url download to $file_path error" } } Download-File $bvsshUrl $filePath function Unzip-File($file_path, $file_dir) { if (!(Test-Path $file_path)) { throw "Not exist $file_path" } if (!(Test-Path $file_dir)) { New-Item -ItemType Directory $file_dir -Force } $OSversion = [Environment]::OSVersion.Version if ($OSversion.Major -lt 10) { # 此方法在wincore2004 上无法使用,所以建议只对win10以下版本使用 $shellApp = New-Object -ComObject Shell.Application $files = $shellApp.NameSpace($file_path).Items() # 删除已存在的解压后的文件 $files|where{Remove-Item ("$file_dir/{0}*" -f $_.name ) -Force} $shellApp.NameSpace($file_dir).CopyHere($files) } else { Expand-Archive -Path $file_path -DestinationPath $file_dir -Force if (! $?) {throw "Unzip $file_path failed"} } }

文件和目录

# 文本查看 Get-Content -Path ".\Desktop\aaa.txt" # 持续查看,类似tail -f Get-Content -Path ".\Desktop\aaa.txt" -ReadCount 0 -Tail 2 -Wait # 目录创建 New-Item -Type Directory -Path ".\aa" # 目录删除 Remove-Item -Recurse -Force -Path ".\aa"

服务和进程

# 查看服务状态 Get-Service $service | Select-Object -Property Name, StartType, Status # 结束任务进程 Get-Process -ProcessName "DingTalk" |foreach { & cmd /c taskkill.exe /pid $_.Id /f}

脚本和函数传参

# 1 $args传参 foreach ($i in $args) { Write-Host "$i " -NoNewline } # 2 命令行参数绑定 param ( [string]$Name=$(throw "Parameter missing: -name Name"), [int]$Age=$(throw "Parameter missing: -age x as number"), [switch]$Man ) # 3 设置命令行参数集 使用ParameterSetName解析命令行参数,可有效的设置参数集 Param ( [CmdletBinding(DefaultParameterSetName="SetUp")] [Parameter(ParameterSetName="SetUp", Mandatory=$False)] [String]$ClientName, [Parameter(ParameterSetName="Run", Mandatory=$True)] [String]$SK, [Parameter(ParameterSetName="Run", Mandatory=$True)] [String]$AK, [Parameter(ParameterSetName="Run", Mandatory=$True)] [Parameter(ParameterSetName="SetUp", Mandatory=$True)] [String]$Params=$(Throw "Parameter Missing: -Params xxx As String.") ) 通过$PSCmdlet.ParameterSetName查看脚本运行的哪个参数集 $Sex='Woman' if ( $Man ) {$Sex='Man'} write-host ("name: {0} age: {1} sex: {2}" -f($Name, $Age, $Sex)) ################################# # 1 位置传参 function my-test($Name, $Age=24){ Write-Host ("name:{0}, age: {1}" -f($Name, $Age)) } my-test 'lixiang' 26 # 2 参数绑定 function my-test { param ( [string]$Name= "lx", [int]$Age= 24 ) Write-Host ("name:{0}, age: {1}" -f $Name, $Age) } my-test -Name "ddd" -Age 23 my-test

二进制传参

$a = @("list disk", 'list vol') $p = "C:\Windows\System32\diskpart.exe" $a | & $p

数组和字典

# array 数组 $array = New-Object -TypeName System.Collections.ArrayList $array.Insert(0, 'qaz') foreach ($i in 1..3) {$array.Add($i)} Write-Host $array # hash表 字典 $dict = New-Object -TypeName System.Collections.Hashtable $a = @('lixiang', 'xiaoming') $b = @(26, 25) for($i=0; $i -lt $($a.Count); $i++) { $dict[$a[$i]]=$b[$i] } foreach ($i in $dict.Keys) { Write-Host ("{0}: {1}" -f($i, $dict[$i])) } # 结果输出 xiaoming: 25 lixiang: 26

计算文件的hash值

# MDS值 Get-FileHash -Path .\aa.ps1 -Algorithm MD5 # SHA256值 Get-FileHash -Path .\aa.ps1 -Algorithm SHA256

其他

# windows server 支持 sconfig # 查看系统配置 msconfig # 查看当前用户 whoami # 查看系统信息 systeminfo
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/26 4:17:11

Sketchy-3DIS:草图边界框监督下的弱监督 3D 实例分割

一、引言 1.1 研究背景与意义 随着 3D 数据集的快速扩充和 3D 场景理解需求的日益增长,3D 计算机视觉领域的各类任务(如目标检测、语义分割、实例分割等)受到了学术界和工业界的广泛关注。其中,3D 实例分割作为一项基础性且具有…

作者头像 李华
网站建设 2025/12/24 17:17:23

如何为LobeChat添加自定义插件以拓展AI服务能力?

如何为 LobeChat 添加自定义插件以拓展 AI 服务能力 在智能助手日益深入日常工作的今天,用户早已不再满足于“问一句答一句”的简单交互。他们希望 AI 能真正帮自己完成任务——比如查天气、安排会议、查询订单状态,甚至调用内部系统接口执行审批流程。然…

作者头像 李华
网站建设 2026/1/9 23:28:27

ASTM D4169-DC6 包装稳定性

标准概述ASTM D4169-DC6是美国材料与试验协会 (ASTM International) 制定的运输包装系统性能测试标准,全称为 "Standard Practice for Performance Testing of Shipping Containers and Systems"(运输集装箱和系统性能测试标准实施规程&#x…

作者头像 李华
网站建设 2026/1/12 17:05:16

Git Commit规范建议:管理你的AI模型开发代码版本

Git Commit规范建议:管理你的AI模型开发代码版本 在人工智能,尤其是大语言模型(LLM)迅猛发展的今天,AI研发早已不再是“跑通一个notebook”就结束的单人实验。它已经演变为一场涉及数据、训练、部署、监控的系统工程&…

作者头像 李华
网站建设 2026/1/10 10:30:09

ollama+ vLLM:构建低成本大模型私有化推理方案

ollama vLLM:构建低成本大模型私有化推理方案 在企业级 AI 应用快速落地的今天,一个现实问题摆在面前:如何在有限的 GPU 资源下,支撑高并发、低延迟的大语言模型服务?许多团队最初选择基于 Hugging Face Transformers…

作者头像 李华
网站建设 2026/1/10 6:40:08

Dify工作流引擎整合Qwen3-VL-30B完成多步骤视觉推理

Dify工作流引擎整合Qwen3-VL-30B完成多步骤视觉推理 在金融审计报告中,一张图表的纵坐标单位从“万元”悄悄变成了“元”,文字描述却声称利润翻倍——这种图文不一致的欺诈行为,传统OCR加文本比对工具几乎无法识别。而在医疗影像分析场景&…

作者头像 李华