【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的过程中,经历的一些关键性的步骤和精品文章。…

Vue项目引入translate.js 国际化自动翻译组件

建议 translate.js 配合 i18 使用 本文只介绍 translate.js 的引入和使用方式 无论什么库 在翻译上 都不会做到 ( 100%翻译 && 100%准确 ) 所以不要吹毛求疵 官方文档:translate.js 前端翻译 该组件优点: 自动翻译 自动…

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

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

通过python简单预测彩票下次是否中奖:LSTM、LogisticRegression

背景:根据往期历史中奖记录,预测下次中奖的概率!总共有日期和中奖结果两个字段,中奖为1,不中奖为0,休息日的记录删除不要! 一:LSTM预测 import numpy as np import pandas as pd im…

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

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

shell 拒绝恶意连接脚本 centos7.x拒绝恶意连接脚本

1. crontab -l 脚本频率: */2 * * * * /bin/bash /home/shell/deny.sh 2. 脚本: rm -rf /home/shell/ip_list cat /var/log/secure | grep "Failed password for" | awk {print$(NF-3)} | sort | uniq -c > /home/shell/ip_list #cat /va…

用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…

赤壁

《赤壁》 作者&#xff0f;罗光记 烽火燃尽几多愁&#xff0c; 赤壁一战尽神州。 江山如画英雄梦&#xff0c; 青史长河泪满头。 战鼓擂破黄沙地&#xff0c; 剑气冲云碧空流。 万里长歌断肠夜&#xff0c; 古今多少壮心愁。

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…

js制作九宫格抽奖功能

HTML代码&#xff1a; <div id"lottery"><div class"lottery-item">1</div><div class"lottery-item">2</div><div class"lottery-item">3</div><div class"lottery-item"&g…

【Flutter】设计原则(2)深入解析 SOLID 原则的应用

【Flutter】设计原则(2)深入解析 SOLID 原则的应用 文章目录 一、前言二、SOLID原则三、在 Flutter 中应用单一职责原则1. 专注单一功能的 Widget2. 提高代码可维护性四、在 Flutter 中应用开闭原则1. 利用多态和基类实现可扩展的 Widget2. 增强应用的可扩展性和灵活性五、在…

Elasticsearch同义词最佳实践

毫无疑问&#xff0c;使用同义词是搜索工程师工具箱中最重要的技巧之一。尽管新手有时会低估同义词的重要性&#xff0c;但几乎所有搜索系统都离不开它。与此同时&#xff0c;人们有时仍会低估与使用同义词相关的一些复杂情况和微妙情形&#xff0c;甚至高级用户也不例外。 用好…

复杂数据统计与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…