【powershell】入门和示例

▒ 目录 ▒

    • 🛫 导读
      • 开发环境
    • 1️⃣ 简介
      • 用途
      • IDE
      • 解决此系统上禁止运行脚本
    • 2️⃣ 语法
    • 3️⃣ 实战
      • 数据库备份
      • 执行循环拷贝文件夹
    • 🛬 文章小结
    • 📖 参考资料

🛫 导读

开发环境

版本号描述
文章日期2023-11-17
操作系统Win10 - 22H219045.3570
PowerShell5.1.19041.3570

1️⃣ 简介

PowerShell 是一种命令行 shell脚本语言一体化工具。
PowerShell 由 Windows 推出,用于帮助自动执行管理任务。 现在,它跨平台运行,可用于各种任务

PowerShell 的独特之处在于,它接受返回 .NET 对象而非文本。 这个功能让它可以更轻松地在一个管道中连接不同的命令

用途

可使用PowerShell完成多种任务,例如:

  • 云管理。 可以使用 PowerShell 管理云资源。 例如,可以检索有关云资源的信息,也可以更新或部署新资源。
  • CI/CD。 它也可以用作持续集成/持续部署管道的一部分。
  • 将 Active Directory 和 Exchange 任务自动化。 使用它,几乎可将所有的 Windows 任务自动化,例如在 Active Directory 中创建用户以及在 Exchange 中创建邮箱。

IDE

Windows PowerShell ISE
ISE(Integrated Scripting Environment)是 Windows PowerShell 的图形化界面,为用户提供了一个方便的脚本编写环境。它允许用户使用各种脚本语言(例如 PowerShell、 batch、VBScript 等)编写和调试脚本,并能够在不同的环境中执行脚本,如命令行、系统托盘和计划任务等。
Windows PowerShell ISE 提供了许多方便的功能,例如代码提示、语法高亮、断点调试、脚本执行历史记录、脚本加密等。此外,它还集成了许多常用的 PowerShell 命令和函数,方便用户快速使用和编写脚本。
在这里插入图片描述

VSCode
官网给出了VSCode使用的方方面面的使用说明,可见使用VSCode开发应该算是首选,
有兴趣的可以查看官网资料:https://learn.microsoft.com/zh-cn/powershell/scripting/dev-cross-plat/vscode/using-vscode

解决此系统上禁止运行脚本

小编的机器默认不允许执行powershell脚本,会报下面错误:
在这里插入图片描述

这个是windows安全策略导致的,直接在Powershell中输入 set-executionpolicy remotesigned,然后输入A回车即可。
在这里插入图片描述

2️⃣ 语法

Powershell的语法中的概念和常见的编程语言很像,包含下面几个方面:

  • 命令行: PowerShell 可以像命令提示符一样使用。在 PowerShell 中,每个命令都以increase service logoncount的形式指定,其中 increase是动词,service是名词,logoncount是特定于该命令的参数。
  • 变量: PowerShell 允许定义变量,并在脚本中使用这些变量。变量以美元符号( )开头,并可以使用点号( . )访问其包含的值。例如, ‘ )开头,并可以使用点号(.)访问其包含的值。例如,` )开头,并可以使用点号(.)访问其包含的值。例如,ComputerName = "localhost"表示定义名为ComputerName的变量,并将值设为localhost`。
  • 运算符: PowerShell 提供了与编程语言相似的运算符,例如数学运算符(+、-、*、/)、比较运算符(-lt、-le、-eq、-ne)和逻辑运算符(&&、||、!)。
  • 流程控制: PowerShell 提供了许多流程控制结构,例如if语句、switch语句和for循环。这些结构使管理员可以将多个命令组合在一起并根据特定条件执行它们。
  • 函数: PowerShell 提供了一种使用脚本定义自己的函数的方法。函数可以接受参数,也可以返回值。它们通常用于封装常见的任务或计算,使脚本更具可读性和可维护性。
  • 模块:模块是包含函数和其他可重用代码的可安装软件包。 PowerShell 提供了许多内置模块,但也允许自定义模块

ps: 当然,Powershell的使用还是和别的语言有很大的差别的,比如函数的使用就极其别扭,有兴趣的可以参考文章《PowerShell探秘(5-1)函数返回值的问题:https://blog.csdn.net/zooen2011/article/details/16875839》

下面编写一个函数作为例子,供大家参考:


$dirs = "C:\Program Files\MySQL\MySQL Server 8.1\bin\",
"C:\Program Files\MySQL\MySQL Workbench 8.0\",
"C:\Program Files\MySQL\MySQL Workbench 8.0 CE\",
"C:\Program Files\"
# echo $dirsfunction getValidatePath {#固定语法[CmdletBinding()]#参数声明param([Parameter()][array] $dirs)$mysql_path = "123"Foreach($d in $dirs){if (Test-Path "$d") {$mysql_path=$dbreak# return $mysql_path}}Write-Host $mysql_pathWrite-Output $mysql_path# $mysql_path 
}
$mysql_path2=getValidatePath $dirs

3️⃣ 实战

数据库备份

遍历可用的目录,找到可用的目录;执行Start-Process备份数据库。

$dirs =
"C:\Program Files\MySQL\MySQL Workbench 8.0 CE\",
"C:\Program Files\MySQL\MySQL Workbench 8.0\",
"C:\Program Files\MySQL\MySQL Server 8.0\bin\"# 遍历可用的目录
Foreach($d in $dirs){if (Test-Path $d) {$mysql_path = $dbreak}
}echo $mysql_path
$mysql_exe = $mysql_path+"mysqldump.exe"
echo $mysql_exe$processOptions = @{FilePath = $mysql_exe
# --host=localhost --port=3306
# ,"--single-transaction=TRUE","--routines","--events","--column-statistics=0",ArgumentList = "--default-character-set=utf8","--user=root","--password=root","--protocol=tcp","--single-transaction=TRUE","--routines","--events","--column-statistics=0","sw_prod"
#     RedirectStandardInput = "all.sql"RedirectStandardOutput = "all.sql"RedirectStandardError = "Error.txt"NoNewWindow = $true
}
# 启动mysqldump进程,备份数据
Start-Process @processOptions
Read-Host -Prompt "Press any key to continue..."

执行循环拷贝文件夹

使用python编写脚本需要python环境,Powershell脚本就方便多了。
注意事项:

  • xcopy拷贝目录,以\结尾!!!
  • 隐藏命令黑框:-WindowStyle Hidden
  • 比较:-le为小于等于;-lt为小于
# xcopy拷贝文件夹
$src = "J:\_ALL\CODE\gitcode\kinghzking\MyOpen\leaflet\d4"# 从5到15执行
for($i=5; $i -le 15; $i++)   
{$dst = "J:\_ALL\CODE\gitcode\kinghzking\MyOpen\leaflet\d$i"# $cmd = "xcopy /Y $src $dst"# 拷贝目录,以\结尾!!!$args = " /Y $src\ $dst\"Write-Host $argsStart-Process xcopy.exe -WindowStyle Hidden -ArgumentList $args
}

🛬 文章小结

庞大的Powershell,有点让人望而却步,小编也只是用到啥查啥,文章只做学习记录。
这里值得提的大概就是函数的返回值需要特别注意一下。

📖 参考资料

  • powershell官网文档: https://learn.microsoft.com/zh-cn/powershell/
  • PowerShell探秘(5-1)函数返回值的问题:https://blog.csdn.net/zooen2011/article/details/16875839

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/147170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

23111709[含文档+PPT+源码等]计算机毕业设计基于Spring Boot智能无人仓库管理-进销存储

文章目录 **软件开发环境及开发工具:****功能介绍:****论文截图:****数据库:****实现:****代码片段:** 编程技术交流、源码分享、模板分享、网课教程 🐧裙:776871563 软件开发环境及…

SQL server从安装到入门(一)

文章目录 彻底安装怎么安装?Polybase要求安装orcale jre 7更新 51或更高版本?安装完怎么配置?没有SSMS? 熟悉一下SMSS! 根据本人实际安装和初步使用SQL server的过程中,经历的一些关键性的步骤和精品文章。…

问卷工具价格一览:合理定价,满足您的预算需求

在市场调研、市场营销和客户反馈收集等方面,问卷调查是一项重要而有效的工具。而在众多的问卷工具中,Zoho Survey以其丰富的功能和灵活的定价模式而备受关注。Zoho Survey的定价如何?今天我们来聊一聊。 Zoho Survey提供了多种定价方案&…

ROS 学习应用篇(九)ROS中launch文件的实现

launch文件就好比一个封装好的命令库,我们按照在终端中输入的代码指令,全部按照launch语言格式封装在一个launch文件中,这样以后执行的时候,就可以不用开很多终端,一条一条输入代码指令。 lauch文件的语言风格很想我之…

用Postman发送xml数据

启动Postman: 点击左上角的“New”,在弹出窗中选择HTTP: 选择POST方法: 点击Body: 选择raw: 在右侧的下拉列表中选择XML: 在下面的输入框中输入或者从其它地方拷贝XML文本:…

websocket学习

写在前面 新公司用到了websocket技术&#xff0c;所以这里学习下。 1&#xff1a;Java原生 1.1&#xff1a;maven <dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.5.3</ver…

【高并发内存池】第一篇 项目简介及定长内存池

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

Android 实现三维空间坐标系(WebView与JS交互,支持多条曲线,可设置坐标轴翻转等)

全部代码已经上传&#xff0c;点击上方进行下载 支持多条曲线的绘制&#xff0c;可旋转拖动放大缩小 1.布局文件&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/…

plantuml最原始的主题如何设置

在startuml下一行添加 skin rose startuml skin rose:Hello world; :This is defined on several **lines**;enduml 效果如下&#xff1a; plantuml官网地址如下&#xff1a; ​​​​​​使用简单的文字描述画UML图的开源工具。轻松从简单的文字说明创建UML图。也有许多种可…

一键云端,AList 整合多网盘,轻松管理文件多元共享!

hello&#xff0c;我是小索奇&#xff0c;本篇教大家如何使用AList实现网盘挂载 可能还是有小伙伴不懂&#xff0c;所以简单介绍一下哈 AList 是一款强大的文件管理工具&#xff0c;为用户提供了将多种云存储服务和文件共享协议集成在一个平台上的便利性。它的独特之处在于&am…

Unity中Shader矩阵的转置矩阵

文章目录 前言一、转置的表示二、转置矩阵三、转置矩阵的总结1、(A^T^)^T^ A2、(A B)^T^ A^T^ B^T^3、(kA)^T^ kA^T^ (k为实数)4、(AB)^T^ B^T^A^T^5、如果 A A^T^ 则称A为对称矩阵6、如果 AA^T^ I(单位矩阵)&#xff0c;则称 A 为正交矩阵&#xff0c;同时 A^T^ A^-1…

复杂数据统计与R语言程序设计实验二

1、创建一个对象&#xff0c;并进行数据类型的转换、判别等操作&#xff0c;步骤如下。 ①使用命令清空工作空间&#xff0c;创建一个对象x&#xff0c;内含元素为序列&#xff1a;1&#xff0c;3&#xff0c;5&#xff0c;6&#xff0c;8。 ②判断对象x是否为数值型数据。 ③…

OpenGL 的学习之路-4(变换)

三大变换&#xff1a;平移、缩放、旋转&#xff08;通过这三种变换&#xff0c;可以将图像移动到任意位置&#xff09; 其实&#xff0c;这背后对应的数学在 闫令琪 图形学课程 中有过一些了解&#xff0c;所以&#xff0c;理解起来也不觉得很困难。看程序吧。 1.画三角形&am…

OpenCV入门2——图像视频的加载与展示一些API

文章目录 题目OpenCV创建显示窗口OpenCV加载显示图片题目 OpenCV保存文件利用OpenCV从摄像头采集视频从多媒体文件中读取视频帧将视频数据录制成多媒体文件OpenCV控制鼠标关于[np.uint8](https://stackoverflow.com/questions/68387192/what-is-np-uint8) OpenCV中的TrackBar控…

初试 jmeter做压力测试

一.前言 压力测试是每一个Web应用程序上线之前都需要做的一个测试&#xff0c;他可以帮助我们发现系统中的瓶颈问题&#xff0c;减少发布到生产环境后出问题的几率&#xff1b;预估系统的承载能力&#xff0c;使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步…

mac无法向移动硬盘拷贝文件怎么解决?不能读取移动硬盘文件怎么解决

有时候我们在使用mac的时候&#xff0c;会遇到一些问题&#xff0c;比如无法向移动硬盘拷贝文件或者不能读取移动硬盘文件。这些问题会给我们的工作和生活带来不便&#xff0c;所以我们需要找到原因和解决办法。本文将为你介绍mac无法向移动硬盘拷贝文件怎么回事&#xff0c;以…

CTFSHOW 文件上传

web151 JS前端绕过 直接上传 png的图片马 然后抓包修改为php asystem("ls /var/www/html"); asystem("cat /var/www/html/flag.php"); web152 和151一样的方法也可以实现上传 asystem("ls /var/www/html"); asystem("cat /var/www/html…

Anaconda的安装使用及pycharm设置conda虚拟环境

1.python和包以及anaconda的概念关系 python “工人” 包 “工具” 环境 “工具箱” anaconda “放很多工具箱的大箱子” python等于工人这个好理解&#xff0c;就是编程需要用python来实现对应功能&#xff0c;即工人完成某项工程。 包等于工具&#xff0c;就是工人…

Excel vlookup 如何使用

Excel vlookup 如何使用 打开WX, 搜索 “程序员奇点” Excel vlookup可以说是利器&#xff0c;非常好用的工具&#xff0c;用来查询 Excel 或者进行数据匹配&#xff0c;十分方便。 VLookuP 如何使用&#xff0c;不常用的同学经常容易忘记&#xff0c;这次做个记录&#xff…

【Python自动化】定时自动采集,并发送微信告警通知,全流程案例讲解!

文章目录 一、概要二、效果演示三、代码讲解3.1 爬虫采集行政处罚数据3.2 存MySQL数据库3.3 发送告警邮件&微信通知3.4 定时机制 四、总结 一、概要 您好&#xff01;我是马哥python说&#xff0c;一名10年程序猿。 我原创开发了一套定时自动化爬取方案&#xff0c;完整开…