table {
border-collapse: collapse;
width: 100%;
margin-bottom: 1rem;
}
th, td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
tr:nth-child(even) {
background-color: #f9f9f9;
}
pre {
background-color: #f8f8f8;
padding: 15px;
border-radius: 4px;
overflow-x: auto;
}
1、通过选择开始|运行|PowerShell打开Windows PowerShell。Windows PowerShell提示符默认在用户文件夹的根目录打开。在Windows PowerShell提示符下输入cd c:并回车,切换到C:的根目录。使用dir命令获取C:根目录下所有文件的列表。使用md命令在C:的根目录下创建一个名为mytest的目录。获取C:根目录下所有以字母m开头的文件和文件夹的列表。使用Set – Location命令将工作目录更改为Windows PowerShell工作目录。使用typeperf.exe命令获取与可用字节相关的内存计数器列表。在Windows PowerShell窗口中显示了几个计数器后,按Ctrl + C停止列表显示。使用bcdedit命令显示当前的启动配置(注意必须以管理员权限运行此命令)。将工作目录更改回之前创建的C:mytest目录。在C:mytest目录中创建一个名为mytestfile.txt的文件,并使用fsutil实用程序将文件大小设置为1000字节。使用Get – ChildItem cmdlet获取C:mytest目录中所有文件的目录列表。使用Get – Date cmdlet打印当前日期。使用cls命令清屏。打印Windows PowerShell中内置的所有cmdlet的列表。使用Get – Command cmdlet获取Get – Alias cmdlet。然后输入exit并回车退出Windows PowerShell。
Windows PowerShell 操作命令步骤
以下是按照要求执行操作的命令步骤:
打开Windows PowerShell
:通过开始菜单中的运行,输入
PowerShell
回车。
切换到C:根目录
:
powershell
cd c:
获取C:根目录下所有文件列表
:
powershell
dir
在C:根目录下创建目录
:
powershell
md mytest
获取C:根目录下以字母m开头的文件和文件夹列表
:
powershell
dir m*
切换到Windows PowerShell工作目录
:
powershell
Set-Location $pshome
获取与可用字节相关的内存计数器列表
:
powershell
typeperf "memoryavailable bytes"
停止列表显示
:按
Ctrl + C
。
显示当前启动配置(需管理员权限)
:
powershell
bcdedit
切换回C:mytest目录
:
powershell
Set-Location c:mytest
在C:mytest目录创建mytestfile.txt文件并设置大小为1000字节
:
powershell
fsutil file createnew mytestfile.txt 1000
获取C:mytest目录中所有文件的目录列表
:
powershell
Get-ChildItem
打印当前日期
:
powershell
Get-Date
清屏
:
powershell
cls
打印Windows PowerShell中内置的所有cmdlet的列表
:
powershell
Get-Command
获取Get-Alias cmdlet
:
powershell
Get-Command Get-Alias
退出Windows PowerShell
:
powershell
exit
2、通过选择“开始”|“运行”|“PowerShell”打开Windows PowerShell。使用Get – Help cmdlet获取关于Get – Help cmdlet的帮助。要获取关于Get – Help cmdlet的详细帮助,请使用 – Detailed开关参数。要检索关于Get – Help cmdlet的技术信息,请使用 – Full开关参数。如果你只想获取命令使用示例的列表,请使用 – Examples开关参数。使用Get – Help cmdlet和带有星号(*)通配符的about名词来获取所有信息性帮助主题的列表。获取所有与get cmdlet相关的帮助主题。获取所有与set cmdlet相关的帮助主题。然后输入exit并按Enter键退出Windows PowerShell。
打开Windows PowerShell:选择“开始”|“运行”,输入“PowerShell”并回车。
获取关于
Get-Help
cmdlet 的帮助:
powershell
Get-Help Get-Help
获取关于
Get-Help
cmdlet 的详细帮助:
powershell
Get-Help Get-Help -Detailed
检索关于
Get-Help
cmdlet 的技术信息:
powershell
Get-Help Get-Help -Full
获取命令使用示例的列表:
powershell
Get-Help Get-Help -Examples
获取所有信息性帮助主题的列表:
powershell
Get-Help about*
获取所有与
get
cmdlet 相关的帮助主题:
powershell
Get-Help get*
获取所有与
set
cmdlet 相关的帮助主题:
powershell
Get-Help set*
退出Windows PowerShell:
powershell
exit
3、打开Windows PowerShell控制台,使用Get – Alias cmdlet检索计算机上为Get – ChildItem定义的所有别名列表。请使用值为Get – ChildItem的 – Definition参数来显示Get – ChildItem的别名,并写出具体执行命令。
打开Windows PowerShell控制台后,在控制台中输入命令“gal –definition Get-ChildItem”,执行该命令后会显示Get-ChildItem的别名,结果可能如下:
CommandType Name Version
----------- ---- -------
Alias dir -> Get-ChildItem
Alias gci -> Get-ChildItem
Alias ls -> Get-ChildItem
4、使用Get – ChildItem cmdlet的gci别名,获取根目录中包含的文件和文件夹列表,应该在何处输入什么命令?
在Windows PowerShell提示符处输入gci,即可获取根目录中文件和文件夹的列表。
5、为了更快地识别大文件,将输出通过管道传递给 Where-Object cmdlet,并指定 -gt 比较运算符,值设为 1000 来评估长度属性。请写出对应的命令并说明该命令的作用。
对应的命令为
gci | Where length -gt 1000
。该命令的作用是筛选出文件长度大于 1000 的文件。
其中:
gci
是
Get-ChildItem
的别名,用于获取文件和文件夹信息。
通过管道
|
将结果传递给
Where-Object
(这里使用了简化写法
Where
)。
筛选出
length
属性大于
1000
的文件。
6、要清除 Windows PowerShell 窗口中杂乱的数据,请使用 cls 命令来清屏。
这句话表述正确,在 Windows PowerShell 中,使用
cls
命令可以清除当前屏幕上的内容。
7、使用Get – Alias cmdlet来解析mred别名所指向的cmdlet。命令为gal mred
在你的机器上可能未定义
mred
别名,执行此命令会得到以下错误信息:
gal : This command cannot find a matching alias because an alias with the name 'mred' does not exist.
(此命令找不到匹配的别名,因为名为 'mred' 的别名不存在。)
8、在Windows PowerShell中,如何清除当前屏幕上的内容?
在Windows PowerShell中,你可以直接输入
Clear - Host
命令来清除当前屏幕上的内容,让界面变得干净,以便输入新的命令和查看新的输出。输入
clear - host
也能实现同样的效果,因为PowerShell的命令不区分大小写。
9、使用Get – Member cmdlet从Get – ChildItem cmdlet中检索属性和方法列表。命令为:Get-ChildItem | Get-Member -membertype property
该命令用于获取
Get-ChildItem
cmdlet 返回对象的属性列表。运行此命令后,会输出对象的属性相关信息,包括属性名称、成员类型(这里是
Property
)和属性定义等内容。
10、确定一个可以与Where – Object cmdlet一起使用的属性,以查找文件被修改的日期。
LastWriteTime或LastWriteTimeUtc
11、请写出使用 Where – Object cmdlet 并包含 LastWriteTime 属性对 Get – ChildItem 命令获取的结果进行筛选的示例代码
Get-ChildItem | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-7) }
注:此示例筛选出最后写入时间在最近7天内的项,这里条件可按需修改
12、在Windows PowerShell控制台中,如何使用向上箭头键召回上一条命令,并指定 -gt 比较运算符,从之前的文件列表中选择一个最近的日期来确保查询会返回结果?示例命令:Get-ChildItem | Where LastWriteTime -gt “12/25/2014”
在Windows PowerShell控制台操作步骤如下:
按下向上箭头键,召回上一条命令;
在命令中指定
-gt
比较运算符;
从之前文件列表里选一个较近日期替换示例中的
"12/25/2014"
,以保证查询有结果,如命令可写成:
Get-ChildItem | Where LastWriteTime -gt "所选日期"
13、使用向上箭头键调出上一条命令。现在将 Get-ChildItem cmdlet 指向你硬盘上的特定文件夹,例如 C:fso 。你可以使用你机器上存在的任何文件夹。并筛选出该文件夹中最后写入时间晚于 2014 年 12 月 25 日的项目,给出命令示例。
操作描述
此操作描述了在 Windows PowerShell 中操作命令的步骤:
通过向上箭头键获取上一条命令。
将
Get-ChildItem
命令指定到特定文件夹(如
C:fso
)。
筛选出最后写入时间晚于 2014 年 12 月 25 日的项目。
命令示例
Get-ChildItem "C:fso" | Where LastWriteTime -gt "12/25/2014"
14、再次使用向上箭头键调出上一条命令。在Get – ChildItem cmdlet中添加 – Recurse开关参数。如果上一个文件夹不是嵌套的,那么你可以切换到不同的文件夹,例如深度嵌套的Windows文件夹。示例命令:Get – ChildItem – Recurse C:Windows | where lastwritetime -gt “12/12/14”。请描述具体操作及示例命令的作用。
再次使用向上箭头键调出上一条命令,在
Get-ChildItem
命令后添加
-Recurse
参数以递归遍历文件夹。若上一个指定的文件夹不是嵌套结构,可更换为 Windows 文件夹等嵌套文件夹。
示例命令为:
Get-ChildItem -Recurse C:Windows | Where-Object { $_.LastWriteTime -gt "12/12/14" }
该命令会递归遍历 C 盘 Windows 文件夹,并筛选出最后写入时间晚于 2014 年 12 月 12 日的文件。
15、打开 Windows PowerShell 控制台,使用 New – Object cmdlet 创建 wshNetwork 对象的实例。使用 -ComObject 参数,并为其提供 wshNetwork 对象的程序 ID,即 wscript.network,将结果存储在名为 $wshnetwork 的变量中。
打开 Windows PowerShell 控制台,然后执行以下命令创建 wshNetwork 对象实例并存储在变量中:
$wshnetwork = New-Object -comobject "wscript.network"
16、请使用$wshnetwork变量中包含的wshNetwork对象,通过其EnumPrinterConnections方法打印本地计算机上定义的打印机连接列表。
使用
$wshnetwork
变量中的
wshNetwork
对象,调用其
EnumPrinterConnections
方法可以打印本地计算机上已定义的打印机连接列表,具体命令为:
$wshnetwork.EnumPrinterConnections()
17、使用 wshNetwork 对象的 EnumNetworkDrives 方法打印本地计算机上定义的网络连接列表,写出具体操作步骤。
操作步骤
打开 Windows PowerShell 控制台,按以下步骤操作:
首先使用
New-Object
命令创建
wshNetwork
对象实例,并存储在
$wshnetwork
变量中,代码如下:
powershell
$wshnetwork = New-Object -ComObject "WScript.Network"
然后使用
$wshnetwork
变量调用
EnumNetworkDrives
方法,打印本地计算机上定义的网络连接列表,命令如下:
powershell
$wshnetwork.EnumNetworkDrives()
18、按两次向上箭头键调出 $wshnetwork.EnumPrinterConnections() 命令。使用 $colPrinters 变量来保存该命令返回的打印机集合,写出对应的代码。
使用
$colPrinters
变量来保存
$wshnetwork.EnumPrinterConnections()
命令返回的打印机集合,代码为:
$colPrinters = $wshnetwork.EnumPrinterConnections()
19、使用向上箭头键调出 $wshnetwork.EnumNetworkDrives() 命令。按 Home 键将插入点移到行首。修改该命令,使它将命令返回的驱动器集合存储在名为 $colDrives 的变量中。
使用向上箭头键调出
$wshnetwork.EnumNetworkDrives()
命令,按
Home
键将插入点移到行首,修改命令为:
$colDrives = $wshnetwork.EnumNetworkDrives()
这样就把命令返回的驱动器集合存储在了
$colDrives
变量中。
20、使用 $userName 变量来存储通过查询 wshNetwork 对象的 username 属性返回的名称,写出对应的代码。
使用
$userName
变量保存从
wshNetwork
对象的
UserName
属性查询得到的名称,代码为:
$userName = $wshnetwork.UserName
21、如何使用一个变量来存储通过查询 wshNetwork 对象的 UserDomain 属性所返回的名称,写出对应的代码。
使用
$userDomain
变量保存从
wshNetwork
对象的
UserDomain
属性查询返回的名称,代码为:
$userDomain = $wshnetwork.UserDomain
22、如何使用变量来存储通过查询 wshNetwork 对象的 ComputerName 属性所返回的名称?请写出相应代码。
该操作是将通过查询
wshNetwork
对象的
ComputerName
属性得到的计算机名称存储到
$computerName
变量中,代码为:
$computerName = $wshnetwork.ComputerName
23、使用New – Object cmdlet创建wshShell对象的实例。要求使用 – ComObject参数,并为其指定wshShell对象的程序ID,即wscript.shell。将创建的对象实例结果存储在名为$wshShell的变量中,请写出对应的代码。
使用
New-Object
命令创建
wshShell
对象实例,指定
-ComObject
参数,程序 ID 为
wscript.shell
,将结果存于
$wshShell
变量,代码为:
$wshShell = New-Object -ComObject "wscript.shell"
24、使用 wshShell 对象的 Popup 方法弹出一个显示域名、用户名和计算机名的对话框。代码为 $wshShell.Popup($userDomain+”$userName on $computerName”),请分析该代码是否正确并说明原因。
此代码存在错误。在许多编程语言里,变量前使用
$
符号通常是 PHP 语言的语法,但
wshShell
是 Windows Script Host(WSH)中使用的对象,WSH 主要使用 VBScript 或 JScript 来编写脚本,并非 PHP。在 VBScript 中,变量前不需要
$
符号,并且字符串拼接使用
&
符号;在 JScript 中,字符串拼接使用
+
符号。
正确的 VBScript 示例代码如下:
Set wshShell = CreateObject("WScript.Shell")
userDomain = "yourDomain"
userName = "yourUserName"
computerName = "yourComputerName"
wshShell.Popup userDomain & " " & userName & " on " & computerName
正确的 JScript 示例代码如下:
var wshShell = new ActiveXObject("WScript.Shell");
var userDomain = "yourDomain";
var userName = "yourUserName";
var computerName = "yourComputerName";
wshShell.Popup(userDomain + " " + userName + " on " + computerName);
25、使用wshShell对象的Popup方法弹出一个对话框,显示$colPrinters变量中保存的打印机集合。判断代码$wshShell.Popup($colPrinters)是否正确,若不正确说明原因。
代码
$wshShell.Popup($colPrinters)
在
$colPrinters
中只有一个打印机时可以正常显示,但如果
$colPrinters
中有多个打印机,会出现错误。
修复该错误需要:
添加循环遍历打印机集合
然后逐个显示或拼接显示
26、使用 wshShell 对象的 Popup 方法弹出一个对话框,显示 $colDrives 变量中保存的驱动器集合,写出相应代码。
$wshShell.Popup($colDrives)
27、打开 Windows PowerShell 控制台,通过将结果管道传输到 Get – Member cmdlet 来获取可用于 Get – ChildItem cmdlet 的所有属性列表。为了仅筛选出属性,将结果管道传输到 Where – Object cmdlet 并指定成员类型等于属性。(写出命令)
Get-ChildItem | Get-Member | Where-Object { $_.MemberType -eq 'Property' }
28、要确定计算机上是否安装了其他证书,请再次使用 Get – ChildItem cmdlet,但这次要指定 – recurse 参数。(写出命令)
Get-ChildItem -Recurse
29、打开 Windows PowerShell 控制台,使用 New – PSDrive cmdlet 创建一个到别名提供程序的驱动器映射。新的 PS 驱动器名称为 al,-PSProvider 参数为 alias,根目录为点号 (.)。(写出命令)
New-PSDrive -Name al -PSProvider alias -Root .
30、将工作位置更改为名为 al 的新 PS 驱动器。为此,请使用 Set – Location cmdlet 的别名 sl。(写出命令)
sl al:
31、使用Get – ChildItem cmdlet的别名gci,通过使用sort别名将结果对象传递到Sort – Object cmdlet中,并指定按name属性进行排序。(写出命令)
gci | sort -Property name
32、将位置更改回 C 盘。为此,请使用 sl 别名并提供 C: 参数。(写出命令)
sl c:
33、移除“al”的 PS 驱动器映射。为此,请使用 Remove – PSDrive cmdlet 并提供要移除的 PS 驱动器的名称。(写出命令)
Remove-PSDrive al
34、使用Get – Item cmdlet获取所有环境变量的列表。使用 – Path参数并将env:作为值。(写出命令)
Get-Item -Path env:
35、按两次向上箭头键回到 Get-Item -Path env: 命令。使用 Home 键将光标移到行首。添加一个名为 $objEnv 的变量,并用它来保存 Get-Item -Path env: 命令返回的对象。(写出该命令)
$objEnv = Get-Item -Path env:
36、从环境对象的成员列表中找到 count 属性。使用此属性打印出环境变量的总数。(写出命令)
$objEnv.Count
37、要检索环境变量的实际数量,请在方法末尾使用空括号。(写出命令)
$objEnv.Get_count()
38、如果你想确切知道 $objEnv 变量中包含的对象类型,请使用 GetType 方法(写出命令)。
$objEnv.GetType()
39、在使用 Windows PowerShell 远程操作练习中,按步骤完成以下操作:1. 以没有管理员权限的用户账户登录计算机;2. 打开 Windows PowerShell 控制台;3. 注意 Windows PowerShell 控制台提示;4. 使用变量 $cred 存储 Get – Credential cmdlet 的结果,指定管理员凭据存储在 $cred 变量中;5. 使用 Enter – PSSession cmdlet 打开远程 Windows PowerShell 控制台会话,使用 $cred 变量中存储的凭据,以 localhost 作为远程计算机的名称;6. 注意 Windows PowerShell 控制台提示的变化;7. 使用 whoami 命令验证当前上下文;8. 使用 exit 命令退出远程会话,使用 whoami 命令验证用户上下文是否改变;9. 使用 WMI 检索本地计算机的 BIOS 信息,使用 $cred 变量中存储的替代凭据;10. 将 WMI 命令放入 Invoke – Command 的 – ScriptBlock 参数中,指定本地计算机作为 – ComputerName 的值,并使用 $cred 变量中存储的凭据;11. 按向上箭头键检索上一个命令并删除凭据参数;12. 创建一个计算机名数组,存储在变量 $cn 中;13. 使用 Invoke – Command 同时在所有三台计算机上运行 WMI 命令。
手动以无管理员权限的用户账户登录计算机。
手动打开 Windows PowerShell 控制台。
手动注意控制台提示。
$cred = Get-Credential nwtradersadministrator
Enter-PSSession -ComputerName localhost -Credential $cred
手动注意控制台提示变化,如变为
[localhost]: PS C:UsersadministratorDocuments>
[localhost]: PS C:UsersadministratorDocuments> whoami
手动使用
exit
命令退出,再使用
whoami
命令验证。
gwmi -Class win32_bios -cn localhost -Credential $cred
Invoke-Command -cn localhost -script {gwmi -Class win32_bios} -cred $cred
手动按向上箭头键检索上一个命令并删除
-cred $cred
参数,变为
Invoke-Command -cn localhost -script {gwmi -Class win32_bios}
$cn = $env:COMPUTERNAME,"localhost","127.0.0.1"
Invoke-Command -cn $cn -script {gwmi -Class win32_bios} -cred $cred