PowerShell知识整理

前言

1.PowerShell命令不区分大小写
2.建议把PowerShell窗口的透明度调到85%。
3.如无特殊情况,以下代码大部分都用别名,如要了解其全名和信息,可用 get-help 命令名 查看。
4.如果文件名字中有空格,则要用引号引起来,其它情况不用。
5.如无特殊说明,文件名必须包含后缀名,可以包含文件路径。
6.PowerShell其内容且十分庞杂,文本主要旨在记录一些常用的PowerShell命令,并对PowerShell脚本相关的知识,做一个简要的记录,帮助读者快速上手PowerShell,因此本文相对简短。后期如果有时间,作者会进行补充。
7.作者能力有限文章难免有勘误,请读者多多包含。

一.快捷键

快捷键描述
ctrl+L清屏
左箭头/右箭头向左或向右移动光标,每次移动一个字符的距离
ctrl+左箭头/右箭头向左或向右移动光标,每次移动一个单词的距离
shirt+左箭头/右箭头向左或向右移动光标,并一个一个选中字符
shirt+ctrl+左箭头/右箭头向左或向右移动光标,并一个一个选中单词
home/end移动光标到命令的开头或结尾
shirt+home/end选中从光标位置到命令的开头或结尾的所有内容
ctrl+home/end删除从光标位置到命令的开头或结尾的所有内容
上箭头/下箭头切换到上一条或下一条命令
ESC清空正在输入的命令
ctrl+C停止正在执行的命令
ctrl+Z撤销
pgup/pgdn向上或向下翻页
Tab自动补齐命令或文件名,多次按下,可去切换结果
alt+F7清空历史命令(可用history命令查看历史命令)

二.符号

2.1 常用符号

符号语法描述
>命令 > 文件名用于将结果覆盖到指定文件中 (若指定文件不存在,则新建一个)
>>命令 >> 文件名用于将结果追加到指定文件中 (若指定文件不存在,则新建一个)
.\.\指代当前目录
&&命令表示该命令描述的是一个可执行对象
%0%0指代自身文件名,不包括后缀名
$$变量名定义变量
``要转义的字符反引号,用于在双引号中转移字符,如`n表示换行符号
’‘’字符串‘不能调用参数
“”“字符串”可以调用参数

2.2 条件运算符

符号描述
-eq等于
-ne不等于
-gt大于
-ge大于等于
-lt小于
-le小于等于
-and
-or
-not
-xor异或
-contantins包含于
-notcontantins不包含于

三.常用辅助命令

符号语法描述
cls单独使用用于清屏
gcm单独使用查看所有PowerShell命令,并可通过管道符进行搜索
manman 命令名查看指定命令的详细信息,包括它的别名
h单独使用查看你近期使用过的命令
pwd单独使用查看当前的路径
exit单独使用退出powershellma
systeminfo单独使用查看计算机的详细版本信息
$psversiontable单独使用查看powershell版本

四.信息的筛选

4.1 正则表达式

更详细的知识请看文档:关于正则表达式 - PowerShell | Microsoft Learn

符号语法描述
-match字符串 -match 字符串或正则表达式用于匹配指定字符,并返回bool值 (以右边为主)
[] 和 [^]① [abc] 匹配abc ② [^abc] 匹配非abc的字符 ③ [a-z] 匹配a到z的字符① [] 或 [^]用于匹配单个字符, ② ^表示非符号,[]号内放字符集
\d 和 \D单独使用① \d用于匹配单个十进制数 ② \D用于匹配单个非十进制数
\w 和 \W单独使用① \w用于匹配单个阿拉伯数字或大小写字母 ② \W用于匹配单个特殊字符
点 .单独使用通配符,匹配单个任意字符
\s 和 \S单独使用① \s用于匹配单个空格 ② \S用于匹配单个非空格字符
*单独使用① 单独使用,用于匹配0个或多个任意字符不能以*开头,在分组()中也不能以*开头
+其它符号+根据上一个元素匹配规则再进行一次或多次如: a+ 即用a匹配多次, [abc]+ 即用[abc]匹配多次
?其它符号?根据上一个元素匹配规则再进行0次或1次如: a? 即用a匹配0次或1次, [abc]? 即用[abc]0次或1次
{}其它符号{n} 或 {n,} 或 {n,m} n和m为整数① 符号{n}表示,根据符号匹配n次 ② 符号{n,}表示,根据符号匹配至少n次 ③ 符号{n,m}表示,根据符号匹配n到m次
^ 和 $① ^ 放在匹配字符串的开头 ② $ 放在匹配字符串的结尾① ^ 用于匹配字符串的开头 ② $ 用于匹配字符串的结尾
\\要转义的字符需要转义的字符有:[]().\^$|?*+{}
\t \n \r单独使用分别匹配换行符,换行符,换行符
()(其它符号)(其它符号)将其它符号用()括起来进行分组, 并将放到$Matches局部变量中,其存储结构如下: ① $Matches[0]存整个匹配的结果 ② $Matches[1]及以后存每组匹配的结果 ③ 可用输入$Matches查看所有结果
?<>(?<键名>其它符号)放在分组符号()的开头,用于对$Matches变量中取键名,相比下标更直观,但注意一旦取了键名,那么下标就不能用了
<# 正则表达式中的替代
#  1.字符串 -replace 正则表达式,替换用的字符串
#  2.可用$n指代分组匹配后的字符串,注意n是从1开始的,注意可用$&表示整个文本
#  3.如果在双引号中用$n,则必须用反引号进行转义,写成`$n
#  4.如果替换用的字符串中要包含字符$,则在单引号中用$$,在双引号中用`$
#>

$str = '<img src="a.png" style="width:350px" />'
$context = 'src ="b.png" style="width:400px"'
$res = $str -replace '(<img)(.*)(/>)',"`$1 $context `$3"  # 用三个()分成三组,可用$1,$2,$3分别指代。因为要在字符串中调用参数$src,故用双引号,且要对$n进行转义,写成`$n。最后将结果存到$res中,分组匹配的原理: 按顺序依次匹配(<img),(.*),(/>)只有当前一组的匹配成功,才进行下一组的匹配,以此循环,当所有组都匹配完成后,再进行替换操作。注意如果(<img)已匹配成功,当再次遇到“<img”时则用(.*)去匹配了。因此当有多个<img XXXX/>镶嵌套时,每次运行该代码只能,改变最外层的<img XXXX/>。
write-host $str
write-host $res

4.2 管道

4.2.1 基本概念

1.管道符 | 其作用是:在几组用管道符连接命令中,上一组命令到的结果,成为下一组命令的输入。(类似于SQL语言中的where嵌套查询)。且可以用符号 = = 直接指代上一组命令到的结果, = = 注意也只能用也 _== 直接指代上一组命令到的结果,==注意也只能用也 ==直接指代上一组命令到的结果,==注意也只能用也_,不可用其它变量

2.可以用()整个管道括起来,当作一个匿名变量使用,如: (gcm | ?{$_.name -match ‘^a’}).name[0]

4.2.2 Get-Member

Get-Member可简写成gm,用于查看对象有哪些属性

# 查看对象有哪些属性
ls | gm

4.2.3 Where-Object

Where-Object可简写成Where或?。在{}中放条件判断语句或正则表达式,用于过滤列表中的元素值

# 1.查询以sy字符开头的文件名
ls | ?{$_.name -match '^sy' }   #注意要加大括号

# 2.查询以exe字符结尾的文件名
ls | ?{$_.name -match 'exe$' } 

# 3.查询包含in字符的文件名
ls | ?{$_.name -match 'in' } 

# 4.查询文件大小大于2kb的文件
ls | ?{$_.length -gt 2kb } 

4.2.4 Select-Object

ForEach-Object可简写成select,用于输出指定的列或行

# 1.输出属性为name和length的列
ls | select name,length   # 不同属性名用逗号隔开

# 2.输出前3行或后3记录
ls | select -f 3          # -f是-fist的别名
ls | select -l 3          # -l是-last的别名

# 3.输出第1和第3条记录
ls | select -index 0,2

# 4.输出除了第3条记录外的所有记录
ls | select -skip 2

# 5.输出不重复的记录
1,2,3,4,4,5,5 | select -unique 

# 5.给输出的列取别名
ls | select @{Name="fileName";Expression={$_.Name}}

4.2.5 Sort-Object

Sort-Object可简写成sort,用于数据进行排序

# 1.先根据length排序,再根据name排序
ls | sort length,name

# 2.根据name倒序排序
ls | sort -Descending name

4.2.6 ForEach-Object

ForEach-Object可简写成foreach和%,用于对每一条记录进行处理。

# 使每一项都乘5
1..10 | %{$_*5 }

4.2.7 Group-Object

Group-Object可简写成group,用于指定属性进行分组,同时输出每组的个数

# 根据length属性进行分组
ls  | group length    

4.2.8 保存结果

# 1.Tee-Object ====================================================================
# Tee-Object可简写成tee,用于把筛选结果输出到文件或变量中

# (1).筛选结果输出到文件中
ls | select -f 3 | tee C:\Users\asus\Desktop\a.txt

# (2).筛选结果输出到变量中
ls | select -f 10 | tee -v files   # 注意:这里的变量名前面不要加$,-v是-Variable的别名

# 补.其实不用tee也能把筛选结果输出到变量中
$files = ls | select -f 10


# 2.Export-Csv和Import-Csv ========================================================
# Export-Csv和Import-Csv可简写成epcsv和ipcsv,用于把筛选结果输出到csv文件中,或导入csv文件 

# (1).筛选结果输出到csv文件中
ls | select -f 10 | epcsv C:\Users\asus\Desktop\a.csv -NoTypeInformation 
# 用-NoTypeInformation去掉开头的类型信息

# (2).导入csv文件,并保存到mytable变量中
ipcsv c:\Users\asus\Desktop\a.csv | tee -v mytable

4.3 其它

也可以用find或findstr等进行信息的筛选。

五.文件

5.1 查看文件

注意:如果要查询文件,建议用管道符

命令常用语法描述
cdcd 路径名用于跳转到相应的路径,建议路径名以\结尾,避免跳转失败
catcat 文件名① 查看指定文件中的内容 ② 如果出现乱码的情况可用参数 -encoding UTF8
ls单独使用查看当前目录的所有文件和文件夹
tree① tree ② tree /f① tree查看当前目录即所有子目录中的文件夹 ② /f参数查看当前目录即所有子目录中的文件夹和文件
fhxfhx 文件名以十六进制形式打开文件

5.2 创建与删除

命令常用语法描述
Test-PathTest-Path 文件名用于检查指定文件或文件夹是否存在,返回bool值
mkdirmkdir 文件名用于创建文件夹
new-itemnew-item 文件名① tree查看当前目录即所有子目录中的文件夹 ② /f参数查看当前目录即所有子目录中的文件夹和文件
rmrm 文件名① 用于删除文件或文件夹,且删除后不会进入回收站 ② 如果文件夹中有内容,则删除时会提醒用户

5.3 拷贝与移动

命令常用语法描述
cpcp 源文件 目标文件① 复制文件到指定位置,文件夹建议以/结尾 ② 用 .\ 指代当前路径
mvmv 源文件 目标文件① 源文件和目标文件路径相同,且不存在目标文件则对源文件重命名 ② 源文件和目标文件路径相同,且存在目标文件则移动源文件       ③ 源文件和目标文件路径不同,且不存在目标文件则先创建再移动源文件

5.4 其它

命令常用语法描述
renren 旧名称 新名称对文件进行重命名,用 .\ 指代当前路径 (可改文件后缀名)
Compress-ArchiveCompress-Archive 原文件 目标文件.zip压缩成zip文件
Expand-ArchiveExpand-Archive 原文件.zip 目标文件解压文件zip文件

六.网络

命令常用语法描述
netstatnetstat -ano显示各个应用程序的端口号和进程ID,可结合管道符筛选信息
pingping 网站地址检测与网站连接的稳定性
ipconfigipconfig查看本机IP地址
route printroute print打印路由信息

七.进程与服务

命令常用语法描述
psps显示各个应用程序的进程ID等信息
gsvgsv显示系统中正在运行的服务
start① start 应用程序名 ② start 网址打开应用程序或网站(包括文件夹
killkill -pid 进程ID关闭进程,不包括子进程
taskkilltaskkill -f -t -pid 进程ID强制关闭进程,包括所有由它启动的子进程

八.用户

注意以管理员权限运行powershell

命令常用语法描述
net user① net user ② net user 用户名 ③ net user 用户名 密码 ④ net user 用户名 /passwordchg:yes/no ⑤ net user 用户名 /active:yes/no① 显示所有用户的信息 ② 显示指定用户的详细信息 ③ 修改指定用户的密码 ④ 禁止或允许用户修改密码 ⑤ 禁用或启用指定用户
net user /addnet user /add 用户名 密码创建指定用户
net user /delnet user /del 用户名删除指定用户
net localgroupnet localgroup administrators 用户名 /add将指定用户提升为管理员

九.基础数据类型及操作

[int]$num1 = 10                      # 显式定义类型
$num2 = 20                           # 隐式定义类型
$num1,$num2 = $num2,$num1            # 交换两个数
[double]$num3 = $num4 = 12.3         # 连续赋值
$num2 = [int]$num3 + [int]$num4      # 强制类型转换

$num1.getType()                      # 查看变量的数据类型
$num1 -is [int]                      # 判断变量的类型,返回bool

十.字符串

10.1 定义字符串

[string]$str1 = "hello word"     # 显式定义类型
$str2 = "hello word"             # 隐式定义类型
$str3 = 'hello word'             # 用单引号定义字符串
$str4 = "time is $(get-data)"    # 在双引号字符串中用$()来插入变量或命令,并在使用时调用指定对象
$str5 = "I want `"kill`" Tom"    # 在双引号字符串中用`转意""字符
"name:{0} age:{1} sex:{2}" -f $m_name,$m_age,$m_sex   # 格式化字符串

10.2 字符串相关函数

10.2.1 判断字符串中的字符

# 语法: 
#      (1) 源字符串.EndsWith(目标字符串) # 判断是否以指定字符结尾(即判断后缀名),返回bool
#      (2) 源字符串.Contains(目标字符串) # 判断是否包含某个字符串,返回bool
#      (3) 正则表达式匹配 (最推荐) 
# 例子: 
$str = "banlin.txt"
$str.EndsWith("exe")    # 结果:true
$str.Contains("an")     # 结果:true
$str -match 'lin'       # 结果:true

10.2.2 字符串的比较

注意:也可以用条件运算符来比较两个字符串。

# 语法: 源字符串.compareto(目标字符串)
# 描述: 相同返回0,大于返回1,小于返回-1    
# 例子: 
$str = "banlin.txt"
$str.compareto("w")    # 结果:结果:-1

10.2.3 字符串的分组

# 语法: 源字符串.Split(目标字符串)
# 描述: 根据目标字符串对源字符串进行分组,返回字符串数组
# 例子: 
$str = "banlin.txt"
$strArr = $str.Split(".")
$strArr[-1]              # 结果:txt

10.2.4 字符串的替换

# 语法: 源字符串 -replace 正则表达式,目标字符串
# 描述: -replace会对源字符串进行正则表达式匹配,如果匹配成功,则将匹配成功部分替换成目标字符串
# 例子: 取出img标记中的文件路径
$str = '<img src="a.bmp" />' -replace "[<img src=`"`"/>]",""    # 结果: $str = a.bmp

十一.数组

注意:大多数查询语句的返回值都是数组类型

11.1 数组的定义与取值

$arr1=@(1,2,3)                                 # 用@()定义数组
$arr2=1,2,3                                    # 定义非空数组时,@()可不写
$arr3=@()                                      # 定义一个空数组
$arr4 = 1..100                                 # arr4∈[1,100],注意中间是两个点
$strArr = "asd","qwer","dsd"                   # 字符串数组
$anyArr = "esb",34,1.32,(1,3,4),(ls),"sad"     # 定义广义表 (串中可以放命令)

$anyArr[3][1]      # 变量名[下标],访为数组中的元素,如果该元素也是数组类型,则可连续用[]访问
$anyArr[-1]        # 取出数组中最后一个元素
$anyArr = $anyArr[($anyArr.length)..0]         # 取倒序数组

11.2 添加或删除元素

由于数组添加或删除元素受到限制操作不变,因此一般先将其转换成链表再操作

$arr = 1,2,3,4,5,6
[System.Collections.ArrayList]$list = $arr
$list.count              # 获得链表的长度
$list.IndexOf(1)         # 查询链表中指定元素的下标,如果有多个相同元素,返回第一个元素的下标
$list.RemoveAt(4)        # 删除下标为4的元素
$list += 99              # 在链表的末尾添加元素
$list.Insert(0,33)       # 在下标为4的位置插入数值33

十二.哈希表

$hash = @{name='xiaoming'; age=123}   # 注意键值对之间用分号隔开
$hash.keys                    # 查看所有key
$hash.values                  # 查看所有value列表
$hash.ContainsKey("name")     # 判断是否存在指定的key,注意key参数必须要加引号
$hash.add("sex","boy")        # 添加键值对,注意key参数必须要加引号,且key值是不重复的
$hash.Remove("age")           # 删除指定的键值对
$hash.neme                    # 访问哈希表中的元素

十三.输入输出

$name = read-host "请输入姓名"  # read-host 提示用的字符串
write-host "你的姓名是: $name"

十四.选择结构

14.1 if条件判断

$num = 95  # 定义变量

if($num -ge 90 -and $num -le 100){
    write-host "so good"  
}
elseif($num -ge 80 -and $num -lt 90){
    write-host "gool"
}
elseif($num -ge 70 -and $num -lt 80){
    write-host "normal"
}
else{
    write-host "number is error"
}

14.2 switch条件判断

$num = 95  # 定义变量

switch($num)
{
    95 {"grade is 95"}                            # 相等条件直接写数值 (注意: 不要加大括号)
    {$num -ge 90}{ "so good" }                    # 复杂条件判断语句,要加大括号
    {$_ -ge 80}{ "good" }                         # 用$_指代$num
    {($_ -ge 70) -and ($_ -lt 300) }{ "error" }   # 复合条件判断,每个条件建议用括号括起来
}

十五.循环结构

15.1 foreach循环

# 输出桌面文件中大于1kb的文件的名称
foreach($file in (ls C:\Users\asus\Desktop)){  # 括号()可以去掉
    if($file.length -gt 1kb){  
    	write-host $file.name        # length和name都是ls结果的列名
    }
}

15.2 while循环

# while循环
$num = 150

while ($num -ge  0){
    if($num -lt 20){
        break;
    }
    write-host $num
    $num--
}

# do while循环
$num = -1          
do{
    $num--
    if($num%3 -eq 0){
        continue
    }
    write-host $num  
}while ($num -gt  -100)

15.3 for循环

for($i=200;$i -le 300;$i++){
    write-host $i
}

十六.函数

16.1 函数别名

命令常用语法描述
Get-Alias① Get-Alias ② Get-Alias 别名① 查看所有别名所对应的函数名 ② 查看指定别名所对应的函数名
Set-AliasSet-Alias 别名 函数名① 给函数创建别名 (在PowerShell后自动删除) ② 可以用 del alias:别名 直接删除别名
Export-AliasExport-Alias 文件名.ps1导出别名,即保存别名
Import-AliasImport-Alias -f 文件名.ps1强制导入出别名(在PowerShell后自动还原

16.2 定义函数

# 无参函数
function myfunc{
    Write-Host "这是一个无参函数"  # 输出函数,类似于echo
}

# 有参函数
function myadd($num1,$num2){
    $num3 = $num1 + $num2
    return $num3
}

# 有参函数,并设置默认参数 
function myArr($num1,$num2=10){   # 可以设置默认参数 
    $num3 = $num1 + $num2
    return $num1,$num2,$num3      # 返回一个数组
}

myfunc  # 注意:调用无参函数时函数名后面不能加()
# $res = myadd -123 -434  # 不同的调用方法
$res = myadd 123 434      # 不同的调用方法
write-host $res
$arr = myArr 123
write-host $arr

十七.脚本

17.1 必要知识

1.如果无法运行脚本则,先以管理员身份运行PowerShell,用Get-ExecutionPolicy 查看权限是否是restricted 即受限制的,再用Set-ExecutionPolicy Unrestricted 更改权限即可。

2.脚本文件通常以.ps1作为后缀名,运行脚本用 .\xxx.ps1 命令注意开头要加 .\ 表示当前路径下的脚本文件。

17.2 文件相关

# 1.输出错误日志
function Print-Log($mode,$info)
{
    if("$mode" -eq "ERROR"){
        Write-Host -ForegroundColor:Red "[ERROR]:".PadLeft(10) -NoNewline 
        Write-Host -ForegroundColor:Green "$info"
    }
    elseif("$mode" -eq "WARNING"){
        Write-Host -ForegroundColor:Yellow "[WARNING]:".PadLeft(12) -NoNewline 
        Write-Host -ForegroundColor:Green "$info"
    }
    else{
        Write-Host -ForegroundColor:Red "[ERROR]:".PadLeft(10) -NoNewline 
        Write-Host -ForegroundColor:Green "请传入正确的`$mode参数"
        return;
    }
}


$path = "C:\Users\asus\Desktop\test"
$SuffixName = "txt"
$num = 20

# 2.批量生成文件
function create-files($filePath=$path,$Suffix=$SuffixName,$number=$num)
{
    if(-not (Test-Path $filePath)){  # 检查指定文件或文件夹是否存在,注意要加括号
        mkdir $filePath              # 创建指定文件夹
    }
    elseif((ls $filePath | measure).count -ne 0){    # 根据文件数量,判断该文件夹是否为空
        Print-Log ERROR "该文夹不为空"
        return;
    }

    for($i = 1; $i -le $number; $i++){
        New-Item "$filePath\$i.$Suffix"  
    }
}

# 3.批量修改文件名
function rename-files($filePath=$path,$Suffix=$SuffixName,$number=$num)
{
    if(-not (Test-Path $filePath)){  # 检查指定文件夹是否存在,注意要加括号
        Print-Log ERROR "该文夹不存在"
        return;           
    }
    elseif((ls $filePath | measure).count -eq 0){    # 根据文件数量,判断该文件夹是否为空
        Print-Log ERROR "该文夹为空"
        return;
    }

    for($i = 1; $i -le $number; $i++){
        ren "$filePath\$i.$Suffix" "$filePath\$i`_$i.$Suffix"    # 要对_进行转义
    }
}

# 4.用正则表达式替换指定文件中的文本(当有多层嵌套时,以下方法每次运行只能,改变最外层的<p><p/>)
function Replace-world($path)
{
	if(-not (Test-Path $path)){  # 检查指定文件或文件夹是否存在,注意要加括号
    	Print-Log ERROR "该件或文件夹不存在"
		return;          
    }
	elseif([String]::IsNullOrWhiteSpace((cat "$path"))){  # 检查文件是否为空或仅包含空格
		Print-Log ERROR "该文夹为空"
		return;
	}
    $context = cat "$path"
    $str1 = "<h>"
    $str2 = "</h>"
    $context -replace '(<p>)(.*)(</p>)',"$str1 `$2 $str2" | tee ccc.txt
}

# 5.计算当前文件夹中各个文件或文件夹的大小(当文件中存在无法访问的文件时,计算结果会出错)
function Count-FileSize($path=".\") 
{
    $size = (ls $path | %{ ls -r $_.Name | measure length -sum}).Sum  
    $name = ls $path | select name 
    $name = $name.name     # $name是复合类型是有标题的,因此用$name.name取字符串数组
    $len = $name.count

    for($i=0;$i -lt $len-1;$i++){
        for($j=0;$j -lt $len;$j++){
            if($size[$j] -lt $size[$j+1]){
                $size[$j],$size[$j+1] = $size[$j+1],$size[$j]
                $name[$j],$name[$j+1] = $name[$j+1],$name[$j]
            }
        }
    }
   
    $strNull = "                    "  # 20个空格
    Write-Host "   Name                     Size(KB) "
    Write-Host "----------                 ----------"  
     for($i=0;$i -lt $len-1;$i++){
        Write-Host $name[$i] -NoNewline
        # Write-Host " ". -NoNewline
        "{0:n1}".PadLeft(35-$name[$i].length) -f ($size[$i]/1024)  # 注意要用括号括起来
    }
}

十八.导入模块

1.在系统环境变量PSModulePath中保存着模块的位置,PowerShell会根据该路径递归搜索每个文件夹中的模块。

2.以管理员权限运行PowerShellcd ProgramFiles\PowerShell\Modules到该路径中,新建一个文件夹名为testmod,进入该文件并新建一个文件名为 testmod.psm1,最后在该文件中写入所运行的脚本。(注意在该文件夹中至少要有一个模块名与该文件夹名相同)用Get-Command -Module testmod验证是否创建成功。

3.若需要在每次打开PowerShell时都默认导入这个模块,可以在PowerShell的profile.ps1文件中添加Import-Module testmod, 命令。注意有时profile.ps1是默认不存在的,所以我们自己直接用 Add-Content $PROFILE.AllUsersAllHosts 'Import-Module testmod' 命令,如果profile.ps1不存在则先创建再添加,如果存在则直接追加指定内容。并可用 $PROFILE.AllUsersAllHosts 查看profile.ps1文件的位置。

十九.结语

PowerShell其本身内容非常的多且细,如果要深入学习建议看官方的文档 PowerShell官方文档

 

作者:墨尘_MO
时间:2023年3月12日

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值