powershell教程
- 格式:docx
- 大小:36.71 KB
- 文档页数:2
powershell 执行方法
PowerShell 是一种强大的命令行处理工具,它可以执行各种任务,包括从文件、目录、网络和数据库中检索信息,处理表单数据,执行自动化脚本,构建和管理 Web 应用程序等。
下面是一些 PowerShell 执行方法:
1. 直接运行命令:在 PowerShell 中可以直接运行命令,如
`ls`、`mkdir`、`cd` 等。
2. 使用 .NET 方法: PowerShell 支持 .NET Framework 中的方法和类,可以使用 .NET 方法来执行各种任务。
例如,使用
`Microsoft.PowerShell.Core` 包中的 `CreateProcess` 方法来启动新进程。
3. 使用脚本语言:PowerShell 也是一种脚本语言,可以使用PowerShell 脚本来编写程序和任务。
在 PowerShell 中,可以使用 `脚本.ps1` 文件来编写脚本,并运行它们。
4. 使用第三方工具:PowerShell 中有很多第三方工具和库可以用于执行各种任务。
例如,可以使用 `跑出` 工具来从远程服务器中检索数据,使用 `PSReadLine` 库来支持强密码登录等。
5. 使用交互式模式:在 PowerShell 中,可以通过 `>` 符号和对话式模式来交互式地执行命令和脚本。
例如,可以在对话式模式下输入命令,然后按照提示输入确认信息,这种方式非常适合编写简单的脚本和应用程序。
总之,PowerShell 是一种功能强大的工具,可以使用多种方法来执行各种任务。
powershell使用手册PowerShell是一种任务自动化和配置管理框架,它由微软开发并集成到其操作系统中。
它的强大之处在于其灵活性和可扩展性,可以用于管理Windows操作系统上的各种任务和配置。
以下是关于PowerShell的使用手册:1. 基础知识,PowerShell的基本语法和命令结构是了解其功能的第一步。
了解如何编写和执行基本的命令,如何使用变量和管道操作符等是非常重要的。
2. Cmdlet,Cmdlet是PowerShell中的命令,它们以动词-名词的形式命名,例如Get-Process,Start-Service等。
掌握常用的Cmdlet以及它们的用法是非常重要的。
3. 脚本编写,PowerShell可以用于编写脚本来自动化任务。
了解如何编写脚本以及如何运行和调试脚本是非常重要的。
4. 远程管理,PowerShell可以用于远程管理其他计算机。
了解如何配置远程管理以及如何在远程计算机上执行命令和脚本是非常重要的。
5. 模块和函数,PowerShell支持模块和函数,可以通过这些方式扩展其功能。
了解如何编写和使用模块以及函数是非常重要的。
6. 错误处理和日志记录,了解如何处理错误以及如何记录日志对于编写健壮的PowerShell脚本是非常重要的。
7. 安全性,PowerShell具有强大的系统管理功能,因此安全性是非常重要的。
了解如何配置执行策略以及如何安全地使用PowerShell是非常重要的。
总之,掌握PowerShell的使用需要不断的实践和学习,通过阅读官方文档和参考书籍可以更好地掌握PowerShell的用法和技巧。
希望这些信息对你有所帮助。
powershell编程实例PowerShell 编程示例简介PowerShell 是一种基于对象和命令的脚本语言,用于在Windows 和其他平台上自动化任务和管理系统。
它提供了一个交互式命令行环境,以及用于编写脚本和函数的丰富工具集。
创建 PowerShell 脚本以下步骤说明了如何创建基本 PowerShell 脚本:1. 打开 PowerShell Integrated Scripting Environment (ISE)。
2. 在编辑器窗口中输入以下代码:```powershellWrite-Host "Hello, World!"```3. 单击 "文件" > "保存",将脚本另存为 ".ps1" 文件。
运行 PowerShell 脚本要运行 PowerShell 脚本,请执行以下步骤:1. 打开 PowerShell 控制台。
2. 导航到脚本所在的文件夹。
3. 键入以下命令,其中 "script.ps1" 是脚本的文件名: ```.\script.ps1```使用 PowerShell 命令PowerShell 提供了众多内置命令,用于执行各种任务。
以下是一些常用的命令:Get-Command - 获取可用命令列表Get-Service - 获取系统服务列表New-Item - 创建新项目(文件、文件夹等)Set-Location - 更改当前工作目录Write-Host - 在控制台中显示信息使用 PowerShell 脚本编写函数函数是可重用的代码块,可用于封装常见任务。
以下步骤说明了如何编写 PowerShell 函数:1. 在脚本的开头使用 "function" 关键字声明函数:```powershellfunction MyFunction {# 函数代码}```2. 在函数主体中放置要执行的代码。
Windows 系统下POWERSHELL 命令“Add-ProvisionedAppxPackage”的使用方法Add -ProvisionedAppxPackage 是一个 PowerShell 命令,主要用于在 Windows 操作系统上预配或安装 UWP (Universal Windows Platform) 应用程序,通常在系统映像定制、大规模部署或在特殊上下文中(比如系统启动时或没有用户交互的情况下)需要预先安装应用时使用。
功能:Add -ProvisionedAppxPackage 命令允许管理员将 UWP 应用程序以 provisioned 的形式添加到 Windows 映像或已部署的系统中,确保应用程序在新用户登录或系统启动后自动存在。
用法:以下是一个基本的命令格式:-Online 表示在当前在线操作系统上操作,而非针对脱机的系统映像。
-PackagePath 必需参数,指定要预配的 AppX 或 MSIX 包的完整路径。
-LicensePath 可选参数,如果应用需要特定许可证文件,则提供许可证文件的路径。
-SkipLicense 可选参数,如果应用程序许可可以跳过,则使用这个选项可以自动接受许可协议。
-LogLevel 可选参数,设置日志记录详细程度,例如 "ErrorsOnly"、"WarningsInfo" 等。
-DependencyPackagePath 可选参数,当主应用程序包有依赖包时,提供依赖包的路径。
简单示例:假设有一个名为 ContosoApp.msixbundle 的 UWP 应用程序包位于 C:\Packages 目录下,并且不需要额外的许可证文件,可以直接预配到当前在线操作系统上:在实际应用中,请确保替换为实际的包路径,并根据应用程序的具体情况决定是否添加 -LicensePath 或 -DependencyPackagePath 参数。
今天Vista地带就讲一下Windows PowerShell内置命令,Windows PowerShell内置了丰富的系统管理命令。
如进程查看、服务列表、逻辑运算等功能,同时又支持cmd命令执行。
今天就的难度为LEVEL 100适合入门级,几乎看了亲身适用一次就可以完全掌握了。
(一)PowerShell 的启动方法:(安装了PowerShell 后启动方法)方法一. 在Windows 的开始菜单-“所有程序”-“Windows PowerShell 1.0”-“Windows PowerShell图标” 来启动。
方法二. 在“运行”对话框中输入powershell 回车即可运行。
方法三. 在“cmd命令提示符”中输入powershell 即可运行。
同时兼容telnet 和SSH 环境下执行。
(二)获取系统服务信息Windows Powershell内置命令近似自然语言,获取系统服务信息可以联想到get service,我们输入 get-service 命令即可,如图1所示:图1(三)获取系统进程信息同理我们仍然可以联想到GetProcess ,这里我们输入get-process即可查看当前的进程列表,如进程PID、句柄数等等信息如图2所示:图2(四)获取系统当前的日期和时间获取日期的自然语言GetDate ,这里我们输入get-date即可,如图3所示:图3(五)计算机的KB 、MB、GB、TB的字节数。
我们输入12MB可以得到12582912 (即12x1024x1024),输入15 KB可以得到15360,但是输入时一定要注意单位完成,是KB而不是K,如图4所示输入错误会提示“数字常量无效”所在位置:行字符等信息。
图4(五)逻辑运算真假异或等我们知道异或是真^真=假真^假=真假^真=真假^假=假,我们输入1 -xor 0 显示为真True 如图5所示:图5(六)获取系统BIOS 信息,这里我们是通过WMI 执行 WQL语言我们输入Get-WmiObject win32_bios (后面的参数win32_bios可以通过查询WMI Class 参考获取),如图6所示:SMBIOSBIOSVersion : P1.20Manufacturer : American Megatrends Inc.Name : Default System BIOSSerialNumber : To Be Filled By O.E.M.Version : A M I - 8000610。
本节Vista地带将PowerShell常见问题作了汇总,从下一节开始我们将进入LEVEL 200难度,讲述如何创建cmdlet以及如何通过Windows PowerShell管理器Windows Vista 、Windows Server 2008操作系统。
PowerShell答疑一) 如何大批量部署Windows PowerShell很多服务器使用了Windows Server 2003操作系统。
(注:Windows Server 2008自带了PowerShell不能独立安装),Vista地带告诉大家可以在Win2003批量安装。
通过安装命令行WinPowerShellSetup_x86_fre.exe /quiet 可以自动部署Windows PowerShell。
二) PowerShell返回结果很多如何排序PowerShell支持排序功能,参考下面两个例子。
1. 降序输出当前目录我们使用dir | sort -descending 命令输出降序的目录名,如图1所示S -> M -> F-> C (字母表降序)图12. 降序输出分区按照可用空间我们是用get-wmiobject win32_logicaldisk | sort -desc freespace 这个WMI查询获取,管道符后的sort -desc freespace 就是根据磁盘空间大小降序排列,如图2所示:图2三) PowerShell返回结果很多如何筛选1. findstr命令筛选我们拿ipconfig为例,输入不带任何参数的ipconfig会返回当前本机所在的域、IP地址、子网掩码、默认网关。
我们输入ipconfig | findstr 'IP' 后就会只返回IP地址,如图3所示:图32. PowerShell支持通配符以及eq关键字匹配我们输入Get-Service | Where-Object { $_.Status –eq "Stopped" } 命令来筛选字段为Status,状态为停止的服务,如图4所示:图4使用通配符* 或? 号匹配。
PowerShell⼊门基础教程Windows PowerShell 是专为系统管理员设计的新 Windows 命令⾏外壳程序。
该外壳程序包括交互式提⽰和脚本环境,两者既可以独⽴使⽤也可以组合使⽤。
1、什么是交互式提⽰?答:交互式提⽰就像打开⼀个cmd窗⼝,在⾥⾯执⾏⼀个ping命令⼀样,它会动态的输⼊结果。
也可以像执⾏ftp命令⼀样,有⼀个上下⽂环境(Context),可以交互。
2、什么是脚本环境?答:就像写VBScript脚本⼀样,以⽂件形式把PowerShell的程序语句写下来,然后利⽤PowerShell的脚本环境来执⾏整个脚本⽂件。
顺便说⼀句,批处理也可以理解为⼀个脚本环境。
PowerShell脚本⽂件的扩展名为.ps1,语⾔⽀持⽤于循环、条件、流控制和变量赋值的语⾔结构。
Windows PowerShell 是专为系统管理员设计的新 Windows 命令⾏外壳程序。
该外壳程序包括交互式提⽰和脚本环境,两者既可以独⽴使⽤也可以组合使⽤。
解读:1、什么是交互式提⽰?答:交互式提⽰就像打开⼀个cmd窗⼝,在⾥⾯执⾏⼀个ping命令⼀样,它会动态的输⼊结果。
也可以像执⾏ftp命令⼀样,有⼀个上下⽂环境(Context),可以交互。
2、什么是脚本环境?答:就像写VBScript脚本⼀样,以⽂件形式把PowerShell的程序语句写下来,然后利⽤PowerShell的脚本环境来执⾏整个脚本⽂件。
顺便说⼀句,批处理也可以理解为⼀个脚本环境。
PowerShell脚本⽂件的扩展名为.ps1,语⾔⽀持⽤于循环、条件、流控制和变量赋值的语⾔结构。
与接受和返回⽂本的⼤多数外壳程序不同,Windows PowerShell 是在 .NET 公共语⾔运⾏时 (CLR) 和 .NET Framework 的基础上构建的,它接受和返回 .NET 对象。
环境中的这⼀根本更改带来了管理和配置 Windows 的全新⼯具和⽅法。
power shell用法PowerShell 是一种命令行 Shell 和脚本语言,首次发布于 2006 年,面向管理员和DevOps (开发运维) 开发。
PowerShell 可用于管理操作系统(如 Windows),也可用于管理许多其他 Microsoft 技术,如 SQL Server、Exchange 和 SharePoint。
1. 获取帮助2. 测试命令执行的前结果- Get-Process:获取正在运行的进程的列表。
- Get-ChildItem:列出文件系统中的文件和文件夹。
- Get-EventLog:获取事件日志中的所有条目。
3. 管道操作Get-Process | Sort-Object -Property CPU -Descending4. 格式命令在上面的示例中,'Name' 和 'CPU' 列将以表格形式显示。
5. 运行程序Start-Process calc.exe6. 遍历文件夹$files = Get-ChildItem "C:\Users\Username\Documents\" -Recurse -Include *.txtforeach ($file in $files) {# 执行跨每个 txt 文件的操作}在上面的示例中,我们使用 Get-ChildItem cmdlet 查找指定文件夹(如文档文件夹)中的所有 txt 文件。
然后使用 foreach 循环遍历每个 txt 文件,并执行操作。
7. 远程管理Enter-PSSession -ComputerName RemoteComputerName8. 系统性能分析$counter = "\Processor(_Total)\% Processor Time"$baseline = (Get-Counter -Counter $counter).CounterSamples.CookedValuewhile ($true) {$value = (Get-Counter -Counter $counter).CounterSamples.CookedValue$delta = $value - $baseline$delta$baseline = $valueStart-Sleep -Seconds 5}在上面的示例中,我们使用 Get-Counter cmdlet 获取 CPU 利用率。
PowerShell使⽤教程⼀、说明1.1 背景说明个⼈对PowerShell也不是很熟悉,开始的时候就突然看到开始菜单中多了个叫PowerShell的⽂件夹,后来⼀点就看到某个教程视频说PowerShell很厉害但也没怎么听,再后来就看到kali也有了⼀些PowerShell的脚本这才意识到PowerShell应该确实有独到之处⽽且正在逐渐受到认可,不过我使⽤PowerShell是不久前⽹上看到篇⽂章说PowerShell可以算数所以常当个计算器使⽤。
直到昨天看了《Windows PowerShell实战指南》才算有了⽐较完整的了解。
1.2 PowerShell是什么很多⼈上来就什么基于.Net强⽆敌,⾸先作为⽤户我不关⼼你是什么技术,我⾸先想知道的是你提供的是什么东西、怎么⽤。
PowerShell,从名字可以知道,他⾸先是⼀个shell,shell的意思就是和Linux的bash等⼀样、和原来的cmd⼀样就是在⾥边敲命令(可执⾏⽂件)使⽤;⽽Power就意味他是⼀个功能强⼤的shell,从⾯向⽤户⽽⾔,个⼈觉得其功能强⼤体现在以下⼏⽅⾯:(1)微软态度。
微软是真正的在推⾏PowerShell,包括Office等更多⾃家软件,底层都是调⽤PowerShell来实现。
(2)兼容性cmd。
PowerShell包含原先cmd的所有命令,原先命令使⽤形式不变,在是在其基础上添加命令。
(3)对标Linux。
PowerShell使⽤了Linux Shell的思想,也就是所有的系统操作、配置,都可以在shell中敲写命令实现。
(4)统⼀的命令格式和⾃包含的⽂档。
基于前3点我们即可以说PowerShell已可与Linux Bash等⼀较⾼下,如果再加上后发优势那就可以让⼈相信PowerShell可以成功。
对于bash等shell你觉得最⼤的缺点是什么?从我⾓度⽽⾔我觉得是成本很⾼,最开始是我不知道⽤什么命令不太记得使⽤什么命令我需要百度⼀下,⼆是我经常忘记命令参数格式怎么写要在良莠不齐的⽹上百度半天(man⼿册?对不起我真的经常没看懂,我博客之前写了不少关于shell命令的⽂章就是备忘⽤,⽹上那么多关于shell命令的⽂章也说明不是因为我特别蠢)。
PowerShell基础教程一:Windows PowerShell简介XP/Server 2003/Vista/Server 2008操作系统的脚本语言。
包括 Cmd.exe 、SH、KSH、CSH以及BASH Unix在内的大多数外壳程序的操作方式都是在新的进程中执行命令或实用工具程序,并以文本格式向用户显示结果。
多年以来,许多文本处理实用工具程序,如sed、AWK 和 PERL,都已逐渐发展为支持这种交互模式。
这些外壳程序也会提供内置于外壳程序中并在外壳程序处理器中执行的命令,例如KSH 中的typeset命令和以及 Cmd.exe 中的 dir 命令。
在大多数外壳程序中,由于内置命令数量少,从而导致许多实用工具程序应运而生。
针对这一点,Windows PowerShell 有不同的做法。
◆ Windows PowerShell 并不处理文本,而是处理以.NET平台为基础的对象;◆Windows PowerShell 附带了数量庞大的内置命令集和一致的接口;◆对于各个工具,全部的外壳程序命令都使用相同的命令剖析器,而非使用不同的剖析器,这项特点会使你更容易学会每种命令的使用方式。
其中最棒的就是你完全不需要舍弃已使用习惯的工具,你可以继续在Windows PowerShell 中使用诸如Net、SC 和 Reg.exe 等传统的 Windows 工具。
Windows PowerShell CmdletCmdlet (发音如“command-let”) 是指在 Windows PowerShell 中用来操作对象的单一功能命令。
你可以依据其名称格式来加以辨识 Cmdlet -- 以破折号 (-) 分隔的动词和名词,例如Get-Help、Get-Process 和 Start-Service。
在传统的外壳程序中,命令是极为简单 (例如 attrib.exe) 到极为复杂 (例如 netsh.exe) 范围内的可执行程序。
Windows 系统下POWERSHELL 命令“Add-AppPackageVolume”的使用方法Add-AppPackageVolume 是 PowerShell 的一个命令,用于在 Windows 系统上安装和配置应用包。
这个命令的主要功能是允许用户将应用程序的包文件(通常是 .appx 文件)安装到系统中,并可以将它们注册到 Windows 应用商店中,以便可以在系统中正常运行。
Add-AppPackageVolume 命令的基本用法如下:参数说明:Path :指定包含 .appx 文件的文件夹路径。
VolumeName :指定应用程序包的目标文件夹名称。
Force :可选参数,用于强制安装应用程序包,即使在之前已经安装过的情况下也会重新安装。
以下是一个简单的示例,说明如何在 PowerShell 中使用 Add-AppPackageVolume 命令:在这个示例中,我们首先指定了包含 .appx 文件的文件夹路径和应用程序包的目标文件夹名称,然后使用 Add-AppPackageVolume 命令安装应用程序包。
适用场景:Add-AppPackageVolume 命令适用于需要将应用程序包安装到 Windows 系统并注册到 Windows 应用商店以供正常使用的情况。
例如,在企业环境中,可能需要批量部署应用程序,或者需要将应用程序安装到特定的文件夹中。
请注意,Add-AppPackageVolume 命令是 Windows PowerShell 的一个功能,因此它只能在 Windows 操作系统中执行。
在其他操作系统或环境中,可能没有这个命令或类似的功能。
Add-AppPackageVolume -Path <路径> -VolumeName <卷名> -Force # 假设 .appx 文件位于 C:\Apps 文件夹中$path = "C:\Apps"# 指定应用程序包的目标文件夹名称为 "MyApp"$volumeName = "MyApp"# 使用 Add-AppPackageVolume 命令安装应用程序包Add-AppPackageVolume -Path $path -VolumeName $volumeName。
windows powershell 用法Windows PowerShell 是一种强大的命令行工具,用于自动化和管理Windows 系统。
以下是Windows PowerShell 的一些基本用法:一、启动PowerShell:在开始菜单中搜索"PowerShell",然后选择"Windows PowerShell" 或"Windows PowerShell ISE"(一个带有图形界面的版本)。
在命令提示符(Command Prompt)中输入"PowerShell" 并按回车。
在文件路径下,按Shift + 鼠标右键,选择"在此处打开PowerShell"。
二、基本命令:Get-Command:获取所有可用的命令。
Get-Process:获取当前运行的所有进程。
cls 或 Clear-Host:清屏。
help:显示帮助信息。
例如,help Get-Process 会显示关于 Get-Process 命令的帮助。
三、文件操作:New-Item:创建新的文件或目录。
例如,New-Item -Type Directory "新目录名" 会创建一个新目录。
Remove-Item:删除文件或目录。
例如,Remove-Item "文件或目录名" 会删除指定的文件或目录。
Get-Content:查看文件内容。
例如,Get-Content "文件名" 会显示文件的内容。
Set-Content:给文件添加内容。
例如,Set-Content "文件名" "要添加的内容" 会将指定的内容添加到文件中。
Add-Content:向文件追加内容。
例如,Add-Content "文件名" "要追加的内容" 会在文件的末尾追加指定的内容。
PowerShell使⽤教程1、打开powershell 不说了2、获取帮助: get-help (所有命令都是cmdlet格式,help也不例外)3、查看有哪些命令: get-command (可看到命令类型有:Alias别名、Cmdlet命令、Function函数)4、查看以 get开头的命令: get-command get-*5、查看get-process命令的⽤法: get-help get-process6、⽤get-process查找进程notepad :get-process -name *notepad* (当前,你得先打开⼀个记事本notepad.exe)7、获取stop-process在线帮助: get-help stop-process -Online8、⽤stop-process杀除进程notepad:Stop-Process -Name "notepad"想想还能⼲什么9、下载⽂件$webRequest = [.HttpWebRequest]::Create("/fwlink/?LinkID=149156")$webRequest.Method = "GET";$erAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"$response = $webRequest.GetResponse()$stream = $response.GetResponseStream()$reader = New-Object System.IO.BinaryReader($stream)$bytes = New-Object System.Byte[] $response.ContentLengthfor ($read = 0; $read -ne $bytes.Length; $read += $reader.Read($bytes,$read,$bytes.Length - $read) ){ }[System.IO.File]::WriteAllBytes("c:tempSilverLight.exe",$bytes);将上述代码copy到powershell 后,下载到哪⼉了?执⾏pwd 显⽰c:\users\⽤户名到这个⽬录下找到了tempSilverLight.exe (原来在原代码中c:少了\,但容错能⼒很强,呵呵)10、下载并安装MICROSOFT® REPORT VIEWER 2015 RUNTIME#添加程序集Add-Type -AssemblyName System.IOAdd-Type -AssemblyName pressionAdd-Type -AssemblyName pression.FileSystem#下载地址$DownloadUrl = "https:///download/A/1/2/A129F694-233C-4C7C-860F-F73139CF2E01/ENU/x86/ReportViewer.msi"#下载到Temp⽬录$TempPath = $env:TEMP#下载的⽂件名$FileName = "ReportViewer.msi"#存储的完整⽂件路径$FullPath = "$TempPath\$FileName"#Download$client = New-Object .WebClient"Now is downloading MICROSOFT® REPORT VIEWER 2015 RUNTIME"$client.DownloadFile($DownloadUrl, $FullPath)"Download success"#Installmsiexec.exe /i $FullPath /qr"Press any key to exit"Read-Host11、卸载MICROSOFT® REPORT VIEWER 2015 RUNTIMEmsiexec.exe /x "{3ECE8FC7-7020-4756-A71C-C345D4725B77}" /qr可以指定msi安装包,也可以指定ProductCode,可以访问从注册表以下位置查找ProductCode。
powershell命令教程 1启动 powershell23#字符串操作4对象操作"hello".Length567#进程操作8 PS C:\> notepad9 PS C:\> $process=get-process notepad10 PS C:\> $process.Kill()111213#默认对象操作14 PS C:\> 40GB/650MB15 63.01538461538461617#时间操作18 PS C:\> [DateTime]"2009-12-5" - [DateTime]::Now19 Days : -5820 Hours : -1421 Minutes : -5322 Seconds : -5823 Milliseconds : -51024 Ticks : -5064838510531425 TotalDays : -58.620816094113426 TotalHours : -1406.8995862587227 TotalMinutes : -84413.975175523328 TotalSeconds : -5064838.510531429 TotalMilliseconds : -5064838510.53143031#时间对象操作32 PS C:\> $result = [DateTime]"2009-12-5" - [DateTime]::Now33 PS C:\> $result.TotalDays34 -58.6213450248299353637#查询今天星期⼏38 PS C:\Users\vv> $date=Get-Date39 PS C:\Users\vv> $date.DayOfWeek40Monday414243#查找powershell命令中包含单词process的命令44 PS C:\> Get-Command *process*45CommandType Name Definition46 ----------- ---- ----------47 Application api-ms-win-core-processenvir... C:\Windows\system32\api-ms-w...48 Application api-ms-win-core-processthrea... C:\Windows\system32\api-ms-w...49 Cmdlet Debug-Process Debug-Process [-Name] <Strin...50 Cmdlet Get-Process Get-Process [[-Name] <String...51 Application microsoft-windows-kernel-pro... C:\Windows\system32\microsof...52Application qprocess.exe C:\Windows\system32\qprocess...53 Cmdlet Start-Process Start-Process [-FilePath] <S...54 Cmdlet Stop-Process Stop-Process [-Id] <Int32[]>...55 Cmdlet Wait-Process Wait-Process [-Name] <String...565758#检索donet中对象的属性和⽅法59 PS C:\> "aaa" | Get-Member6061 TypeName: System.String6263Name MemberType Definition64 ---- ---------- ----------65Clone Method System.Object Clone()66CompareTo Method int CompareTo(System.Object value), i...67Contains Method bool Contains(string value)68CopyTo Method System.Void CopyTo(int sourceIndex, c...69 EndsWith Method bool EndsWith(string value), bool End...70Equals Method bool Equals(System.Object obj), bool ...71GetEnumerator Method System.CharEnumerator GetEnumerator()72GetHashCode Method int GetHashCode()73GetType Method type GetType()74GetTypeCode Method System.TypeCode GetTypeCode()75IndexOf Method int IndexOf(char value), int IndexOf(...76IndexOfAny Method int IndexOfAny(char[] anyOf), int Ind...77Insert Method string Insert(int startIndex, string ...78IsNormalized Method bool IsNormalized(), bool IsNormalize...79LastIndexOf Method int LastIndexOf(char value), int Last...80LastIndexOfAny Method int LastIndexOfAny(char[] anyOf), int...81...828384#统计所有正在运⾏的进程的句柄数85 PS C:\> $handleCount=086 PS C:\> foreach($process in Get-process) { $handleCount +=$process.Handles }87 PS C:\> $handleCount88 233188990#直接调⽤donet对象,获取⽹页内容91 PS C:\> $webClient = New-Object .WebClient92 PS C:\> $content = $webClient.DownloadString("")93 PS C:\> $content.Substring(0,1000)94 <html><head><meta http-equiv=Content-Type content="text/html;charset=gb2312"><t95 itle>百度⼀下,你就知道 </title><style>body{margin:4px 0}p{margin:0;paddin96 g:0}img{border:0}td,p,#u{font-size:12px}#b,#u,#l td,a{font-family:arial}#kw{fon97 t:16px Verdana;height:1.78em;padding-top:2px}#b{height:30px;padding-top:4px}#b, 98#b a{color:#77c}#u{padding-right:10px;line-height:19px;text-align:right;margin:99 0 0 3px !important;margin:0 0 10px}#sb{height:2em;width:5.6em}#km{height:50px}# 100 l{margin:0 0 5px 38px}#l td{padding-left:107px}p,table{width:650px;border:0}#l101 td,#sb,#km{font-size:14px}#l a,#l b{margin-right:1.14em}a{color:#00c}a:active{c102 olor:#f60}#hp{position:absolute;margin-left:6px}#lg{margin:-26px 0 -44px}#lk{wi103 dth:auto;line-height:18px;vertical-align:top}form{position:relative;z-index:9}<104 /style></head>105 <body><div id=u><a href=/?login&tpl=mn>登录</a></div>< 106 center><img src=/img/baidu_logo.gif width=270 height=129 us 107 emap="#mp" id=lg><br><br><br><br><table cellpadd108109110#获取系统信息111 PS C:\> Get-WmiObject Win32_Bios112113SMBIOSBIOSVersion : 2TKT00AUS114Manufacturer : LENOVO115 Name : Default System BIOS116 SerialNumber : 1111111117 Version : LENOVO - 5000821118119120#导航⽂件系统121 PS C:\> Set-Location c:\122 PS C:\> Get-ChildItem123124125⽬录: C:\126127128Mode LastWriteTime Length Name129 ---- ------------- ------ ----130 d---- 2010/1/7 14:20 bea131 d---- 2010/1/7 14:20 BEA WebLogic E-Business Platform132 d---- 2009/12/7 13:02 dzh133 d---- 2010/1/2 15:48 his134 d---- 2009/7/14 10:37 PerfLogs135 d-r-- 2010/1/25 12:58 Program Files136 d-r-- 2009/12/31 19:11 Users137 d---- 2009/11/7 9:52 usr138 d---- 2010/1/28 3:16 Windows139 -a--- 2009/6/11 5:42 24 autoexec.bat140 -a--- 2009/6/11 5:42 10 config.sys141 -a--- 2009/10/28 13:37 454656 putty.exe142143144#导航注册表145 PS C:\> Set-Location HKCU:\Software\Microsoft\Windows\146 PS HKCU:\Software\Microsoft\Windows\> Get-ChildItem147148149 Hive: HKEY_CURRENT_USER\Software\Microsoft\Windows150151152SKC VC Name Property153 --- -- ---- --------154 33 0 CurrentVersion {}155 0 11 DWM {Composition, CompositionPolicy, Colo...156 3 0 Shell {}157 1 0 ShellNoRoam {}158 2 0 TabletPC {}159 3 12 Windows Error Reporting {ConfigureArchive, DisableArchive, Di...160161162#导航证书163 PS C:\Users\vv> Set-Location cert:\CurrentUser\Root164 PS cert:\CurrentUser\Root> Get-ChildItem165166167⽬录: Microsoft.PowerShell.Security\Certificate::CurrentUser\Root168169170Thumbprint Subject171 ---------- -------172 CDD4EEAE6000AC7F40C3802C171E30148030C072 CN=Microsoft Root Certificate Auth...173 BE36A4562FB2EE05DBB3D32323ADF445084ED656 CN=Thawte Timestamping CA, OU=Thaw... 174 A7217F919843199C958C128449DD52D2723B0A8A CN= Corporation Root CA... 175 A43489159A520F0D93D032CCAF37E7FE20A8B419 CN=Microsoft Root Authority, OU=Mi...176 7F88CD7223F3C813818C994614A89C99FA3B5247 CN=Microsoft Authenticode(tm) Root...177 742C3192E607E424EB4549542BE1BBC53E6174E2 OU=Class 3 Public Primary Certific...178 654E9FADD2032AE1B87D6263AF04FD7FEE38D57C CN=iTruschina CN Root CA-3, OU=Chi... 179 46F168AF009C28C18F452EB85F5E8747892B3C8B CN=iTruschina CN Root CA-2, OU=Chi... 180 245C97DF7514E7CF2DF8BE72AE957B9E04741E85 OU=Copyright (c) 1997 Microsoft Co...181 240A61A2577970625B9F0B81283C4AA4037217B1 CN=iTruschina CN Root CA-1, OU=Chi... 182 18F7C1FCC3090203FD5BAA2F861A754976C8DD25 OU="NO LIABILITY ACCEPTED, (c)97 V (183)184185#显⽰所有进程186PS C:\Users\vv> Get-Process187188Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName189------- ------ ----- ----- ----- ------ -- -----------190 527 28 40784 44864 243 18.94 4956 360SE191 537 29 49144 59340 248 9.09 5276 360SE192 924 20 17580 2504 132 3768 360tray193 160 5 16080 7852 41 2036 audiodg194 318 24 6524 7008 124 188 CCProxy195 56 5 796 288 33 1232 CNAB4RPK196 61 4 1568 6916 63 0.19 5064 conhost197 60 4 1532 3628 63 0.06 5584 conhost198 645 6 2076 1204 72 380 csrss199 649 9 8148 11056 185 440 csrss200......201202203#搜索所有包含Get动词的命令204PS C:\Users\vv> Get-Command -Verb Get205206CommandType Name Definition207----------- ---- ----------208Cmdlet Get-Acl Get-Acl [[-Path] <String[]>]...209Cmdlet Get-Alias Get-Alias [[-Name] <String[]...210Cmdlet Get-AuthenticodeSignature Get-AuthenticodeSignature [-...211Cmdlet Get-ChildItem Get-ChildItem [[-Path] <Stri...212Cmdlet Get-Command Get-Command [[-ArgumentList]...213Cmdlet Get-ComputerRestorePoint Get-ComputerRestorePoint [[-... 214......215216217#帮助218PS C:\Users\vv> Get-Help Get-Verb -Full/-Detailed/-Examples219220221#调⽤powershell脚本222PowerShell "& 'C:\get-report.ps1' arguments"223224225#循环226PS C:\Users\vv> 1..10 | % {"aaa"}227aaa228aaa229aaa230aaa231aaa232aaa233aaa234aaa235aaa236aaa237238239#数据加密(Base64)240PS C:\Users\vv> $bytes=[System.Text.Encoding]::Unicode.GetBytes("aaa") 241PS C:\Users\vv> $encodedString=[Convert]::ToBase64String($bytes)242PS C:\Users\vv> $encodedString243YQBhAGEA244245246#检查命令是否执⾏成功247PS C:\Users\vv> $lastExitCode2480249PS C:\Users\vv> $?250True251252253#性能测试,计算⼀个命令执⾏的时间254PS C:\Users\vv> Measure-Command { Start-Sleep -Milliseconds 337 }255Days : 0256Hours : 0257Minutes : 0258Seconds : 0259Milliseconds : 340260Ticks : 3404713261TotalDays : 3.9406400462963E-06262TotalHours : 9.45753611111111E-05263TotalMinutes : 0.00567452166666667264TotalSeconds : 0.3404713265TotalMilliseconds : 340.4713266267268#foreach 循环269foreach($alias in Get-Alias){270 $alias271}272273274#显⽰为表格275PS C:\Users\vv> Get-Process | Format-Table Name,WS -Auto276277278#复制⽂件279Copy-Item c:\temp\*.txt c:\temp\backup\ -verbose280281282#列出所有已经停⽌的服务283PS C:\Users\vv> Get-Service | Where-Object { $_.Status -eq "Stopped" }284#列出当前位置的所有⼦⽬录285PS C:\Users\vv> Get-ChildItem | Where-Object { $_.PsIsContainer }286287288#循环289PS C:\Users\vv> 1..10 | Foreach-Object { $_ * 2 }290291292#获取正在运⾏的记事本程序的进程列表,然后等待他们退出293PS C:\Users\vv> $notepadProcesses = Get-Process notepad294PS C:\Users\vv> $notepadProcesses | Foreach-Object { $_.WaitForExit() }295296#其它循环关键字297for foreach do while298299300#从管道中选择接收值301PS C:\Users\vv> dir | Select Name302303304#释放变量占⽤的内存空间305$processes = $null306307308#显⽰所有变量309PS C:\> dir variable:\310311PS C:\> dir variable:\s*312313#显⽰⽂件内容314PS C:\> ${c:\autoexec.bat}315316#变量范围317$Global:myVariable1 = value1318$Script:myVariable2 = value2319$Local:myVariable3 = value3320321322#静态⽅法调⽤ donet323PS C:\> [System.Diagnostics.Process]::GetProcessById(0)324325Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName326------- ------ ----- ----- ----- ------ -- -----------327 0 0 0 24 0 0 Idle328329330Get-Process Notepad331#Get-Process 代替 System.Diagnostics.Process332333$process.WaitForExit() #暂停直到结束334335Get-Date 等同于 [System.DateTime]::Now336337#创建对象338PS C:\> $generator = New-Object System.Random339PS C:\> $generator.NextDouble()3400.121309703738107341342PS C:\> (New-Object Net.WebClient).DownloadString("")343344#先加载库⽂件345PS C:\> [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")346GAC Version Location347--- ------- --------348True v2.0.50727 C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.... 349#创建后保存350PS C:\> $image = New-Object System.Drawing.Bitmap source.gif351PS C:\> $image.Save("source_1.jpg","JPEG")352353354PS C:\> [Reflection.Assembly]::LoadWithPartialName("System.Web")355GAC Version Location356--- ------- --------357True v2.0.50727 C:\Windows\assembly\GAC_32\System.Web\2.0.0.0__b03f5f7...358359PS C:\> [Web.HttpUtility]::UrlEncode("")360http%3a%2f%361362363#缩短类名364PS C:\> $math=[System.Math]365PS C:\> $math::Min(1,10)3661367368#调⽤COM组件369$sapi = New-Object -Com Sapi.SpVoice370$sapi.rate=0371$sapi.Speak("⼀直以为...只要隐着⾝,就没有美⼥认得出我是帅哥!但是...我错了,像我这样拉风的男⼈,就好⽐那暗夜⾥的萤⽕⾍,⽥地⾥的⾦龟⼦,是那样的鲜372373374#获取对象类型375$date = Get-Date376$date.GetType().ToString()377378379#正则表达式匹配380PS C:\Users\vv> "Hello World" -match "Hello"381True382383#条件运算符384PS C:\Users\vv> $data = "Hello World"385($data -like "*llo w*") -and ($data.Length -gt 10)386True387388#逻辑运算关键字389-eq -ne -ge -lt -le -like -notlike -match -notmatch -contains -notcontains -is isnot390391392#条件语句393if elseif else394395$a=20396switch($a)397{398 {$_ -lt 32} {"aaaa";break}399 32 {"bbb";break}400 default {"ccc"}401}402403#循环404#for foreach while do foreach-object405foreach($file in dir){406"File length:"+$file.Length407}408409#暂停或延迟410Read-Host "Press ENTER"411Start-Sleep 2412Start-Sleep -Milliseconds 300413414415#字符串使⽤单引号表⽰原⽣字符串,不⽀持变量扩展或转义字符416$myString = 'Hello World'417418#多⾏字符串419$myString = @"420This is the first line,421This is the second line.422"@423424#多⾏注释425##This is a regular comment426$null=@"427function MyTest{428"aaaaaaaaaaaa"429}430"@431#变量$null告诉PowerShell不必为后续的使⽤⽽继续保留信息了432433#转义字符 ` (不使⽤反斜杠)434PS C:\Users\vv> $myString = "Report for today `n---------"435$myString436Report for today437---------438439#字符串变量440PS C:\Users\vv> $header = "Report for today"441$myString = "$header `n$('-'*$header.Length)"442$myString443444Report for today445----------------446447#格式化输出右对齐8个字符,格式为4为数字,:C表⽰货币形式 -f String.Format() 448PS C:\Users\vv> $formatString = "{0,8:D4} {1:C}`n"449$report = "Quantity Price`n"450$report += "--------------`n"451$report += $formatString -f 50,2.5677452$report += $formatString -f 3,7453$report454Quantity Price455--------------456 0050 ¥2.57457 0003 ¥7.00458459#字符串⽅法460PS C:\Users\vv> "abc".IndexOf("b")4611462463PS C:\Users\vv> "abc".Contains("b")464True465466#$helpContent 得到的是⼀个对像,⽽不是字符串467$helpContent = Get-Help Get-ChildItem468$helpContent -match "location"469False470471$472Get-ChildItem473474#得到字符串使⽤下⾯的⽅式475$helpContent = Get-Help Get-ChildItem | Out-String476$helpContent -match "location"477True478479"Hello World".Replace("World","PowerShell")480Hello PowerShell481482#replace ⾼级⽤法483"Hello World" -replace '(.*) (.*)','$2 $1'484World Hello485486"Hello World".ToUpper()487HELLO WORLD488"Hello World".ToLower()489hello world490491#⾸字符⼤写492$text = "hello"493$newText = $text.Substring(0,1).ToUpper()+$text.Substring(1)494495"Hello World".Trim()496497#从字符串尾部取出字符498"Hello World".TrimEnd('w','d',' ');499500#格式化⽇期501$date = [DateTime]::now502$date.ToString("dd-MM-yyyy")503504#⽇期⽐较505$dueDate = [DateTime] "01/01/2008"506if([DateTime]::Now -gt $dueDate)507{508"Account is now due"509}510511512#字符串合并⽤ append513Measure-Command{514 $output = New-Object Text.StringBuilder515 1..10000 |516 Foreach-Object { $output.Append("Hello World") } 517}518Days : 0519Hours : 0520Minutes : 0521Seconds : 1522Milliseconds : 696523Ticks : 16965372524TotalDays : 1.96358472222222E-05525TotalHours : 0.000471260333333333526TotalMinutes : 0.02827562527TotalSeconds : 1.6965372528TotalMilliseconds : 1696.5372529530Measure-Command{531 $output =""532 1..10000 |533 Foreach-Object { $output+="Hello World" } 534}535Days : 0536Hours : 0537Minutes : 0538Seconds : 5539Milliseconds : 453540Ticks : 54531118541TotalDays : 6.31147199074074E-05542TotalHours : 0.00151475327777778543TotalMinutes : 0.0908851966666667544TotalSeconds : 5.4531118545TotalMilliseconds : 5453.1118546547548#数学计算549$result = [int](3/2)550$result5512552553#截断554$result=3/2555[Math]::Truncate($result)5561557558function trunc($number){559 [Math]::Truncate($number)560}561$result=3/2562trunc $result5631564565[Math]::Abs(-10.6)566[Math]::Pow(123,2)567[Math]::Sqrt(100)568[Math]::Sin([Math]::PI /2)569[Math]::ASin(1)570571#⽴⽅根572function root($number,$root){ [Math]::Exp($([Math]::Log($number)/$root))} 573root 64 35744575576#统计5771..10 | Measure-Object -Average -Sum578579Count : 10580Average : 5.5581Sum : 55582Maximum :583Minimum :584Property :585586Get-ChildItem > output.txt587Get-COntent output.txt | Measure-Object -Character -Word -Line588589 Lines Words Characters Property 590 ----- ----- ---------- --------591 28 117 2638592593#从⽂件列表中取得LastWriteTime的平均值594$times = dir | Foreach-Object { $_.LastWriteTime }595$results = $times | Measure-Object Ticks -Average596New-Object DateTime $results.Average5975982009年12⽉11⽇ 21:27:09599600601#16进制数602$hexNumber = 0x1234603$hexNumber6044660605606#16进制转 2进制607[Convert]::ToString(12341,2)60811000000110101609610#2进制转10进制611[Convert]::ToInt32("11000000110101",2)61212341613614#修改⽂件属性,并查询615$archive = [System.IO.FileAttributes] "Archive"616attrib +a test.txt617Get-ChildItem | Where { $_.Attributes -band $archive } | Select Name618619620#⽂件加密621(Get-Item output.txt).Encrypt()622#⽂件解密623(Get-Item output.txt).Decrypt()624625#设置⽂件属性626(Get-Item output.txt).IsReadOnly627True628(Get-Item output.txt).IsReadOnly = $false629(Get-Item output.txt).IsReadOnly630False631632633#枚举⽂件可能的属性634[Enum]::GetNames([System.IO.FileAttributes])635ReadOnly636Hidden637System638Directory639Archive640Device641Normal642Temporary643SparseFile644ReparsePoint645Compressed646Offline647NotContentIndexed648Encrypted649650651[int] (Get-Item output.txt).Attributes65232653654#⽂件属性的表⽰形式655$attributes = [Enum]::GetValues([System.IO.FileAttributes])656$attributes | Select-Object `657 @{"Name"="Property";"Expression"={ $_ }},658 @{"Name"="Integer";"Expression"={ [int]$_ }},659 @{"Name"="Hexadecimal";"Expression"={ [Convert]::ToString([int] $_,16)}}, 660 @{"Name"="Binary";"Expression"={ [Convert]::ToString([int] $_,2)}} |661 Format-Table -auto662663 Property Integer Hexadecimal Binary664 -------- ------- ----------- ------665 ReadOnly 1 1 1666 Hidden 2 2 10667 System 4 4 100668 Directory 16 10 10000669 Archive 32 20 100000670 Device 64 40 1000000671 Normal 128 80 10000000672 Temporary 256 100 100000000673 SparseFile 512 200 1000000000674 ReparsePoint 1024 400 10000000000675 Compressed 2048 800 100000000000676 Offline 4096 1000 1000000000000677NotContentIndexed 8192 2000 10000000000000678 Encrypted 16384 4000 100000000000000679680681#判断⽂件属性682$encrypted=16384683$attributes = (Get-Item output.txt -force).Attributes684($attributes -band $encrypted) -eq $encrypted685False686687688#读取⽂件内容689$content = Get-Content c:\file.txt690$content = ${c:\file.txt}691$content = [System.IO.File]::ReadAllText("c:\file.txt")692693#搜索⽂件⽂本694Select-String -Simple "aaa" file.txt695Select-String "\(...\) ...-..." phone.txt696697Get-ChildItem -Filter *.txt -Recurse | Select-String pattern698699700#获取被补丁修改的⽂件列表701cd $env:WINDIR702$parseExpression = "(.*): Destination:(.*) \((.*)\)"703$files = dir kb*.log -Exclude *uninst.log704$logContent = $files | Get-Content | Select-String $parseExpression705$logContent706707#移动⽂件,删除⽂件708$filename = [System.IO.Path]::GetTempFileName()709$newname = [System.IO.Path]::ChangeExtension($filename,".cs")710Move-Item $filename $newname711Remove-Item $newname712713714#内容写⼊到⽂件715$filename = "output.txt"716$content = Get-Content $filename717$content = "hellohello"718$content | Set-Content $filename719720721#xml⽂件722$xml = [xml] (Get-Content powershell_blog.xml)723$xml.rss724($xml.rss.channel.item).Count725($xml.rss.channel.item)[0].title726$xml.rss.channel.item | Sort-Object title | Select-Object title727728#XPath查询729#查询所有少于20个字符的标题730$xml = [xml] (Get-Content powershell_blog.xml)731$query = "/rss/chanel/item[string-length(title) < 20]/title"732$xml.SelectNodes($query)733734#修改xml735$filename = (Get-Item phone.xml).FullName736Get-Content $fileName737$phoneBook = [xml](Get-Content $fileName)738$person = $phoneBook.AddressBook.Person[0]739$person.Phone[0]."#text" = "555-1214"740$person.Phone[0].type="mobile"741$newNumber = [xml]'<Phone type="home">555-1215</Phone>'742$newNode = $phoneBook.ImportNode($newNumber.Phone,$true) 743 [void] $person.AppendChild($newNode)744$phoneBook.save($filename)745 Get-Content $filename746747748749#Internet 脚本750#下载⼀个⽂件 (参数错误?)751$source = "/images/0809/logo1.png"752$destination = "c:\logo1.png"753$wc = New-Object .WebClient754$wc.DownloadFile($source,$destination)755756#下载⼀个Web页⾯757$source = "/powershell/rss.xml"758$wc = New-Object .WebClient759$content = $wc.DownloadString($source)760761#输出格式为Html 创建⼀个PowerShell命令的概要762$filename = "c:\PowerShell.html"763$commands = Get-Command | Where { $_.CommandType -ne"Alias" } 764$summary = $commands | Get-Help | Select Name,Synopsis765$summary | ConvertTo-Html | Set-Content $filename766767#脚本块768function MultiplyInpuByTwo769{770process771 {772$_ * 2773 }774}775776 1,2,3 | MultiplyInpuByTwo777 2778 4779 6780781#从脚本块返回数据782function GetDate783{784 Get-Date785}786$tomorrow = (GetDate).AddDays(1)787788789790791792#数组793$myArray = 1,2,"aaa"794$myArray795 1796 2797aaa798799#数组基本操作800$collection = New-Object System.Collections.ArrayList801$collection.Add("Hello")802 [void]$collection.Add("Hello")803 [void]$collection.AddRange{("a","b")}804$collection.RemoveAt(1)805806$myArray = New-Object string[] 10807$myArray[5]="bbb"808809810$myArray = Get-Process811$myArray812813Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName 814 ------- ------ ----- ----- ----- ------ -- -----------815 851 38 69204 101888 338 137.36 5012 360SE816 532 30 42192 42316 271 54.19 5864 360SE817 965 19 17784 2192 132 3768 360tray818 134 5 15516 12864 41 3612 audiodg819 314 21 6796 5228 127 188 CCProxy820 56 5 796 304 33 1232 CNAB4RPK821 61 4 1532 1312 63 0.09 5436 conhost822......823824825$myArray = @(Get-Process Explorer)826$myArray827828Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName 829 ------- ------ ----- ----- ----- ------ -- -----------830 1085 42 52080 98140 300 164.77 2256 explorer831832833834$a = @(835 (1,2,3,4),836 (5,6,7,8)837)838$a[0][1]839 2840841$myArray = 1,2,3842$myArray[1..3 + 0]843 2844 3845 1846847#访问数组中的每⼀个元素848$myArray = 1,2,3849$sum = 0850$myArray | Foreach-Object {$sum+=$_}851$sum852 6853854#访问数组中的每⼀个元素,更脚本化855$myArray = 1,2,3856$sum=0857foreach($element in$myArray){$sum+=$element}858$sum859 6860861#数组列表排序862 Get-ChildItem | Sort-Object -Descending Length | Select Name, Length 863864#检查数组列表是否包含指定的项865"Hello","World"-contains"Hello"866867#合并数组868$array = 1,2869$array += 3,4870871#数组查询872$array = "Item1","Item2","Item3","Item4","Item15"873$array-eq"Item1"#Item1874$array-like"*2*"#Item2875$array-match"Item.."#Item15876$array-ne"Item1"#Item2 Item3 Item4 Item15877$array-notlike"*1*"#Item2 Item3 Item4878$array-notmatch"Item.."#Item1 Item2 Item3 Item4879880881#哈希表 ,哈希表不保存顺序,可⽤ Sort 排序882$myHashtable = @{}883$myHashtable = @{key1="value1";key2=1,2,3}884$myHashtable["NewItem"]=5885foreach($item in$myHashtable.GetEnumerator() | Sort Name)886{887$item.value888}889890891#参数892function Reverse893{894$srgsEnd = $args.Length - 1895$args[$srgsEnd..0]896}897 Reverse 1,2,3,4898899900#⽤户交互901#读取⽤户输⼊⼀⾏902$directory = Read-Host "Enter a directory name:"903$directory904905#读取⽤户输⼊的键906$key = [Console]::ReadKey($true)907$key908909$key = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")910911#环境变量912913#查看914$env:username915916#完整⽅式917 Get-Content Env:\Username918919920#查看所有变量921dir env:922923Name Value924 ---- -----925ALLUSERSPROFILE C:\ProgramData926 ANT_HOME D:\J2EE\apache-ant-1.7.0927APPDATA C:\Users\vv\AppData\Roaming928 CLASSPATH .\;D:\Design\J2EE\jdk1.6.0_10\lib\tools.jar 929CommonProgramFiles C:\Program Files\Common Files 930 COMPUTERNAME VV-PC931ComSpec C:\Windows\system32\cmd.exe932FP_NO_HOST_CHECK NO933HOMEDRIVE C:934HOMEPATH \Users\vv935 JAVA_HOME D:\Design\J2EE\jdk1.6.0_10936......937938#设置环境变量(永久)939$oldPersonalPath = ";d:\tools"940 [Environment]::SetEnvironmentVariable("Path",$oldPersonalPath,"User")941 [Environment]::GetEnvironmentVariable("Path","User") #;d:\tools942943944#阅读 rss945$sapi = New-Object -Com Sapi.SpVoice946$WebClient = New-Object .WebClient947$WebClient.Encoding=[System.Text.Encoding]::UTF8948$rss = [XML]($WebClient.DownloadString("/zixun/rss_fyzx.xml")) 949foreach($item in$rss.rss.channel.Item){950$title = $item.title951#$title = $item.title.InnerText952$content = $item.description953#$content = $item.description.InnerText954#$content = $item.description.InnerText.Replace(" ","")955$title956$sapi.Speak($title+"。
PowerShell函数简明教程PowerShell函数跟其它的编程语⾔的函数差不多,主要涉及输⼊参数、处理、输出参数、返回值、如何调⽤等⽅⾯的内容,下⾯逐⼀介绍。
1、PowerShell函数定义定义函数使⽤function关键字,使⽤⾃定义的标识符作为函数名,使⽤⼀对⼤括号括起函数体。
如下:复制代码代码如下:function <函数名>{<函数体>;}举例:复制代码代码如下:function Test-Fun{$args0 = $args[0]$args1 = $args[1]Write-Host "p1=$args[0], p2=$args[1]"Write-Host "p1=$args0, p2=$args1"}在做这个例⼦的时候,洪哥遇到了很悲推的⼀幕。
感觉完全相同的两种输出⽅式,结果是截然不同。
洪哥只能说,双引号中的$args变量,居然不管后⾯的中括号和下标,真TMD的太诡异了,慎⽤!真相如下:复制代码代码如下:PS > function Test-Fun{>> $args0 = $args[0]>> $args1 = $args[1]>> $msg = "p1=$args[0], p2=$args[1]">> Write-Host "p1=$args[0], p2=$args[1]">> Write-Host $msg>> Write-Host "p1=$args0, p2=$args1">> }>>PS > test-fun 111 222p1=111 222[0], p2=111 222[1]p1=111 222[0], p2=111 222[1]p1=111, p2=2222、PowerShell函数输⼊参数在函数体中,使⽤Param()⽅法来定义函数的输⼊参数,如下:复制代码代码如下:function <函数名>{Param($p1,$p2,...);<函数体>;}关于PowerShell函数输⼊参数的更多详细介绍,⽐如“位置参数”、“名称参数”、“参数属性”等,请移步“PowerShell教程之PowerShell函数输⼊参数”。
PowerShell⼊门教程之PowerShell和Cmd命令⾏的关系?PowerShell是命令⾏的加强版吗?PowerShell能执⾏命令⾏的所有命令吗?PowerShell要替代命令⾏?这三个问题的答案⾜以让我们了解PowerShell与Cmd命令⾏之间的关系。
让我们慢慢道来。
PowerShell中的CMD命令启动PowerShell,在其中输⼊⼏个常⽤的Cmd命令复制代码代码如下:PS D:\Projects\Practise\PowerShell> dirDirectory: D:\Projects\Practise\PowerShellMode LastWriteTime Length Name---- ------------- ------ ----d---- 1/23/2013 12:35 PM d1d---- 1/23/2013 12:35 PM d2-a--- 1/21/2013 8:38 PM 36314 alias.txt-a--- 1/21/2013 8:32 PM 241530 cmdlets.txt或者复制代码代码如下:PS D:\Projects\Practise\PowerShell> cd ..PS D:\Projects\Practise>结果跟我们的预期是差不多。
不过,我们是否就能据此说PowerShell就是PowerShell是命令⾏的加强版吗?再试试下⾯这个命令:复制代码代码如下:PS D:\Projects\Practise\PowerShell> dir /addir : Cannot find path 'D:\ad' because it does not exist.这个跟我们的期望相去甚远。
在Cmd中,它应该输出当前位置的⼦⽂件夹的信息,但是这⾥,它似乎理解不了我们的参数。
下⾯这个命令也是⼀样:复制代码代码如下:PS D:\Projects\Practise\PowerShell> fc .\alias.txt .\cmdlets.txtFormat-Custom : A positional parameter cannot be found that accepts argument '.\cmdlets.txt'.我本来想要调⽤⽐较两个⽂件的fc命令,结果它却理解成了Format-Custom,⽜头不对马嘴。
powershell 标准输入的方式一、概述PowerShell 是一种强大的命令行界面,用于管理和操作 Windows 操作系统中的各种资源。
通过标准输入的方式,用户可以向 PowerShell 命令提供数据,以便执行相应的操作。
标准输入方式包括使用管道符(`|`)将其他命令的输出作为当前命令的输入,或者直接将数据输入到命令中。
二、使用标准输入的方式1. 使用管道符将输出作为输入:* 打开 PowerShell 命令行界面。
* 输入要执行的命令,并使用管道符将其他命令的输出作为当前命令的输入。
例如,假设我们有一个名为 `Get-Process` 的命令,用于获取当前系统中的进程信息。
我们可以使用以下方式将该命令的输出作为下一个命令的输入: ```php`Get-Process | Get-ProcessInfo````* 在上述示例中,我们使用第一个 `Get-Process` 命令获取进程信息,并将其输出传递给第二个 `Get-ProcessInfo` 命令,以获取每个进程的详细信息。
2. 直接输入数据:* 打开 PowerShell 命令行界面。
* 输入要执行的命令,并直接在命令中输入数据。
例如,假设我们要在PowerShell 中创建一个新目录,并直接输入目录路径作为命令的输入: ```php`New-Item -ItemType Directory -Path C:\Temp\NewDirectory````* 在上述示例中,我们直接输入 `C:\Temp\NewDirectory` 作为 `New-Item` 命令的路径参数,创建了一个新目录。
三、注意事项1. 标准输入方式允许用户灵活地组合和使用多个 PowerShell 命令,从而实现更复杂的操作。
2. 在使用标准输入方式时,请确保输入的数据是正确的,否则可能会导致命令执行失败或产生不正确的结果。
3. 请注意保护自己的输入数据,避免泄露敏感信息或遭受恶意攻击。
PowerShell数组操作简明教程对于编写程序来讲,离不开数组,PowerShell也不例外。
在PowerShell中创建和使⽤数组是⼀件前所未有的愉悦的事情,实在是简单、易⽤得太过分了!呵呵!1、定义数组在PowerShell中,所有的变量都⽆须定义,数组亦如此,所以此步省略。
2、初始化数组复制代码代码如下:$arr=1,2,3,'a','b','xx';在上⾯的例⼦中,洪哥对变量名为$arr的数组进⾏了初始化。
在PowerShell中初始化⼀个数组就是把所有的数组元素——不管什么类型的,通通赋给它。
每个数组元素之前使⽤逗号(,)分隔即可。
通过初始化之后,$arr这个数组有6个数组元素。
3、获取数组元素的值在PowerShell中,数组元素的索引或要下标是从0开始的,即上例中的$arr[0]=1,⽽$arr[5]='xx'。
$arr[5]已经是最最后⼀个元素了,如果我们调⽤$arr[6],系统也不会报错,只是不会输出任何内容。
4、获取⼀部分数组元素的值PowerShell数组中,最好玩的⼀件事获取数组元素的⼀部分,且看下⾯例⼦。
复制代码代码如下:PS >$arr[0]1PS >$arr[0+3]aPS >$arr[0,3]1aPS >$arr[0,1+3..5]12abxxPS >$arr[-1]xxPS >$arr[-2]b5、获取数组的元素个数复制代码代码如下:PS >$arr.Length66、遍历数组⽅法⼀:复制代码代码如下:foreach($a in $arr){$a}foreach对于遍历⼀个集合(数组也算是⼀个集合)⽽⾔,真是太⽅便了。
⽅法⼆:复制代码代码如下:for($i=0;$i -lt $arr.Length; $i++){$arr[$i]}这个就是普通的for循环,从C学到C++,再到Java或C#,⼀直都这么写,⼤家应该是⽐较熟悉的。
Powershall攻击教程PowerShell1、介绍powershell需要.NET环境的支持,同时支持.NET对象,其可读性易用性居所有shell之首。
1. 脚本可以在内存中执行,不需要写入磁盘。
2. 几乎不会触发杀毒软件3. 可以远程执行4. 目前很多工具都是基于powershell开发的5. 使很多windows脚本的执行变得更容易6. cmd.exe的运行通常会被阻止,但是power shell的运行通常不会被阻止7. 可用于管理活动目录输入Get-Host 或者$PSVersionTable.PSVERSION 查看powershell的版本PS C:\Users\DELL> Get-HostName : ConsoleHostVersion : 5.1.18362.1171InstanceId : a9795f0c-814a-4e0e-95ea-b29b3a2fbbfcUI : System.Management.Automation.Internal.Host.InternalHostUserInterface CurrentCulture : zh-CNCurrentUICulture : zh-CNPrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy DebuggerEnabled : TrueIsRunspacePushed : FalseRunspace : System.Management.Automation.Runspaces.LocalRunspacePS C:\Users\DELL> $PSVersionTable.PSVERSIONMajor Minor Build Revision-----------------------511836211712、基本概念1、.ps1文件一个powershell脚本其实是一个简单的文本文件,其扩展名为.ps1 。
powershell教程
PowerShell是一种用于自动化任务和管理计算机系统的命令行工具和脚本语言。
它是Windows操作系统中的默认命令行选项,提供了许多功能强大的命令和脚本来协助系统管理员进行日常任务。
PowerShell可以运行各种命令,包括系统管理命令、文件处理命令、网络命令、注册表命令等。
同时,它还支持脚本编写,可以编写包含复杂逻辑和任务序列的脚本来实现自动化操作。
以下是一些常用的PowerShell命令和用法:
1. 获取文件夹中的文件列表:
```
Get-ChildItem -Path C:\Folder
```
这个命令会列出指定路径下的所有文件和文件夹。
2. 复制文件或文件夹:
```
Copy-Item -Path C:\File.txt -Destination D:\Folder
```
这个命令会将指定路径下的文件复制到目标路径。
3. 删除文件或文件夹:
```
Remove-Item -Path C:\File.txt
```
这个命令会删除指定路径下的文件或文件夹。
4. 运行程序:
```
Start-Process -FilePath "C:\Program Files\Example\example.exe" ```
这个命令会运行指定路径下的程序。
5. 查找特定文件:
```
Get-ChildItem -Path C:\Folder -Filter *.txt -Recurse
```
这个命令会在指定路径下以及其子文件夹中查找扩展名为.txt 的文件。
6. 获取进程列表:
```
Get-Process
```
这个命令会列出当前计算机上运行的所有进程。
这些只是PowerShell的一小部分功能和命令。
要学习更多有关于PowerShell的知识,你可以查阅PowerShell的官方文档或参考一些在线教程。
掌握PowerShell不仅可以提高工作效率,还能使系统管理更加简便和自动化。