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;
}
64、使用 Get – Service cmdlet 生成服务列表。根据服务的名称和状态对返回的对象进行排序。
Get-Service | sort status, name
65、使用 Get – Service cmdlet 返回包含服务信息的对象,使用 DisplayName 参数并指定
server
来检索显示名称中包含“server”一词的所有服务对象。请写出对应的命令。
Get – Service -DisplayName
server
66、使用带有 Name 参数的 Get-Service cmdlet 来检索表示 BITS 服务的对象。
Get-Service -Name BITS
67、将$a变量中包含的对象通过管道传递给Get – Member cmdlet。使用gm别名简化输入。
$a | gm
68、使用$a变量中包含的对象,获取Bits服务的状态。
$a.status
69、如果Bits服务停止运行,需要启动该服务。使用Start – Service cmdlet代替Stop – Service cmdlet,并且使用 – inputobject参数将$a变量中包含的对象提供给该cmdlet来启动服务。
Start – Service -InputObject $a
70、查询 $a 变量中对象的状态属性,以确认 Bits 服务的状态已更改。
$a.status
71、启动 Windows PowerShell 控制台。在 Windows PowerShell 提示符下,使用 Get-CimInstance cmdlet 获取所有服务及其关联状态的列表。使用 gcim 别名代替输入 Get-CimInstance。
启动 Windows PowerShell 控制台后,在提示符处输入命令:
gcim win32_service
72、使用Sort – Object cmdlet对服务列表进行排序。为Sort – Object cmdlet指定state属性。将Get – CimInstance cmdlet的结果通过管道传递给Sort – Object cmdlet。使用Sort – Object cmdlet的sort别名以减少输入量。
gcim win32_service | sort state
73、生成一个按显示名称排序的服务列表。使用 Select – Object cmdlet 来显示状态和显示名称属性。使用 gcim、sort 和 select 别名以减少输入量。
gcim win32_service | sort DisplayName | select state, DisplayName
74、如果 Bits 服务正在运行,停止它。使用 StopService 方法。使用 Invoke-CimMethod cmdlet。将 $a 变量中包含的对象作为 Input-Object 传递,并将 StopService 方法指定给 MethodName 参数。
Invoke-CimMethod -InputObject $a -MethodName StopService
75、查询 $a 变量中对象的 state 属性,以确认 Bits 服务的状态已更改。
使用代码
$a.state
来查询
$a
变量中对象的
state
属性,若未刷新
$a
变量中存储的对象,无论命令是否完成,都会报告原始状态。
要刷新
$a
变量中存储的数据,需再次运行 WMI 查询,代码为:
$a = gcim Win32_Service | ? name -eq 'bits'
然后再使用
$a.state
进行查询。
76、如果Bits服务已停止,请使用StartService方法将其重新启动。
Invoke-CimMethod -InputObject $a -MethodName StartService
77、打开 Windows PowerShell ISE 或你喜欢的脚本编辑器。使用变量 $Query 来保存一个 WMI 查询,该查询从 Win32_Product WMI 类中选择所有内容。使用 Write – Host cmdlet 告知用户脚本可能需要一段时间才能运行,并指定 -ForegroundColor 参数。使用 Get – CimInstance cmdlet,将 -Query 参数设置为 $Query 变量中的值。保存并运行名为
MSI_InstalledApplications.ps1 的脚本。
以下是具体步骤及代码示例:
打开 Windows PowerShell ISE 或你喜欢的脚本编辑器。
使用变量
$Query
保存 WMI 查询:
powershell
$Query = "Select * from Win32_Product"
使用
Write-Host
cmdlet 告知用户脚本运行时间并指定颜色:
powershell
Write-Host "Counting Installed Products. This may take a little while. " -ForegroundColor blue
使用
Get-CimInstance
cmdlet:
powershell
Get-CimInstance -Query $Query
保存脚本为
<yourname>MSI_InstalledApplications.ps1
并运行。
78、为之前的脚本添加一个计时器。在脚本中$Query行之上声明一个变量$dteStart,并将Get – Date的结果赋给它。在脚本末尾,声明一个变量$dteEnd,并将Get – Date的结果赋给它。然后声明一个变量$dteDiff,并将New – TimeSpan $dteStart $dteEnd的结果赋给它。使用Write – Host打印脚本运行所花费的总秒数。将脚本保存为
MSI_InstalledApplications_Timed.ps1并运行它。
在脚本第一行,
$Query
行之上添加代码:
$dteStart = Get-Date
在脚本末尾,最后一个
Get-CimInstance
命令之下添加代码:
$dteEnd = Get-Date
接着添加代码:
$dteDiff = New-TimeSpan $dteStart $dteEnd
再添加代码:
Write-Host "It took " $dteDiff.TotalSeconds " Seconds" " for this script to complete"
最后将脚本保存为
<yourname>MSI_InstalledApplications_Timed.ps1
并运行。
79、打开Windows PowerShell控制台。使用Get – CimInstance cmdlet(使用gcim别名)查看Win32_Environment WMI类的常用属性。
打开 Windows PowerShell 控制台后,输入以下命令来查看
Win32_Environment
WMI 类的常用属性:
gcim Win32_Environment
80、将Get – CimInstance cmdlet返回的对象通过管道传递给Format – List cmdlet,同时指定星号以查看Win32_Environment类的所有属性。
可以使用如下命令实现该需求:
Get-CimInstance Win32_Environment | Format-List *
81、滚动查看结果,检查属性,并修改上一个命令以使用Format – Table并显示Name、VariableValue和Username属性。
使用向上箭头键检索上一个
gcim
命令,将
Format - List
更改为
Format - Table
。在
Format - Table
cmdlet 之后,输入要检索的三个属性:
Name
、
VariableValue
和
Username
。命令如下:
gcim Win32_Environment | Format - Table name, variableValue, username
82、将 -AutoSize 参数添加到上一个 Format – Table 命令中以修正间距。已知一个 Format – Table 命令为:Get – CimClass
video
-QualifierName dynamic | ft cimclassname, cimclassqualifiers ,请给出添加 -AutoSize 参数后的命令。
下面是给定的【文本内容】:
原命令:
PS C:> Get -CimClass *video* -QualifierName dynamic | ft cimclassname, cimclassqualifiers
添加 -AutoSize 参数后的命令:
PS C:> Get -CimClass *video* -QualifierName dynamic | ft cimclassname, cimclassqualifiers -autosize
83、使用Set – Location cmdlet(可用别名sl)将位置设置到Env:驱动器,然后使用Get – ChildItem cmdlet(可用别名gci)列出计算机上的所有环境变量。
可使用以下命令:
Set-Location env:
(或
sl env:
)
Get-ChildItem
(或
gci
)
84、使用Set – Location cmdlet(使用sl别名)将位置设置回C盘。
可以使用以下两种命令:Set – Location c: 或 sl c:
85、使用Get – Alias cmdlet,将Get – History作为 – Definition参数的值,来获取Get – History cmdlet的别名。
使用命令
Get-Alias -Definition Get-History
,结果显示有三个别名定义给
Get-History
,分别是
ghy
、
h
和
history
。
86、将上一个Get – Alias命令中的定义更改为Invoke – History。
使用向上箭头键调出上一个
Get-Alias
命令,把定义从
Get-History
改成
Invoke-History
,即:
Get-Alias -Definition Invoke-History
87、使用 Get – History cmdlet(使用别名 ghy)来检索所有输入到 Windows PowerShell 中的命令列表。
使用命令 ghy 来获取所有输入到 Windows PowerShell 中的命令列表。
88、使用Set – Location和Get – ChildItem(使用sl和gci别名),通过单个命令使用Env:驱动器生成环境变量列表。
sl env:; gci
89、使用Set – Location cmdlet(使用sl别名)将位置更改回C PS驱动器。
可以使用命令Set – Location c: 或 sl c: 来将位置更改回C PS驱动器。
90、在之前的 sl env:;gci 命令后添加另一个分号和一个 sl 命令,以切换回 C 盘驱动器。
修改后的命令是 sl env:;gci;sl c:
91、使用 ghy 别名检索命令历史记录,并找出包含之前使用 Format – Table 且带有 -AutoSize 参数的 gcim 命令的行。
包含之前使用
Format - Table
且带有
-AutoSize
参数的
gcim
命令的行是第 5 行,命令为:
gcim win32_environment | Format - Table name, variableValue -AutoSize
92、打开 Windows PowerShell 控制台。
在低版本系统安装 Windows PowerShell 后可立即使用,可按键盘上的 Windows 徽标键和 R 键调出运行对话框,输入“PowerShell”回车打开;
在 Windows 10 系统中,可在开始屏幕输入“PowerShell”打开;
也可通过将其固定到开始屏幕和任务栏,点击图标打开;
在运行 Server Core 的 Windows Server 2012 R2 中,可将 CMD 提示符替换为 Windows PowerShell 控制台后打开。
还可使用名为
PinToStart.ps1
的脚本将其添加到开始屏幕和任务栏以便打开,该脚本在不同系统有不同效果,但仅适用于美国英语语言操作系统。
93、使用 Get – CimInstance cmdlet 从启用了 WMI 远程处理的远程系统检索进程信息。不提供替代凭据。命令如下:Get – CimInstance – CimSession C10 – ClassName win32_process。请解释该命令的作用。
该命令用于从名为
C10
的远程系统中获取
Win32_Process
类的进程信息,且不使用替代凭据。
94、使用$session变量中存储的CIM会话从远程系统检索进程信息,请写出对应的PowerShell命令。
该命令用于通过指定的 CIM 会话(存储在
$session
变量中)从远程系统获取
Win32_Process
类的进程信息。
在 PowerShell 中执行此命令时,确保
$session
变量已正确存储有效的 CIM 会话。运行命令后会返回远程系统上的进程相关信息。
95、使用$session变量中存储的CIM会话,检索远程系统上所有服务的名称和状态。按状态对输出进行排序,并以表格形式显示名称和状态。命令如下:Get – CimInstance – CimSession $session – ClassName win32_service – Property name, state | sort state | ft name, state – AutoSize
该命令用于从远程系统获取服务信息。首先通过
Get-CimInstance
命令,利用
$session
变量中的 CIM 会话,从
win32_service
类获取服务的名称和状态属性。接着使用
sort state
对获取的服务信息按状态进行排序。最后使用
ft name, state -AutoSize
将排序后的结果以表格形式显示,表格包含名称和状态两列,并且会自动调整列宽以适应内容。
96、使用Get – WmiObject cmdlet在远程系统上运行WMI命令,以获取远程系统的BIOS信息。使用Win32_BIOS WMI类,同时为连接指定适当的凭据。请给出示例代码并说明步骤。
示例代码如下:
$credential = Get-Credential NWTradersadministrator
Get-WmiObject -Class win32_bios -ComputerName C10 -Credential $credential
步骤如下:
使用
Get-Credential
命令获取凭据对象,指定域和用户名(这里是
NWTradersadministrator
),并将其存储在
$credential
变量中。
使用
Get-WmiObject
命令,指定 WMI 类为
win32_bios
,目标远程计算机名为
C10
,并使用之前获取的凭据对象
$credential
进行身份验证,从而在远程系统上运行 WMI 命令获取 BIOS 信息。
97、使用Invoke – Command cmdlet通过Windows PowerShell远程处理功能,针对远程系统运行WMI命令。使用之前存储的凭据。使用Get – CimInstance cmdlet从WMI中检索BIOS信息。命令如下所示:Invoke – Command – ComputerName C10 – ScriptBlock {Get – CimInstance win32_bios} – Credential $credential。请解释该命令的作用。
此命令用于通过 Windows PowerShell 远程执行功能,在名为
C10
的远程系统上运行 WMI 命令以获取 BIOS 信息。其中,
$credential
变量存储了用于连接远程系统的凭据。
98、使用Get – WmiObject cmdlet从名为C10的远程系统检索BIOS信息,使用 – AsJob开关参数将该命令作为作业运行,使用已存储在$credential变量中的凭据,写出对应的命令。
此操作是在 Windows PowerShell 中,利用已存储的凭据,以作业形式从名为 C10 的远程系统获取 BIOS 信息。具体执行命令为:
Get-WmiObject win32_bios -ComputerName C10 -Credential $credential -AsJob
99、使用 Get – Job cmdlet 检查作业的成功或失败情况,需结合上一条命令中返回的作业 ID。请给出一个使用该 cmdlet 检查作业状态的示例。
该步骤指导你通过
Get-Job
cmdlet 与特定作业 ID 结合,来检查作业执行的成功与否。示例中使用的作业 ID 为
10
,在实际操作时需使用上一条命令所返回的作业 ID。
100、当作业成功完成时,应该使用什么 cmdlet 接收作业结果,并且是否需要将结果存储在变量中或保留结果?
使用 Receive – Job cmdlet 接收作业结果,不必将结果存储在变量中或保留结果。
101、使用Invoke – Command cmdlet让Get – WmiObject cmdlet从远程系统检索BIOS信息。使用存储在$psSession变量中的会话信息。确保在命令中使用 – AsJob开关参数,写出对应的命令。
使用
Invoke-Command
cmdlet 结合存储在
$psSession
变量中的会话信息,通过执行命令:
Invoke-Command -Session $PSSession -ScriptBlock { gwmi win32_bios } -AsJob
可让
Get-WmiObject
cmdlet 以作业形式从远程系统检索 BIOS 信息。
102、使用上一个命令返回的作业 ID 来使用 Get – Job cmdlet 检查作业的状态,请写出示例命令。
使用上一个命令返回的作业 ID,运行类似
Get-Job -id [作业 ID]
的命令来检查作业状态,这里示例的作业 ID 是
12
。
103、使用 PowerShell 的 Receive – Job cmdlet 检索 WMI 命令的结果,并将返回的信息存储在名为 $bios 的变量中。注意要使用你系统中实际的作业 ID 号。
此步骤指导你使用 PowerShell 的
Receive-Job
命令来获取之前 WMI 作业的执行结果,并将结果存储在名为
$bios
的变量里。你需要把命令中的作业 ID 替换为你实际系统中对应作业的 ID 号。
104、使用Invoke – WmiMethod cmdlet结合SDDLToWin32SD方法进行转换,命令为:Invoke – WmiMethod -Class Win32_SecurityDescriptorHelper -Name SDDLToWin32SD -ArgumentList $acl.Sddl ,请简述该命令的作用。
该命令用于调用
Win32_SecurityDescriptorHelper
类的
SDDLToWin32SD
方法,并将
$acl.Sddl
作为参数传入以执行转换操作。
105、请描述在 Windows 系统中创建、验证、筛选、删除共享文件夹并再次验证删除结果的操作步骤及对应命令。步骤如下:1. 以在本地计算机上具有管理员权限的用户身份打开 Windows PowerShell 控制台。2. 在根目录下创建一个名为 testshare 的测试文件夹。3. 创建 Win32_Share 管理类对象,并将其存储在名为 $share 的变量中。4. 从存储在 $share 变量中的 Win32_Share 对象调用静态创建方法来创建共享,仅需提供路径、名称、类型三个参数,类型参数的值为 0,表示磁盘驱动器共享。5. 验证共享是否已正确创建。6. 添加一个过滤器,使相关 cmdlet 仅返回新创建的共享。7. 删除新创建的共享。8. 验证共享是否已正确删除。
以本地计算机管理员权限用户身份,右键点击 Windows PowerShell 控制台快捷方式,选“以管理员身份运行”打开控制台。
执行命令
MD c: estshare
在根目录创建名为
testshare
的测试文件夹。
执行代码
$share = [wmiclass]"win32_share"
创建 Win32_Share 管理类对象并存储于
$share
变量。
执行命令
$share.Create("C: estshare","testshare",0)
调用静态创建方法创建共享,仅需提供路径、名称、类型(值为 0 代表磁盘驱动器共享)三个参数。
执行命令
gwmi win32_share
验证共享是否正确创建。
执行命令
gwmi win32_share -Filter "name = 'testshare'"
使 cmdlet 仅返回新创建的共享。
执行命令
gwmi win32_share -Filter "name = 'testshare'" | Remove-WmiObject
删除新创建的共享。
执行命令
gwmi win32_share
验证共享是否正确删除。
106、将 $FormatEnumerationLimit 的值从原来的 4 更改为 8,这样可以查看截断的输出,且可使用制表符补全来避免输入整个变量名。
使用命令 $FormatEnumerationLimit = 8 来更改该值。
107、现在使用向上箭头键调出上一条Get – CimClass命令。在表格中添加 -AutoSize 参数。
命令为:
PS C:> Get-CimClass *video* -QualifierName dynamic | ft cimclassname, cimclassqualifiers -autosize
执行后输出如下:
CimClassName CimClassQualifiers
------------ ------------------
Win32_VideoController {Locale, UUID, dynamic, provider}
CIM_VideoControllerResolution {Locale, UUID, dynamic, provider}
Win32_VideoSettings {Association, Locale, UUID, dynamic, provider}