任务1:
下面的命令是否可以获取特定域中所有计算机上已经安装的Hotfix的清单?阐述原因
Get-HotFix -ComputerName (Get-ADComputer -Filter * | Select-Object -ExpandProperty name)
解答:
Get-Hotfix 的 -ComputerName 获取管道类型是:String[],通过()传递过来的是类型也是String.所以该命令可以运行,并且结果正确。
-ComputerName <String[]>
指定远程计算机。默认值为本地计算机。键入远程计算机的 NetBIOS 名称、Internet 协议 (IP) 地址或完全限定的域名。
此参数不依赖于 Windows PowerShell 远程处理。即使你的计算机未配置为运行远程命令,你也可以使用 Get-Hotfix 的 ComputerName 参数。
是否必需? False
位置? named
默认值 Local computer
是否接受管道输入? true (ByPropertyName)
是否接受通配符? False(Get-ADComputer -Filter * | Select-Object -ExpandProperty name) | gm
TypeName:System.String
任务2:
下面的命令是否可以从相同的计算机上已经安装的Hotfix的清单?阐述原因
Get-ADComputer -Filter * | Get-HotFix
解答:
Get-Hotfix 命令支持ByPropertyName 参数,并且Get-ADComputer -Filter *传递的参数也是string类型的。所以该命令可以执行。 具体信息查看以下内容:
help Get-Hotfix -full 查看以下信息
-ComputerName <String[]>
指定远程计算机。默认值为本地计算机。键入远程计算机的 NetBIOS 名称、Internet 协议 (IP) 地址或完全限定的域名。
此参数不依赖于 Windows PowerShell 远程处理。即使你的计算机未配置为运行远程命令,你也可以使用 Get-Hotfix 的 ComputerName 参数。
是否必需? False
位置? named
默认值 Local computer
是否接受管道输入? true (ByPropertyName)
是否接受通配符? False
Get-ADComputer -Filter * | gm 查看以下信息:
TypeName:Microsoft.ActiveDirectory.Management.ADComputer
Name MemberType Definition
---- ---------- ----------
Contains Method bool Contains(string propertyName)
Equals Method bool Equals(System.Object obj)
GetEnumerator Method System.Collections.IDictionaryEnumerator GetEnumerator()
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Item ParameterizedProperty Microsoft.ActiveDirectory.Management.ADPropertyValueCollection Item(string propertyName) {get;}
DistinguishedName Property System.String DistinguishedName {get;set;}
DNSHostName Property System.String DNSHostName {get;set;}
Enabled Property System.Boolean Enabled {get;set;}
Name Property System.String Name {get;}
ObjectClass Property System.String ObjectClass {get;set;}
任务3:
下面的命令是否可以获取到域中计算机上已经安装的HotFix清单?阐述原因。
Get-ADComputer -Filter * | Select-Object @{l='ComputerName';e={$_.Name}} | Get-HotFix
解答:
通过Get-ADComputer -Filter * | Select-Object @{l='ComputerName';e={$_.Name}}传递过来的是String类型,正好符合Get-FoxHit的name参数接收要求。所以能正确执行,具体信息如下:
Get-ADComputer -Filter * | Select-Object @{l='ComputerName';e={$_.Name}} | gm 查看以下信息;
TypeName:Selected.Microsoft.ActiveDirectory.Management.ADComputer
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
ComputerName NoteProperty System.String ComputerName=WIN-JFDKC82CU4F
任务4:
使用管道参数绑定来写一个命令获取域中每一台计算机正在运行的进程的清单。不要使用括号。
解答:
Get-ADComputer -Filter * | Select-Object @{l='ComputerName';e={$_.name}} | Get-Process
解答思路:
因为Get-ADComputer -Filter * 只能传递一个name属性的ComputerName(域内ad电脑名)的Sting类型,但是Get-Process只能接收ComputerName属性的String类型管道传递,所以我们通过Select-Object @{l='ComputerName';e={$_.name}},把name转换成Get-Process能接收ComputerName属性的String类型管道传递值。
任务5:
可以使用括号而不要使用管道输入方法来获取域中每一台计算机上已经安装的服务清单。
解答:
Get-Service -ComputerName(Get-ADComputer -Filter * | Select-Object name -ExpandProperty name)
任务6:
确认命令是否可以正常运行,并阐述其原因。
Get-ADComputer -Filter * | Select-Object @{l='ComputerName';e={$_.name}} | Get-WmiObject -Class Win32_BIOS
解答:
不能正常执行,因为Get-WmiObject 命令不支持管道输入。具体信息如下:
help Get-WmiObject -full可以查看到以下信息:
输入
None
不能通过管道将输入传递给 Get-WmiObject。
获取更多资料请点击:获取资料