Windows PowerShell 实战指南-附录(复习实验)-实验回顾1

时间:2021-03-23 05:55:15

任务1:

运行一个命令,从而显示应用程序事件日志中最新的100个条目,不要使用Get-WinEvent。

解答:

get-eventlog -computername localhost -logname Application -newest 100

任务2:

写一个仅显示前五个最消耗虚拟内存(VM)进程的命令。

解答:

Get-Process | Sort-Object vm -Descending | Select-Object -First 5

任务3:

创建一个包含所有的服务CSV文件,只需要列出服务名称和状态。所有处于运行状态的服务处与停止状态的服务之前。

解答:

这个是我想的一个方法:

Get-Service | Sort-Object -Property status -Descending | Format-Table name,status -AutoSize

以下为网上找的一个方法:

get-service |sort-object -property @{Expression=”Status”;Descending=true},@{Expression="Name";Descending=false} |format-table name, status –autosize

任务4:
写一个命令,将BITS服务的启动项类型变更为手动。
解答:
Set-Service bits -StartupType Manual //此命令是直接把bits服务的启动类型改为手动,但是我想要的是能够查询到他的启动类型后再进行切换

任务5:
显示你计算机中所有文件名为Win*.*的文件,以c:\开始。
解答:
Get-ChildItem -Recurse -path c:\ -Include “win*.*” | Select-Object -First 10
这个问题的关键在于 -recurse 这个参数,这是一个遍历的选项,我后边加的 select-object 是为了限制显示数量。

任务:6:
获取一个c:\Program Files的目录列表。包含所有的子文件,把这些目录列表放到位于c:\Dir.txt的文本文件内(记住去使用 the > redirector,或者 Out-FileCmdlet)
解答:
ls -Recurse -Path ‘C:\Program Files’ | select FullName -First 10 | Out-File c:\dir2.txt
在网上查到的 select fullname 这个参数。

任务7:
获取最近20条安全事件日志的列表,将这些信息转换成xml格式。不要在硬盘上创建文件,而是把xml在控制台窗口直接显示出来。
解答:
Get-EventLog -LogName Security | Select-Object -First 20 | ConvertTo-Xml | Format-Custom
ConvertTo-Xml 把查询到的结果以xml形式呈现,Format-Custom是为了更好的显示

任务8:
获取一个服务列表,并将其导出到以c:\services.csv命名的CSV文件内。
解答:
Get-Service | Export-Csv -Path c:\services2.csv

任务9:
获取一个服务列表,仅保留服务名称、显示名称和状态,然后将这些信息发送到一个HTML文件。在HTML文件中的服务信息表格之前显示“Installed Services”
解答:
Get-Service | ConvertTo-Html | Out-File service.html
以上命令实现了“获取一个服务列表,仅保留服务名称、显示名称和状态,然后将这些信息发送到一个HTML文件”,最后要求的显示“Installed Services”,不知道怎么实现,目前只知道out-file 有一个-append 的属性,是把指定内容追加到文件末尾。

任务10:
为get-childItem创建一个新的别名D。仅将别名导出到一个文件里,关闭这个shell,然后打开一个新的控制窗口,把别名导入到新的shell中。确认能够通过运行D并且获得一个目录列表。
解答:
Set-Alias -name d -Value Get-ChildItem ; Export-Alias -Path d2.csv

任务11:
显示系统中存在的事件日志列表。
解答:
Get-EventLog -List

此命令是从:help remove-eventlog -full 里查看到的
————————– 示例 4 ———————–>—
PS C:>get-eventlog -list
Max(K) Retain OverflowAction Entries Log


15,168 0 OverwriteAsNeeded 22,923 Application
15,168 0 OverwriteAsNeeded 53 DFS Replication
15,168 7 OverwriteOlder 0 Hardware Events
512 7 OverwriteOlder 0 Internet Explorer
20,480 0 OverwriteAsNeeded 0 Key Management Service
30,016 0 OverwriteAsNeeded 50,060 Security
15,168 0 OverwriteAsNeeded 27,592 System
15,360 0 OverwriteAsNeeded 18,355 Windows PowerShell
15,168 7 OverwriteAsNeeded 12 ZapLog
PS C:>remove-eventlog -logname ZapLog
PS C:>get-eventlog -list
Max(K) Retain OverflowAction Entries Log


15,168 0 OverwriteAsNeeded 22,923 Application
15,168 0 OverwriteAsNeeded 53 DFS Replication
15,168 7 OverwriteOlder 0 Hardware Events
512 7 OverwriteOlder 0 Internet Explorer
20,480 0 OverwriteAsNeeded 0 Key Management Service
30,016 0 OverwriteAsNeeded 50,060 Security
15,168 0 OverwriteAsNeeded 27,592 System
15,360 0 OverwriteAsNeeded 18,355 Windows PowerShell

这些命令说明如何列出计算机上的事件日志并验证 Remove-EventLog 命令是否成功。

第一个命令列出本地计算机上的事件日志。

第二个命令删除 ZapLog 事件日志。

第三个命令重新列出事件日志。ZapLog 事件日志将不再显示在列表中。

任务12:
运行一个命令来展示shell所在的当前目录。
解答:
不会!! 不知道pwd 的结果是不是。

任务13:
运行一个命令,展示最近你在shell中运行过的命令。从中查找到你在任务11中所运行的命令。将这两个命令通过管道传输符进行连接,重新运行任务11的命令。
换句话说,假如Get-Something是一个获取历史命令的命令,5是任务11的命令ID号,并且Do-Something试运行历史命令的命令,运行如下。
Get-Something -id 5 | Do-something
解答:
Get-History -Id 15 | Invoke-History

任务14:
运行命令修改安全时间日志,使得在需要时可以通过覆盖就日志的方式新增日志。
解答:
Write-EventLog -Message “test” -logname Application -source MyAp -EventId 12313

任务15:

通过使用New-Item Cmdlet来创建以名称为C:\Review的心目。这域运行Mkdir时不一样的;New-Item命令需要知道你所想要创建的新项目是什么类型。

解答:
New-Item -Path c:\ -name Review -ItemType directory
任务16:
显示该注册码内容:
HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
解答:
不知道怎么实现,不过应该是使用Get-ItemProperty这个Cmdlet

任务17:
找出(但不要运行)命令能做如下事情的:

  • 重启电脑
  • 关闭电脑
  • 从一个工作组或者域已出一个电脑
  • 恢复一个电脑系统,并重建检查点

解答:

  • Restart-Computer
  • Stop-Computer
  • Remove-Computer
  • Restore-Computer Checkpoint-Computer

任务18:

你认为什么能够改变一个注册表值?提示:他是一个和你在任务16中发现的命名相同的名词。

解答:

Set-ItemProperty
Set-ItemProperty cmdlet 更改指定项的属性值。可以使用该 cmdlet 设定或更改项的属性。例如,可以使用 Set-ItemProperty 将
文件对象的 IsReadOnly 属性值设置为 true。
也可以使用 Set-ItemProperty 创建和更改注册表值及数据。例如,可以向注册表项中添加新的注册表条目以及设定或更改该条目的
值。

更多资料请点击:获取资料