PowerShell服务管理与WMI操作指南

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}
© 版权声明

相关文章

暂无评论

none
暂无评论...