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、简述在Windows PowerShell中获取帮助的操作步骤。
# 在 Windows PowerShell 中获取帮助的操作步骤
1. **启动 PowerShell**
通过“开始 | 运行 | Windows PowerShell”启动,PowerShell 提示符默认将在“我的文档和设置”的根目录打开。
2. **获取 Get-Help cmdlet 的帮助**
- 使用 `Get-Help` cmdlet 获取关于 `Get-Help` cmdlet 的帮助:
```
get-help get-help
```
- 要获取详细帮助:
```
get-help get-help -detailed
```
- 要检索技术信息:
```
get-help get-help -full
```
- 若只想获取命令使用示例列表:
```
get-help get-help -examples
```
3. **获取信息性帮助主题列表**
使用 `Get-Help` cmdlet 和带有星号(*)通配符的 `about` 名词:
```
get-help about*
```
4. **获取特定 cmdlet 相关的帮助主题列表**
- 获取所有与 `get` cmdlet 相关的帮助主题列表:
```
get-help get*
```
- 获取所有与 `set` cmdlet 相关的帮助主题列表:
```
get-help set*
```
5. **退出 PowerShell**
通过输入 `exit` 并按回车键退出。
2、通过“开始 | 运行 | Windows PowerShell”启动 Windows PowerShell。PowerShell 提示符默认将在“Documents And Settings”的根目录打开,这种说法是否正确?
这种说法错误。在 Windows 系统中,使用“开始 | 运行 | Windows PowerShell”启动 Windows PowerShell 后,PowerShell 提示符默认打开的位置通常是当前用户的文档文件夹(如
C:Users用户名Documents
),而不是“Documents And Settings”的根目录。
“Documents And Settings”是 Windows XP 及更早版本中用于存储用户配置文件的目录,在 Windows Vista 及更高版本中已被“Users”目录所取代。
3、使用Get – Alias cmdlet检索计算机上定义的所有别名列表,并将此输出通过管道传递给Where – Object cmdlet,筛选出definition属性与Get – ChildItem cmdlet名称匹配的别名,写出对应的代码。
使用
Get-Alias
命令获取计算机上所有别名列表,再通过管道将结果传递给
Where-Object
命令,筛选出
definition
属性与
Get-ChildItem
命令匹配的别名。
示例代码为:
gal | Where-Object { $_.definition -match "get-childitem" }
4、使用Get – ChildItem cmdlet的别名gci,获取根目录中包含的文件和文件夹列表。示例如下:gci
使用命令gci可获取根目录中包含的文件和文件夹列表。
5、为了更快地识别大文件,如何利用管道和 Where – Object cmdlet 来筛选出长度大于 1000 的文件?请给出示例命令。
为了更快速地识别大文件,可将输出通过管道输送到
Where-Object
命令,指定大于(
-gt
)参数值为 1000 来评估文件长度属性,命令示例为:
gci | Where-Object { $_.Length -gt 1000 }
6、在 Windows PowerShell 中,要清除当前窗口中的杂乱数据应该使用什么命令?
在 Windows PowerShell 中,使用 cls 命令可以清除当前窗口的内容。
7、使用Get – Alias cmdlet来解析mred别名所指向的cmdlet。示例如下:gal mred
使用命令
gal mred
可解析
mred
别名所指向的 cmdlet。不过在大多数情况下,机器上可能未定义
mred
别名,此时会显示错误信息:
Get - Alias : Cannot find alias because alias 'mred' does not exist.
8、在相关操作环境中,如何实现清屏,示例是什么?
使用 Clear – Host 命令来清屏,示例如下:clear – host
9、如何使用Get – Member cmdlet从Get – ChildItem cmdlet检索属性和方法列表,请给出示例。
在Windows PowerShell中,可按以下步骤操作来获取属性列表:
在PowerShell提示符下,输入
get-childitem
命令,后面跟上文件夹路径。
通过管道符将其输出传递给
Get-Member
cmdlet。
使用
-membertype
参数指定值为
property
。
示例命令:
get-childitem C: | get-member -membertype property
若要获取方法列表,可使用:
get-childitem | get-member -membertype method
另外,也可以使用别名操作,例如:
gci | gm
10、检查输出结果,确定一个可以与 Where – Object cmdlet 一起使用的属性,以查找文件的修改日期。
LastWriteTime
11、请解释命令“get – childitem | where – object {$_.LastWriteTime}”的作用。
该命令用于筛选出具有
LastWriteTime
属性值的对象。它会获取当前目录下的所有项目(使用
Get-ChildItem
),然后使用
Where-Object
筛选出那些
LastWriteTime
属性有值的项目。
12、使用向上箭头调出上一条命令。现在将 Get-ChildItem cmdlet 指向你硬盘上的特定文件夹,例如 C:fso。此命令如下所示:get-childitem “C:fso”| where-object {$_.LastWriteTime -gt “12/25/2006”}。请说明如何操作。
使用向上箭头调出上一条命令后,可使用命令
get-childitem "C:fso" | where-object {$_.LastWriteTime -gt "12/25/2006"}
来将
Get-ChildItem
cmdlet 指向
C:fso
文件夹,也可将
C:fso
替换为机器上存在的其他文件夹路径。
13、再次使用向上箭头调出上一条命令,在Get – ChildItem cmdlet中添加recurse参数。若之前使用的文件夹没有嵌套,可更换为其他文件夹,如Windows文件夹。请给出一个使用该命令且包含筛选条件的示例。
再次使用向上箭头调出上一条命令,在
Get-ChildItem
命令后添加
-Recurse
参数。若之前文件夹无嵌套,可更换为其他文件夹,如 Windows 文件夹。
示例命令为:
Get-ChildItem -Recurse "d:vbsworkshop" | Where-Object { $_.LastWriteTime -gt "12/25/2006" }
该命令用于递归获取指定文件夹中最后写入时间晚于 2006 年 12 月 25 日的项目。
14、使用New – Object cmdlet创建wshNetwork对象的实例。使用comobject参数,并为其指定wshNetwork对象的程序ID,即“wscript.network”。将结果存储在名为$wshnetwork的变量中,写出对应的代码。
使用
New-Object
cmdlet 创建
WshNetwork
对象实例,指定
comobject
参数和程序 ID
"wscript.network"
,并将结果存于
$wshnetwork
变量,代码为:
$wshnetwork = New-Object -ComObject "wscript.network"
15、使用wshNetwork对象的EnumPrinterConnections方法打印出本地计算机上定义的打印机连接列表。已知$wshnetwork变量中包含了wshNetwork对象,写出对应的命令。
对应的命令是$wshnetwork.EnumPrinterConnections()
16、使用wshNetwork对象的EnumNetworkDrives方法打印出本地计算机上定义的网络连接列表。假设已将wshNetwork对象存储在$wshnetwork变量中,写出实现此操作的命令。
$wshnetwork.EnumNetworkDrives()
17、使用向上箭头两次,调出 $wshnetwork.EnumPrinterConnections() 命令。使用 $colPrinters 变量来保存该命令返回的打印机集合,请写出对应的代码。
使用
$colPrinters
变量保存
$wshnetwork.EnumPrinterConnections()
命令返回的打印机集合,代码为:
$colPrinters = $wshnetwork.EnumPrinterConnections()
18、启动Windows PowerShell。
使用“开始”|“运行”,输入“PowerShell”来启动 Windows PowerShell;或者使用“开始”|“运行”,输入“Windows PowerShell”来启动,PowerShell 提示符默认会在“Documents And Settings”的根目录打开。
19、使用Set – Location cmdlet切换到证书驱动器。
Set-Location cert:
20、要确定机器上是否安装了其他证书,如何使用 PowerShell 命令进行操作,并且利用向上箭头修改上一条命令?
要确定机器上是否安装了其他证书,可再次使用
Get-ChildItem
cmdlet 并指定
recurse
参数。使用向上箭头键调用上一条命令并添加
-recurse
参数,命令为:
Get-ChildItem -recurse
可简写成:
GCI -recurse
21、为了使列表更易于阅读,将输出通过管道传输到一个文本文件,然后在记事本中打开该文件。
在Windows PowerShell中,可以使用如下命令将输出传输到文本文件:
get-childitem C: | Out-File -FilePath C:output.txt
然后通过在命令行输入以下命令来用记事本打开该文件:
notepad C:output.txt
22、使用 New-PSDrive cmdlet 创建一个到别名提供程序的驱动器映射。新的 PSDrive 名称将为 al。PS 提供程序为 alias,根目录为点 (.)。
new-PSDrive -name al -PSProvider alias -Root .
23、将当前工作位置更改为名为 al 的新 PSDrive。为此,请使用 Set-Location cmdlet 的别名 sl。
SL al:
24、使用Get – ChildItem cmdlet的别名gci,并通过使用sort别名将结果对象管道传输到Sort – Object cmdlet。指定按name属性进行排序。
gci | sort -Property name
25、按照步骤在C:Mytest目录创建10个文件夹,具体步骤如下:1. 打开记事本或你喜欢的Windows PowerShell脚本编辑器;2. 创建一个名为$intFolders的变量并赋值为10;3. 创建一个名为$intPad的变量;4. 创建一个名为$i的变量并赋值为1;5. 使用New – Variable cmdlet创建一个名为strPrefix的常量并赋值为”testFolder”;6. 打开do … until语句;7. 开始一个if … else语句,条件为变量$i是否小于10;8. 打开if语句的脚本块,将变量$intPad赋值为0;9. 使用New – Item cmdlet在C:Mytest目录创建新文件夹,文件夹名称由$strPrefix常量、$intPad变量中的0和$i变量中的数字组成;10. 添加else子句;11. 编写else脚本块,除了名称中不包含来自$intPad变量的0,其余与if脚本块相同;12. 将$i变量的值加1;13. 关闭else子句的脚本块并添加until语句,条件为$i变量是否等于$intFolders变量的值加1;14. 将脚本保存为yournameCreateMultipleFolders.ps1并运行。
以下是按照步骤编写的 PowerShell 脚本:
$intFolders = 10
$intPad
$i = 1
New-Variable -Name strPrefix -Value "testFolder" -Option constant
do {
if ($i -lt 10) {
$intPad = 0
New-Item -Path c:mytest -Name ($strPrefix + $intPad + $i) -Type directory
} else {
New-Item -Path c:mytest -Name ($strPrefix + $i) -Type directory
}
$i++
} until ($i -eq $intFolders + 1)
将上述脚本保存为
yournameCreateMultipleFolders.ps1
并运行,即可在
C:Mytest
目录创建 10 个文件夹。
26、在Windows PowerShell提示符下,使用Get – Service cmdlet获取所有服务及其关联状态的列表,执行此操作的命令是什么?
在 Windows PowerShell 中,使用
Get-Service
命令可以获取所有服务及其关联状态的列表。
27、使用Sort – Object cmdlet对服务列表进行排序。为Sort – Object指定状态属性。为此,将Get – Service cmdlet的结果通过管道传递给Sort – Object cmdlet。使用Sort – Object cmdlet的sort别名以减少输入量。
Get – Service | sort -property status
28、使用Get – Service cmdlet生成服务列表。按名称对生成的服务列表进行字母排序。为此,使用Sort – Object cmdlet按名称属性对服务列表进行排序。将Get – Service cmdlet返回的对象通过管道传递给Sort – Object cmdlet。
使用
Sort-Object
别名
sort
的命令为:
Get-Service | sort -property name
29、使用Get – Service cmdlet生成服务列表。根据服务的名称和状态对返回的对象进行排序。
Get – Service | sort status, name
30、使用Get – Service cmdlet返回一个包含服务信息的对象。将结果对象通过管道传递给Where – Object cmdlet,筛选出显示名称中包含“server”这个词的服务对象。
Get-Service | Where-Object { $_.DisplayName -match "server" }
31、使用 Get-Service cmdlet 检索服务对象列表。将结果对象通过管道传递给 Where-Object。使用等于参数返回一个表示 Alerter 服务的对象。
Get-Service | where {$_.name -eq “alerter”}
32、使用向上箭头调出之前检索警报器服务的命令。将结果对象存储在名为 $a 的变量中。
$a=Get-Service | where {$_.name -eq “alerter”}
33、将 $a 变量中包含的对象输送到 Get – Member cmdlet。你可以使用 gm 别名来简化输入。
$a | gm
34、使用$a变量中包含的对象,获取警报器服务的状态。
$a.status
35、如果警报器服务正在运行,则停止它。为此,请使用 Stop – Service cmdlet。不要将 $a 变量中的对象通过管道传递,而是使用 Stop – Service cmdlet 的 -inputobject 参数。
停止正在运行的警报器服务的代码为:Stop – Service -InputObject $a
36、如果警报器服务已停止,需要启动该服务,此时应使用 Start – Service cmdlet 而非 Stop – Service cmdlet。现在要使用 – inputobject 参数将 $a 变量中包含的对象提供给该 cmdlet 来启动服务,写出对应的命令。
Start – Service – InputObject $a
37、查询 $a 变量中对象的状态属性,以确认警报器服务的状态是否发生了变化。
$a.status
38、如何打开记事本程序(Notepad.exe)?
在 Windows PowerShell 中,可通过输入
notepad
并按回车键来启动记事本程序(Notepad.exe)。
39、打开名为WmiTemplate.ps1的文件,并将其另存为your – nameWorkingWithPrinters.ps1。
打开
WmiTemplate.ps1
文件,然后将其另存为
your-nameWorkingWithPrinters.ps1
。
40、修改$wmiQuery行以查询WIN32_Printer类。
将代码
$wmiQuery = "Select * from win32_product"
修改为
$wmiQuery = "Select * from win32_printer"
。
41、保存并运行脚本的具体操作是什么?
## 保存脚本
将脚本保存为 `yournameColorCodedServiceStatus.ps1`。若脚本未按预期运行,可将其与 `ColorCodedServiceStatus.ps1` 脚本进行比较。
## 运行脚本
- **在 PowerShell 内运行**:需输入脚本完整路径、脚本名称并确保包含 `.ps1` 扩展名。
- **在 PowerShell 外运行**:需输入脚本完整路径、脚本名称并确保包含 `.ps1` 扩展名,将其作为参数提供给 `PowerShell.exe` 程序,并使用 `-noexit` 参数在脚本执行后保留 PowerShell 控制台。
## 若无法运行脚本
- 使用 `Get-ExecutionPolicy` cmdlet 检查脚本执行策略。
- 若策略为 `Restricted`,可使用 `Set-ExecutionPolicy` cmdlet 将策略更改为 `RemoteSigned` 或 `Unrestricted`。
42、修改脚本,使其仅打印出每台打印机的名称。为此,将 name 属性添加到 Format – List cmdlet 中。
在脚本中添加代码 $objWMIServices | Format – List name 。
43、保存并运行一个PowerShell脚本的具体操作步骤是什么?
## 保存脚本
将脚本保存为 `yournameColorCodedServiceStatus.ps1`。若脚本未按预期工作,可将其与 `ColorCodedServiceStatus.ps1` 脚本进行比较。
## 运行脚本
- **若在 PowerShell 内运行**:
- 需启用执行策略。
- 输入脚本完整路径,包含脚本名称和 `.ps1` 扩展名。
- **若在 PowerShell 外运行**:
- 输入脚本完整路径,包含脚本名称和 `.ps1` 扩展名。
- 将其作为参数提供给 `PowerShell.exe` 程序。
- 使用 `-noexit` 参数使脚本执行后 PowerShell 控制台保持打开。
## 若无法运行脚本
- 使用 `Get-ExecutionPolicy` cmdlet 检查脚本执行策略。
- 若策略为 `Restricted`,可使用 `Set-ExecutionPolicy` cmdlet 将策略更改为 `RemoteSigned` 或 `Unrestricted`。
44、要确定每台打印机的定义位置,如何将 portname 属性添加到 Format-List cmdlet 中?
可使用如下代码实现:
$objWMIServices | Format-List name, portname
45、为了限制查询返回的特定数据,可以使用什么 WQL 技术?
可以使用以下 WQL 技术来限制查询返回的特定数据:
在
WMIQuery
参数中使用
Select
语句选择感兴趣的特定属性,例如:
sql
Select name
在
WMIQuery
参数中使用
From
语句指定要从中检索数据的类,例如:
sql
From Win32_Share
在
WMIQuery
参数中添加
Where
子句以进一步限制返回的数据集,确保
Where
子句中指定的属性首先在
Select
语句中提及,例如:
sql
Where name
添加评估运算符,可使用等号(
=
)、小于(
<
)或大于(
>
)符号,例如:
sql
Where name = 'C$'
46、在创建强大的 Where 子句时,可以使用哪三种可能的运算符?
等号(=)、大于号(>)和小于号(<)
47、使用PowerShell脚本在Active Directory的NwTraders.msft域根目录下,根据指定文本文件中的名称创建多个组织单位。步骤如下:1. 打开记事本或其他脚本编辑器。2. 找到一个包含脚本要创建的多个组织单位名称的文本文件,确保有该文件的准确路径。3. 在脚本的第一行,创建一个名为$aryText的变量,用它来保存Get – Content cmdlet返回的对象,将文本文件的路径指定为路径参数的值。使用Get – Content cmdlet时,它会从文本文件创建一个数组。4. 要遍历数组的每个元素,使用ForEach cmdlet。使用一个名为$aryElement的变量来保存$aryText数组中的行。5. 通过打开一个花括号开始代码块部分。6. 使用变量$strClass来保存字符串“organizationalUnit”,因为这是要在Active Directory中创建的对象类型。7. 要创建的每个组织单位的名称来自文本文件的每一行。用于Create命令的$strOUName是一个变量到另一个变量的直接赋值。8. 代码块中的下一行代码是使用[ADSI]加速器连接到Active Directory的代码。使用LDAP提供程序并连接到NwTraders.msft域,将创建的对象分配给$objADSI变量。9. 现在使用Create方法在Active Directory中创建组织单位。为Create方法指定两个属性:要创建的类的名称和要创建的对象的名称。这里,类的名称存储在变量$strClass中,要创建的对象的名称存储在$strOUName变量中,将返回的对象存储在$objOU变量中。10. 要将更改写回到Active Directory,使用SetInfo()方法。11. 用花括号关闭代码块。12. 将脚本保存为yournameStepByStep.ps1并运行。如果没有看到在域根目录下创建了组织单位,请检查脚本。
以下是根据上述步骤生成的PowerShell脚本:
$aryText = Get-Content -Path "c:labsch7stepbystep.txt"
foreach ($aryElement in $aryText) {
$strClass = "organizationalUnit"
$StrOUName = $aryElement
$objADSI = [ADSI]"LDAP://dc=nwtraders,dc=msft"
$objOU = $objADSI.create($strClass, $StrOUName)
$objOU.setInfo()
}
将上述代码保存为
yournameStepByStep.ps1
,然后运行该脚本。如果没有看到在域根目录下创建了组织单位,请检查脚本。