PowerShell常用命令
关机重启
PowerShell重启局域网电脑
1 | Restart-Computer |
进程相关命令
删除进程:
Stop-Process / kill
PowerShell 脚本 Stop-Process 可以用来结束进程。
结束进程名为 chrome 的进程:
1 | Stop-Process -Name chrome |
如果除了关闭你正在看的博客,还顺便要把自己正在编写的代码关闭掉,可以传多个进程名:
1 | Stop-Process -Name chrome,code |
taskkill 命令
PowerShell 依然能使用 CMD 命令,于是以下命令依旧可以工作:
1 | taskkill /f /t /im chrome.exe |
终止指定pid进程:
1 | taskkill /f /pid 12492 /t |
详见:
其他间接玩法
Process.Kill
Get-Process
能拿到进程对象,于是可以利用管道拿到对象将其关闭:
1 | Get-Process -Name chrome | Stop-Process |
更间接一点,遍历所有拿到的 Process 对象,然后杀掉:
1 | Get-Process -Name chrome | Foreach-Object { $_.Kill() } |
查询端口
查询端口命令:
1 | netstat -ano |findstr "端口号" |
powershell 压缩和解压zip
创建zip
1 | Compress-Archive -Path D:\test -DestinationPath E:\test.zip |
解压zip
1 | Expand-Archive -Path D:\test.zip -DestinationPath F:\test |
用powershell 启动vim编辑器
在PowerShell中,输入命令 :
1 | Set-ExecutionPolicy RemoteSigned |
1 | 继续输入命令 new-item -path $profile -itemtype file -force |
这时候这个文件是个空文件,需要你进一步编辑,这个时候可以直接用 notepad命令来编辑,这可能是你最后一次在PowerShell里调用GUI文本编辑器,要珍惜(因为你以后可能都直接在PowerShell里用Vim了)
进入显示的power shell目录中找到配置文件
在这里主要是添加alias让系统知道你敲vim的时候为了调用之前你安装好的那个vim.exe。这时候就要用上你之前几下的安装路径了。敲完上面那行命令以后就会打开一个notepad,在里面敲进去如下:
1 | set-alias vim "此处为vim的安装路径" |
超级隐藏文件的建立与再现
超级隐藏文件不但带有常规隐藏的属性,同时还带有系统属性,它本来是为保护系统文件而设立的,但如果用户愿意的话,其实也可以将自己建立的任何文件进行“超级隐藏”。这里介绍两种方法:
一是用第三方的软件FAR Manager(下载地址:/download.php?l=en.)来完成。安装并运行该软件后,在窗口中选择要进行超级隐藏的文件或文件夹,然后按下“Ctrl+A”组合键弹出属性管理控制台窗口,选中隐藏属性项“Hidden”和系统属性项“System”,最后点击“Set”按钮使设置生效(图3)。之后,即便是用前文中提到的方法,也无法显示该文件或文件夹。
二是利用Windows自身的命令来完成。首先打开要隐藏的文件所在的文件夹(这里假设我们要隐藏test.txt文件),然后按下“Alt+D”组合键并输入cmd.exe后回车,在随后打开的命令提示符窗口中,执行“attrib +S +H test.txt”命令即可(图4)。
注意,实际使用时要将命令中的test.txt更换为要隐藏的文件名。
使用超级隐藏法隐藏的文件,可以在FAR Manager或WinRAR软件中查看,但在Windows的文件资源管理器中,需要用“attrib -S -H <文件名>”命令将其超级隐藏属性去掉,或者是打开“文件夹选项”窗口,在“查看”列表中取消对“隐藏受保护的操作系统文件”的选择,才能查看得到。
服务管理(Service Management)
获得服务
1 | Get-Service |
实例:
1 | Get-Service -Name M* |
停止服务
1 | Stop-Service |
创建新服务
1 | New-Service |
设置服务
1 | Set-Service |
开启服务
1 | Start-Service |
停止服务
1 | Stop-Service |
暂停服务
1 | Suspend-Service |
恢复服务
1 | Resume-Service |
重启服务
1 | Restart-Service |
删除防火墙记录
1 | 删除C:\ProgramData\Microsoft\Windows Defender\Scans\History\Service\DetectionHistory下的所有子文件夹 然后重启机器就可以了。 |
Powershell-查询主机名及IP地址
Dos查询IP地址及主机名信息:
1 | 1.ipconfig | find "IPv4" |
默认很多人总是习惯用DOS命令查询,其实Powershell实现起来也是很简单的。如下:
Powershell查询IP地址及主机名信息:
1 | 1.foreach($ipv4 in (ipconfig) -like '*IPv4*') { ($ipv4 -split ' : ')[-1]} |
Windows注册程序服务并开机启动
一、使用Winsw注册服务
1、服务说明
使用 winsw,可以简单实现。winsw 是用 c# 写的一个小工具。
所以运行需要”.NET framework“,现在 Win10 上都自带.NET framework4.0
原理其实是 winsw.exe 本身可以注册为 windows 服务,可以设置为自启动。
当他启动后,然后根据和此 exe 同名的 xml 文件中的配置,执行设置的命令,达到自启动的效果。
winsw 的开源地址:https://github.com/winsw/winsw
目前稳定版本是 v2.11.0,下载链接:https://github.com/winsw/winsw/releases/tag/v2.11.0
根据.Net Framework 版本下载即可,如:WinSW.NET4.exe
sample-minimal.xml 是一个最小配置的列子。
sample-allOptions.xml 是一个全部可配置参数的例子。
2、查看.NET Framework 版本
1、在地址栏上输入 “C:\Windows\Microsoft.NET\Framework”,按回车键
2、可以看到.NET Framework 版本。可以看到最高版本为 4.0
3、修改及设置
1、把 winsw.exe 改名为有意义名称,比如 apiServer.exe。
因为注册后服务启动的 exe 就是这个 exe,所以修改后便于管理和识别。
修改 sample-minimal.xml 为和 exe 同名文件,如 apiServer.xml
把 apiServer.exe 和 apiServer.xml 放在和 jar 相同目录即可。
2、xml 官方配置:
1 | <service> |
frp 配置:
1 | <service> |
相关参数说明如下:
- id:安装 windows 服务后的服务 ID,必须是唯一的。
- name:服务名称,也必须是唯一的。一般和 id 一致即可。
- description:服务说明,可以使用中文,可做备注使用。
- executable:执行的命令,比如启动 springboot 应用的命令 java。
- arguments:命令执行参数,比如 包路径,类路径等。
4、安装服务
以管理员身份执行 cmd,切换到 exe 所在目录,执行如下命令即可。
1 | apiServer.exe install |
除 install 之外,还有如下命令:
- uninstall:删除服务
- start:启动服务
- stop:停止服务
- restart:重启服务
- status:查看状态
二、使用NSSM注册服务
(一)nssm简介
SSM(the Non-Sucking Service Manager)是Windows环境下一款免安装的服务管理软件,它可以将应用封装成服务,即将普通exe程序或者jar包应用,封装成服务使之像windows服务可以设置自动启动等。并且可以监控程序运行状态,程序异常中断后自动启动,实现守护进程的功能。同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强大。
它的特点如下:
- 支持普通exe程序(控制台程序或者带界面的Windows程序都可以)
- 安装简单,修改方便
- 可以自动守护封装了的服务,程序挂掉了后可以自动重启
官网地址:https://nssm.cc/
(二)NSSM使用及配置详解
1、下载地址
2、解压压缩包,根据系统位数选择64或32位程序
3、打开命令行,运行nssm程序
管理员权限打开命令行工具,切换到nssm.exe所在路径,运行 nssm install,打开程序配置界面
配置项说明:
1 | - Path:运行应用程序的程序 |
最后点击install service 完成windows服务安装,在windows服务列表就能看到创建的服务了。
4、常用命令
1 | nssm install servername //创建servername服务,弹出配置界面 |
- 直接使用windows的服务管理也可以实现服务的操作,服务右键
属性 - 恢复
即可设置服务挂掉重启等内容。
(三)实战:将应用做成服务
1、程序说明
这里演示将net6的web项目制作成windows服务
应用的启动命令是:dotnet WebApplication_nssm.dll --urls=http://*:8888/ --port=8888
2、安装服务
1 | nssm install |
- Path:
C:\Program Files\dotnet\dotnet.exe
- Startup directory:
D:\TechLearn\001、Tools--nssm\WebApplication_nssm\bin\Debug\net6.0
- Arguments:
WebApplication_nssm.dll --urls=http://*:8888/ --port=8888
- Service name:
webapp8888
最后点击install service 完成windows服务安装,在windows服务列表就能看到创建的服务了。
3、管理服务
(1)启动服务
1 | D:\nssm-2.24\win64>nssm start webapp8888 |
(2)关闭服务
1 | D:\nssm-2.24\win64>nssm stop webapp8888 |
(3)重启服务
如果服务未启动就会直接启动,启动的会重启。
1 | D:\nssm-2.24\win64>nssm restart webapp8888 |
(4)修改服务
输入命令,修改配置,不能修改服务名
1 | D:\nssm-2.24\win64>nssm edit webapp8888 |
(5)删除服务
删除有二次确认,删除之后服务就找不到了,需要重新安装
1 | D:\nssm-2.24\win64>nssm remove webapp8888 |
(四)命令行操作
创建服务并定义程序的路径:
1 | nssm install SnareServie "%MDHIS2_HOME%/MDHIS_WebClient.cmd" |
接下来是这一系列的命令来建立各种参数:
1 | nssm set SnareServie AppDirectory %MDHIS2_HOME% |
为安全起见,我会将Start
参数移到该系列的末尾,以防止nssm
在建立其余参数(DependOnService
、AppNoConsole
和AppStopMethodConsole
)之前启动服务的可能性。
三、cmd
下使用sc
管理Windows服务
注册服务
1 | # 注册服务 |
查看服务
1 | # 查看服务 |
启动服务
1 | # 启动服务 |
停止服务
1 | # 停止服务 |
卸载服务
1 | # 删除SangforPXEx服务 |
PowerShell巡检主机获取CPU占用、内存使用、硬盘情况的脚本
Windows底下用PowerShell写的获取CPU核数、占用率;内存可用内存大小(GB)、使用率;硬盘总空余大小(GB),使用率
1 | # 获取硬盘空余空间 |
设置环境变量:
Powershell下设置环境变量
1 | #Powershell设置环境变量 |
获取环境变量
1 | 获取机器Path变量 |
设置环境变量
- 先定义变量:
1 | $path = [Environment]::GetEnvironmentVariable('Path', 'Machine') |
- 设置新Path变量路径:
1 | 替换原有Path变量: |
1 | 在原有Path追加变量: |
- 设置Path变量:
1 | [Environment]::SetEnvironmentVariable('Path', $replacepath, 'Machine') |
完整命令
1 | $path = [Environment]::GetEnvironmentVariable('Path', 'Machine') |
Windows使用cmd命令行查看、修改、删除与添加环境变量
1 | #查看所有环境变量 |
1 | 方法1、永久生效 |
1 | set 设置临时环境变量 |
您可以在cmd中使用SET,显示或设置环境变量。
Tips:刚装好的系统,Path的默认值为:%SystemRoot%/system32;%SystemRoot%;%SystemRoot%/System32/Wbem;%SYSTEMROOT%/System32/WindowsPowerShell/v1.0
一、查看环境变量
1、查看当前所有可用的环境变量
输入 set 即可查看。
2、查看某个环境变量
输入 “set 变量名”即可。比如想查看path变量的值,即输入 set path
二、修改环境变量
注意:所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改。也就是说当关闭此cmd命令行窗口后,将不再起作用。
永久性修改环境变量的方法有两种:一种是直接修改注册表,另一种是通过我的电脑-〉属性-〉高级,来设置系统的环境变量(查看详细)。
1、修改环境变量
输入 “set 变量名=变量内容”即可。比如将path设置为“d:\nmake.exe”,只要输入set path=”d:\nmake.exe”。
注意,此修改环境变量是指用现在的内容去覆盖以前的内容,并不是追加。比如当我设置了上面的path路径之后,如果我再重新输入set path=”c”,再次查看path路径的时候,其值为“c:”,而不是“d:\nmake.exe”;“c”。
2、设置为空:
如果想将某一变量设置为空,输入“set 变量名=”即可。
如“set path=” 那么查看path的时候就为空。注意,上面已经说了,只在当前命令行窗口起作用。因此查看path的时候不要去右击“我的电脑”——“属性”……..
3、给变量追加内容
输入“set 变量名=%变量名%;变量内容”。(不同于3,那个是覆盖)。
如,为path添加一个新的路径:
1 | 输入“ set path=%path%;d:\nmake.exe”即可将d:\nmake.exe添加到path中 |
再次执行”set path=%path%;c:”,那么,使用set path语句来查看的时候,将会有:d:\nmake.exe;c:,而不是像第3步中的只有c:。
三、一些常用的环境变量
- %AllUsersProfile%: 局部 返回所有“用户配置文件”的位置。 {所有用户文件目录 – C:\Documents and Settings\All Users}
- %AppData%: 局部 返回默认情况下应用程序存储数据的位置。 {当前用户数据文件夹 – C:\Documents and Settings\wy\Application Data}
- %Cd%: 局部 返回当前目录字符串。
- %CmdCmdLine%: 局部 返回用来启动当前的 Cmd.exe 的准确命令行。
- %CmdExtVersion%: 系统 返回当前的“命令处理程序扩展”的版本号。
- %CommonProgramFiles%: {文件通用目录 – C:\Program Files\Common Files}
- %ComputerName%: 系统 返回计算机的名称。 {计算机名 – IBM-B63851E95C9}
- %ComSpec%: 系统 返回命令行解释器可执行程序的准确路径。 C:\WINDOWS\system32\cmd.exe
- %Date%: 系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅 Date。
- %ErrorLevel%: 系统 返回最近使用过的命令的错误代码。通常用非零值表示错误。
- %HomeDrive%: 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。 {当前用户根目录 – C:}
- %HomePath%: 系统 返回用户主目录的完整路径。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。 {当前用户路径 – \Documents and Settings\wy}
- %HomeShare%: 系统 返回用户的共享主目录的网络路径。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。
- %LogonSever%: 局部 返回验证当前登录会话的域控制器的名称。
- %Number_Of_Processors%: 系统 指定安装在计算机上的处理器的数目。 {处理器个数 – 1}
- %Os%: 系统 返回操作系统的名称。Windows 2000 将操作系统显示为 Windows_NT。 {操作系统名 – Windows_NT}
- %Path%: 系统 指定可执行文件的搜索路径。
- %PathExt%: 系统 返回操作系统认为可执行的文件扩展名的列表。
- %Processor_Architecture%: 系统 返回处理器的芯片体系结构。值: x86,IA64。 {处理器芯片架构 – x86}
- %Processor_Identfier%: 系统 返回处理器说明。
- %Processor_Level%: 系统 返回计算机上安装的处理器的型号。 {处理器型号 – 6}
- %Processor_Revision%: 系统 返回处理器修订号的系统变量。 {处理器修订号 – 0905}
- %ProgramFiles%: {程序默认安装目录 – C:\Program Files}
- %Prompt%: 局部 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。 $P$G
- %Random%: 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。
- %SystemDrive%: 系统 返回包含 Windows XP 根目录(即系统根目录)的驱动器。 {系统根目录 – C:}
- %SystemRoot%: 系统 返回 Windows XP 根目录的位置。 {系统目录 – C:\WINDOWS}
- %Temp%: 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其它应用程序则需要 TMP。 {当前用户临时文件夹 – C:\DOCUME
1\wy\LOCALS1\Temp} - %Time%: 系统 返回当前时间。使用与 time /t 命令相同的格式。由 Cmd.exe 生成。9:16:25.05
- %UserDomain%: 局部 返回包含用户帐户的域的名称。 {包含用户帐号的域 – IBM-B63851E95C9}
- %UserName%: 局部 返回当前登录的用户的名称。 {当前用户名 – wy}
- %UserProfile%: 局部 返回当前用户的配置文件的位置。 {当前用户目录 – C:\Documents and Settings\wy}
- %WinDir%: 系统 返回操作系统目录的位置。 {系统目录 – C:\WINDOWS}
清理Powershell记录
右键–属性–选项,里面有个命令记录设置下就可以了(win键+x唤起power shell )
或者运行命令:
1 | Remove-Item (Get-PSReadlineOption).HistorySavePath |
清空回收站:
1 | Clear-RecycleBin |