1、windows powershell 非交互修改密码:
net user 账号 新密码
net user administrator qazwsx123456
2、for循环:
foreach ($n in 11,22,33)
{echo $n }
执行结果:
11
22
33
3、if判断:
if( 片段条件 ) { 判断为 “ 真 ” 执行的命令 } else { 判断为 “ 假 ” 执行的命令 }
if(1 -eq 1)
{"true"}
else
{"false"}
执行结果:
true
比较运算符:
-eq :等于
-ne :不等于
-gt :大于
-ge :大于等于
-lt :小于
-le :小于等于
-contains :包含
-notcontains :不包含
布尔运算符:
-and :和
-or :或
-xor :异或
-not :逆
!($var)
-
判断目录是否存在(也可以判断文件)
if ( Test-Path c:\RZY ) { echo 1 } else { echo 2 }
4、类似awk的用法(取本机第一个IP):
%{$_.split("-")[0]}
: 表示 ("-") 为指定分隔符 "-" ; [0] 取第一个;[-1]取最后一个
#取出IP地址,并以" - " 隔开(本机有多个IP)
$server_ip1=(Get-IPAddress |Select-Object -ExpandProperty IPAddressV4 MacAddress) -join "-"
PS C:\> echo $server_ip1
10.27.82.113-10.127.127.1-169.254.54.52-10.0.0.1
#取第一个IP地址
$server_ip1|%{$_.split("-")[0]}
取IP地址:
Get-IPAddress |Select-Object -ExpandProperty IPAddressV4 MacAddress
-
经过实践,上面取IP的方法不通用,下面的方法通用性更强
取 10.1x.xx.xx网段的IP地址
$IP_ADD=([System.Net.Dns]::GetHostAddresses($ComputerName) |Where-Object { $_.AddressFamily -eq 'InterNetwork' } | Select-Object -ExpandProperty IPAddressToString|findstr "10.1") -join "-"
$IP_ADD=$IP_ADD|%{$_.split("-")[0]}
echo $IP_ADD
5、获取DNS
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true | Select-Object -ExpandProperty dnsserversearchorder
6、添加指定分隔符
PS C:\Users\Administrator> $aa="a1 a2 a3"
PS C:\Users\Administrator> (-split $aa) -join "/"
a1/a2/a3
7、下载多个文件(前提所指定的网络文件可下载)
# 下载 安装 文件
$client=new-object System.Net.WebClient
#需要下载的文件名
$installfile= "7z.dll","7z.exe","gse_client-windows-x86_64.tgz","normaliz.dll","winagent_install.zip"
#echo $installfile.Length
for($i=0; $i -lt $installfile.Length; $i++)
{
# echo $installfile[$i]
$aa=$installfile[$i]
echo $aa
$client.DownloadFile("http://$serverip`:$serverport/download/$aa", "C:/$aa")
}
8、Powershell转换文本文件为ASCII编码
- 转换文本文件为ASCII编码
# Convert any text file to ASCII
param( [string] $infile = $(throw "Please specify a filename.") )
$outfile = "$infile.ascii"
get-content -path $infile | out-file $outfile -encoding ascii
- 转换文本文件为Unicode编码
# Convert any text file to Unicode
param( [string] $infile = $(throw "Please specify a filename.") )
$outfile = "$infile.unicode"
get-content -Path $infile | out-file $outfile -encoding unicode
- 转换文本文件为UTF-8编码
# Convert any text file to UTF-8
param( [string] $infile = $(throw "Please specify a filename.") )
$outfile = "$infile.utf8"
get-content -Path $infile | out-file $outfile -encoding utf8
9、powershell中调用bat脚本
start "C:\Windows Server NTP时间服务器配置V1.0(1)(1).bat"
9.查看windows系统版本
Get-WmiObject -Class Win32_OperatingSystem | Select-Object -ExpandProperty Caption
10.删除目录(非空目录)
rm -Path "c:\RZY" -Recurse -Force
11、判断工作组为workgroup
# 检查工作组是否为 workgroup
$Work_Group=(Get-WmiObject Win32_ComputerSystem|findstr WORKGROUP|%{$_.split(":")[1]}|%{$_.split(" ")[1]})
if ( "$Work_Group" -eq "WORKGROUP" ) {
echo ""
echo " WorkGroup is : $Work_Group "
echo " WorkGroup is : $Work_Group " > WorkGroup.txt
echo ""
} else {
echo ""
echo " Domain is : $Work_Group "
echo " Domain is : $Work_Group " > Domain.txt
echo ""
}
12、执行命令屏蔽输出 (类似linux &>/dev/null)
-ErrorAction SilentlyContinue
rm -Path C:\temp -Recurse -Force -ErrorAction SilentlyContinue
13、远程服务器上传下载文件函数
本函数用于与FTP服务器通信,上传、下载、查看文件列表
Function ftp($ftpurl,$username,$password,$do,$filename,$DownPatch) {
# ftp 服务器地址,用户名,密码,操作(上传up/下载down/列表list),文件名,下载路径
# 示例:ftp ftp://10.10.98.91/ ftpuser shenzhen up C:\Windows\setupact.txt
if ($do -eq "up")
{
$fileinf=New-Object System.Io.FileInfo("$filename")
$upFTP = [system.net.ftpwebrequest] [system.net.webrequest]::create("$ftpurl"+$fileinf.name)
$upFTP.Credentials = New-Object System.Net.NetworkCredential("$username","$password")
$upFTP.Method=[system.net.WebRequestMethods+ftp]::UploadFile
$upFTP.KeepAlive=$false
$sourceStream = New-Object System.Io.StreamReader($fileInf.fullname)
$fileContents = [System.Text.Encoding]::UTF8.GetBytes($sourceStream.ReadToEnd())
$sourceStream.Close();
$upFTP.ContentLength = $fileContents.Length;
$requestStream = $upFTP.GetRequestStream();
$requestStream.Write($fileContents, 0, $fileContents.Length);
$requestStream.Close();
$response =$upFTP.GetResponse();
$response.StatusDescription
$response.Close();
}
# 上传示例:ftp ftp://10.10.98.91/ ftpuser shenzhen up C:\Windows\setupact.txt
if ($do -eq "down")
{
$downFTP = [system.net.ftpwebrequest] [system.net.webrequest]::create("$ftpurl"+"$filename")
$downFTP.Credentials = New-Object System.Net.NetworkCredential("$username","$password")
$response = $downFTP.getresponse()
$stream=$response.getresponsestream()
$buffer = new-object System.Byte[] 2048
$outputStream=New-Object System.Io.FileStream("$DownPatch","Create")
while(($readCount = $stream.Read($buffer, 0, 1024)) -gt 0){
$outputStream.Write($buffer, 0, $readCount)
}
$outputStream.Close()
$stream.Close()
$response.Close()
if(Test-Path $DownPatch){echo "DownLoad successful"}
}
#下载示例:ftp ftp://10.10.98.91/ ftpuser shenzhen dowm "setupact.txt" "C:\Windows\setupact.txt"
if ($do -eq "list")
{
$listFTP = [system.net.ftpwebrequest] [system.net.webrequest]::create("$ftpurl")
$listFTP.Credentials = New-Object System.Net.NetworkCredential("$username","$password")
$listFTP.Method=[system.net.WebRequestMethods+ftp]::listdirectorydetails
$response = $listFTP.getresponse()
$stream = New-Object System.Io.StreamReader($response.getresponsestream(),[System.Text.Encoding]::UTF8)
while(-not $stream.EndOfStream){
$stream.ReadLine()
}
$stream.Close()
$response.Close()
}
#查看目录中的文件示例:ftp ftp://10.10.98.91/ ftpuser shenzhen list
}
14、获取随机数
这个随机数 与 时间有关系,每秒变化一次,频繁的取会有重复(慎用)
$check_random=cmd /c echo %random%
echo $check_random
15、while 循环
$n=1
while($n -gt 0)
{
echo "哈哈"
if ( 判断条件 ){ $n=0}
}
15、字符颜色
function red_echo ($red) { Write-Host ($red) -nonewline -foregroundcolor 'Red';echo ""}
function green_echo ($green) { Write-Host ($green) -nonewline -foregroundcolor 'Green';echo ""}
function yellow_echo ($yellow) { Write-Host ($yellow) -nonewline -foregroundcolor 'Yellow';echo ""}
function magenta_echo ($magenta) { Write-Host ($magenta) -nonewline -foregroundcolor 'Magenta';echo ""}
function blue_echo ($blue) { Write-Host ($blue) -nonewline -foregroundcolor 'Blue';echo ""}
green_echo "绿色"
red_echo "红色"
yellow_echo "黄色"
magenta_echo "紫色"
blue_echo "蓝色"
image.png
15、过滤大于30天的文件
ls C:\Windows\*.log | Where-Object { $_.LastWriteTime -gt [datetime]::Now.Date.AddDays(-30) }
16、多个空格变为一个空格
j解释:至少出现两次空格, “ ”中加想要替换的内容
"太多 太多的 空格 怎么才能减少 " -replace "\s{2,}" ," "
# 太多 太多的 空格 怎么才能减少
17、时间格式 Get-Date
yyyy 年
M 月
d 日
h 小时(12小时制)
H 小时(24小时制)
m 分钟
s 秒
PS C:\Users\Administrator> Get-Date
2021年3月1日 20:47:51
PS C:\Users\Administrator> Get-Date -Format 'yyyyMMddHHmmss'
20210301204804
18、自定义命令光标字符
Function Global:Prompt { "$env:USERNAME@$env:USERADMIN $PWD`n" }
19、变更dvd驱动器盘符:
网上找了很久找都找不到, 这是一个powershell群里的大佬找到给我的,表示感谢~~
$DVD_Drive = Get-WmiObject win32_volume -filter 'DriveLetter = "D:"' #旧盘符
$DVD_Drive.DriveLetter = "L:" # 新盘符
$DVD_Drive.Put()
20、长ping加时间戳:
ping -t 10.14.136.70 |Foreach{ "{0} - {1}" -f (Get-Date),$_}
2022/4/11 17:40:27 - 来自 10.14.136.70 的回复: 字节=32 时间<1ms TTL=61
2022/4/11 17:40:28 - 来自 10.14.136.70 的回复: 字节=32 时间<1ms TTL=61
网友评论