【powershell】入门和示例

news2025/1/10 11:37:02

▒ 目录 ▒

    • 🛫 导读
      • 开发环境
    • 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 $dirs

function getValidatePath {
	#固定语法
    [CmdletBinding()]
	#参数声明
	param(
        [Parameter()]
        [array] $dirs
    )

    $mysql_path = "123"
    Foreach($d in $dirs){
        if (Test-Path "$d") {
            $mysql_path=$d
            break
            # return $mysql_path
        }
    }
    
    Write-Host $mysql_path
    Write-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 = $d
        break
    }
}


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 $args
    Start-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.coloradmin.cn/o/1221036.html

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

相关文章

设计模式-备忘录模式-笔记

动机(Motivation) 在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态。如果使用一些公有接口来让其他对象得到对象的状态,便会暴露对象的细节…

ubuntu20.04在docker下运行ros-noetic

经常折腾虚拟机各双系统 , 想着不如把docker利用起来,下面算是一个初学者使用docker运行ros的记录: 1. 安装 使用官方安装脚本自动安装 curl -fsSL https://test.docker.com -o test-docker.shsudo sh test-docker.sh验证是否安装成功 doc…

openRPA开源项目源码编译

最近接触到了一个新的领域——RPA,RPA全称Robotic Process Automation,中文名为机器人流程自动化。RPA可以视作一个数字机器人,它可以通过程序来模拟人与软件系统的交互过程,代替人工将大量重复、有规则的计算机操作自动化&#x…

【Vue配置项】 computed计算属性 | watch侦听属性

目录 前言 computed计算属性 什么是计算属性? Vue的原有属性是什么? 得到的全新的属性是什么? 计算属性怎么用? 计算属性的作用是什么? 为什么说代码执行率高了? computed计算属性中的this指向 co…

CTFd-Web题目动态flag

CTFd-Web题目动态flag 1. dockerhub注册2. dockerfile编写3. 上传到docker仓库4. 靶场配置5. 动态flag实现 1. dockerhub注册 想要把我们的web题目容器上传到docker仓库中,我们需要dockerhub官网注册一个账号,网址如下 https://hub.docker.com/2. dock…

Android Glide加载transform CenterCrop, CircleCrop ShapeableImageView圆形图并描边,Kotlin

Android Glide加载transform CenterCrop, CircleCrop ShapeableImageView圆形图并描边,Kotlin import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.bumptech.glide.load.resource.bitmap.CenterCrop import com.bumptech.glide.…

基于ssm+vue设备配件检修管理系统

摘要 随着工业设备的日益复杂和多样化,设备配件的检修管理成为保障生产运行和设备寿命的关键环节。本研究基于SSM框架(Spring Spring MVC MyBatis),致力于设计和实现一套全面、高效的设备配件检修管理系统。该系统不仅能够提高设…

从0开始学习数据结构 C语言实现 1.前篇及二分查找算法

一、前篇 1、什么是数据结构? 数据结构是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系 2、时间复杂度与空间复杂度 大O符号是用于描述函数渐进行为的数学符号 常用函数的增长表 阶乘O(n!) > 指数…

常见面试题-MySQL软删除以及索引结构

为什么 mysql 删了行记录,反而磁盘空间没有减少? 答: 在 mysql 中,当使用 delete 删除数据时,mysql 会将删除的数据标记为已删除,但是并不去磁盘上真正进行删除,而是在需要使用这片存储空间时…

【原创】java+swing+mysql校园活动管理系统设计与实现

前言: 本文介绍了一个校园活动管理系统的设计与实现。该系统基于JavaSwing技术,采用C/S架构,使用Java语言开发,以MySQL作为数据库。系统实现了活动发布、活动报名、活动列表查看等功能,方便了校园活动的发布和管理&am…

如何合理估算 Java 线程池大小

前 言 Java 中的线程创建会产生显著的成本。创建线程会消耗时间,增加请求处理的延迟,并且涉及 JVM 和操作系统的大量工作。为了减轻这些开销,线程池发挥了作用。 在本文中,我们将深入研究确定理想线程池大小的艺术。经过微调的线…

【数据结构】栈与队列的实现

栈与队列是数据结构中重要的结构, 可以用于解决一些题目 模拟实现时可以增加对于这些结构的理解,也可以巩固我们的语言水平,解决某些题目也会有很好的效果 话不多说 目录 栈的实现结构体的定义:初始化栈:压栈:出栈&am…

leetcode栈和队列三剑客

用队列实现栈 队列是先进先出的,而栈是只能在栈顶进行出栈和入栈,那我们这道题要用队列来实现栈的话,这里给的思路是两个队列,因为两个队列的话就可以相互导数据,比如我们来实现这个题目的push函数,我们的栈…

面试其他注意事项

面试其他注意事项 一、面试反问 这个岗位的日常工作和主要职责是什么?咱们这边主要负责什么业务,用到了哪些技术呢?对于我们校招生有没有培养体系呢?脱产培训,还是边工作边熟悉?会有导师带嘛?…

飞书开发学习笔记(八)-开发飞书小程序Demo

飞书开发学习笔记(八)-开发飞书小程序Demo 一.小程序开发概述 1.1 小程序开发概述 飞书开发文档中查看:小程序开发概述 飞书小程序是指可以运行在飞书客户端中的小程序,小程序的一套代码可以适配 Android、iOS、PC 多平台,且用户体验与飞书…

计算机多媒体

1,媒体、多媒体 2,体系结构 3,采样、编码

公寓水电管理系统

springbootmybatisthymeleaf 这次练习是尝试将layer与系统结合起来,将新增、修改、删除都和弹窗结合起来。 一、需求分析 二、数据库 三、模块 1、登录页面 哈哈哈,之前做的登录页面都好丑,这是目前做的最好看的一次了。 超级管理员&…

卷积神经网络(CNN)鲜花的识别

文章目录 前期工作1. 设置GPU(如果使用的是CPU可以忽略这步)我的环境: 2. 导入数据3. 检查数据 二、数据预处理1. 加载数据2. 可视化数据3. 再次检查数据4. 配置数据集 三、构建CNN网络四、编译五、训练模型六、模型评估 前期工作 1. 设置GP…

串口通信原理及应用

Content 1. 前言介绍2. 连接方式3. 数据帧格式4. 代码编写 1. 前言介绍 串口通信是一种设备间非常常用的串行接口,以比特位的形式发送或接收数据,由于成本很低,容易使用,工程师经常使用这种方式来调试 MCU。 串口通信应用广泛&a…

【教3妹学编程-算法题】高访问员工

2哥 : 3妹,今天周五怎么还下班这么晚啊?这么晚了才回来 3妹:项目快上线了, 最近事情比较多,再累也要干, 撸起袖子加油干! 2哥 : 辛苦辛苦, 哎,你看到王自如格力那个采访了…