目前只作简单了解,开始吧。
一、初识Powershell
目标
初步认识 Powershell和其集成环境 Ise,学会基本设置
实验
我们从简单的例子开始:希望你能从控制台和ISE的配置中实现相同的结果。然后按照下面五步进行。
(1)选择适合你自己的字体和颜色。
(2)确保控制台应用程序下方没有水平滚动条。(本章中已经第三次提到,可见其重要性。)
(3)在ISE中,最大化控制台窗格,移除或最小化命令管理器。
(4)在所有应用程序中,输入一个单引号('
)和一个重音符(`),确保你可以轻易区分它们。在美式键盘中,重音符位于左上角,在“Esc”键下面,和波浪号(~
)位于同一个键中。
(5)同样输入括号(()),中括号([]),尖括号(<>)和花括号({}),确保你所选择的字体和大小能很好地展示这些符号,足以让你马上区别他们。否则,请选择其他字体或者加大字体大小。
本章并没有提供对应答案,你要做的只是自行收集资料并完成。
1.概念
PowerShell 和 ISE(Integrated Scripting Environment)都是微软开发的工具,用于Windows操作系统的自动化和脚本编写。以下是它们的简要说明:
1. PowerShell:
- 定义:PowerShell是一个任务自动化和配置管理框架,由微软开发,主要面向Windows系统。它包括一个命令行shell和脚本语言。
- 用途:用于自动化系统管理任务,包括配置管理、任务自动化、Web服务管理等。
- 特点:
- 强大的命令行界面,提供命令和参数来管理Windows系统。
- 脚本语言基于.NET框架,可以访问和操作.NET对象。
- 支持远程管理,可以通过PowerShell远程执行命令。
- 拥有庞大的社区和丰富的第三方模块。
2. ISE:
- 定义:ISE是微软提供的PowerShell的集成脚本环境,是一个图形界面工具,用于编写、测试和调试PowerShell脚本。
- 用途:提供一个用户友好的界面,使开发者能够更便捷地编写和运行PowerShell脚本。
- 特点:
- 提供多文档界面,可以同时打开和编辑多个脚本文件。
- 集成调试功能,可以设置断点、单步执行和查看变量值。
- 语法高亮和代码补全功能,提高代码编写效率。
- 可以运行PowerShell命令和脚本,查看命令输出和错误。
随着PowerShell的发展,微软后来推出了PowerShell ISE的替代品,即Visual Studio Code(VS Code)配合PowerShell扩展,提供了更加现代化和功能丰富的脚本开发环境。VS Code支持跨平台,并且拥有强大的插件系统,使得脚本开发更加灵活和高效。
2.实验结果
二、使用帮助系统
powershell 不区分大小写
$PSversiontable 查看版本
help Get-Content 查看帮助
Get-help 等同于 help (前者一次性输出)
help *event* 支持通配符
实验
1.运行Update-Help
并确保它执行无误。这会让你的本机下载一份帮助文档。条件是你的电脑能连上互联网,并且需要在更高特权下运行Shell(这意味着必须在PowerShell的标题中出现“管理员”的字眼)。
2.仅Windows:哪一个Cmdlet命令能够把其他Cmdlet命令输出的内容转换到HTML?
3.部分仅Windows:哪一个Cmdlet命令可以重定向输出到一个文件(file)或者到打印机(printer)?
4.哪一个Cmdlet命令可以操作进程(processes)?(提示:记住,所有Cmdlet命令都包含一个名词。)
5.你可以用哪一个Cmdlet命令向事件日志(log)写入(write)数据(该步骤仅在Windows系统有效,但你可以得到一个不同的答案)?
6.你必须知道别名是Cmdlet命令的昵称。哪一个Cmdlet可以用于创建、修改或者导入别名(aliases)?
7.怎么保证你在Shell中的输入都在一个脚本(transcript)中,怎么保存这个脚本到一个文本文件中?
8.仅Windows:从安全事件(event)日志检索所有的条目可能需要很长时间,你怎么只获取最近的100条记录呢?
9.仅Windows:是否有办法可以获取一个远程计算机上安装的服务(services)列表?
10.是否有办法可以看到一个远程计算机运行了什么进程(processes)(你可以在非Windows操作系统找到答案,但命令本身会有区别)?
11.尝试查看Out-File
这个Cmdlet命令的帮助文档。通过该Cmdlet命令输出到文件每一行记录的默认宽度大小为多少个字符?是否有一个参数可以让你修改这个宽度?
12.在默认情况下,Out-File
将覆盖任何已经存在具有相同的文件名。是否有一个参数可以预防Cmdlet命令覆盖现有的文件?
13.如何查看在PowerShell中预先定义所有别名(aliases)列表?
14.怎么使用别名和缩写的参数名称来写一条最短的命令,从而能检索出一台名称为Server1的计算机中正在运行的进程列表?
15.有多少Cmdlet命令可以处理普通对象?(提示:记得使用类似“object”的单数名词好过使用类似“objects”的复数名词。)
16.这一章简单提到了数组(arrays)。哪一个帮助主题可以告诉你关于数组的更多信息?
答案
tip: update-help 错误的原因可能是某些在线文档的地址错误,忽略即可
Update-Help -ErrorAction SilentlyContinue
1.Update-Help
或者同一天执行多次:
Update-Help –force
2.help html
或可以尝试使用Get-Command
get-command –noun html
3.get-command -noun file,printer
4.Get-command –noun process
或:
Help *Process
5.get-command -verb write -noun eventlog
如果不确定名词部分是什么,使用通配符。
help *log
6.help *alias
或:
get-command –noun alias
7.help transcript
8.help Get-Eventlog –parameter Newest
9.help Get-Service –parameter computername
10.help Get-Process –parameter computername
11.Help Out-File –full
或:
Help Out-File –parameter Width
应该展示给你PowerShell默认的控制台宽度是每行80个字符。
12.如果你运行Help Out-File –full
查看参数,你将会看到-NoClobber
13.Get-Alias
14.ps –c server1
15.get-command –noun object
16.help about_arrays
或者可以使用通配符:
help *array*
补充
Get-Command
帮助你找到命令,而Help
帮助你了解如何使用这些命令
先学会使用powershell的基本帮助命令即可,为了与渗透结合,建议先学习linux命令和shell,python。