Power shell 作为一门windows平台下的脚本语言,对于系统管理员来说,可以极大的减少我们的工作,作为一流的系统管理员(逃~),不可不学!
Why Power Shell
- Working in windows
- Support Object
- .NET Support
- Power ! ! !
Over View
Power shell 作为一门windows平台下的脚本语言,可以极大的减少我们的工作,它的好处自然不用多说,用过的都知道,下面简单的看一下语法概览。
- 查命令的使用:Get-Help
- 查对象的方法和属性:Get-Member
- 查命令历史记录:Get-History
- 命令导出为ps1 : xxx | Foreach-Object {$_.CommandLine} > C:.ps1
- 查找命令:Get-Command
- 上一条命令是否成功:$lastExitCode
- 一个命令要多久: Measure-Command{ scripts}
基础命令
where-object
使用这个命令可以从列表或者输出中过滤信息,格式为where-object{ } ,where-object回遍历它之前的属性,在{}中,可以使用$_来代表当前遍历的元素,所以,在where-object中,可以进行大量的操作。
Foreach-Object
这个命令和where-object差不多,可以用来处理列表中的项,同样可以在其中使用$_命令
读取数据
Get-Content 可以读取csv或者txt文件,读取完成之后可以通过数组的形式访问.
数据导出到CSV文件
1 2 3 4 5 6 7 8 9 10 11 12 13
| Powershell Output info to CSV file $data = @() $row = New-Object PSObject $row | Add-Member -MemberType NoteProperty -Name "Username" -Value $username $row | Add-Member -MemberType NoteProperty -Name "ComputerName" -Value $ComputerName $row | Add-Member -MemberType NoteProperty -Name "Domain" -Value $domainName $row | Add-Member -MemberType NoteProperty -Name "monitorSN" -Value $monitorSN $row | Add-Member -MemberType NoteProperty -Name "ComputerSN" -Value $info.SerialNumber $row | Add-Member -MemberType NoteProperty -Name "LastTimeLoginUser" -Value $loginInfo.Name $row | Add-Member -MemberType NoteProperty -Name "LoginCounts" -Value $loginInfo.count
$data += $row $data | Export-CSV \\10.65.64.219\soft\Information\infoList.csv -noTypeInformation -Append
|
PowerShell与excel文件交互
获取登录名
1
| $name=Get-WmiObject -Class Win32_UserAccount -Filter "Name='$env:username' and Domain='$env:userdomain'"
|
控制csv的语法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| # CSV: # a,b,c # 1,2,3 # 4,5,6 # 7,8,
$csv = Import-Csv C:\test.txt $user = "4" foreach ($row in $csv) { if ($row.a -eq $user) { $row.c = "updated" } } $csv | Export-Csv C:\test.txt
#Output: #TYPE System.Management.Automation.PSCustomObject #"a","b","c" #"1","2","3" #"4","5","updated" #"7","8","9"
|
查看登陆到物理机的用户
1
| Get-WmiObject -Class Win32_ComputerSystem |Select-object -ExpandProperty UserName
|
从bat运行powershell
1 2 3 4 5 6 7 8
| @echo off
powershell set-executionpolicy unrestricted powershell -file D:\soft\Scripts\GetUsersPhoneNumber\getUserPhone.ps1
exit
CSV-EXCEL http://www.pstips.net/converting-csv-to-excel-file.html
|
判断操作系统位数
1
| (Get-WmiObject Win32_OperatingSystem).osarchitecture
|
隐藏明文密码
1 2 3 4
| Write-host "text for pwd" $plainText = Read-Host | ConvertTo-SecureString -AsPlainText -Force $encryptedText = $plainText | convertFrom-Securesting Write-host $encryptedText
|
查看域OU信息
1
| Get-ADOrganizationalUnit -Filter 'Name -like "*"'
|
参数的定义
1 2 3 4 5
| function Test-Function { param($ 参数名 1='默认参数值 1', $ 参数名 2='默认参数值 2') Write-Host "参数 1=$ 参数名 1,参数 2=$ 参数名 2"; }
|
多线程
通用参数
1 2 3
| -Verbose[:{$true | $false}]
显示有关由该命令执行的操作的详细信息。此信息类似于跟踪或事务日志中的信息。此参数仅在命令生成详细消息时才起作用。例如,此参数在命令中包含 Write-Verbose cmdlet 时起作用。
|
运行网上下载的ps1文件
1 2
| Unblock-File -Path "C:\Users\Fan.ZhangFZ\soft\Scripts\Invoke-Parallel-master\Invoke-Parallel\Invoke-Parallel.ps1" . "C:\Users\Fan.ZhangFZ\soft\Scripts\Invoke-Parallel-master\Invoke-Parallel\Invoke-Parallel.ps1"
|
远程建立ssion,处理powershell命令
关于[cmdletbinding()]
Powershell渗透参考
PowerSheel 学习资源
相关书籍
- 《Windows PowerShell 应用手册》——Lee Holmes著