PowerShell新手,尝试将脚本拼凑在一起以:
1.提取Active Directory中的服务器列表(完成)。
1.查询每台服务器,以获取在管理员凭据下运行的SERVICE帐户列表。
有人能指导我...更喜欢导出到CSV文件等。
谢谢你!
这是我的
Import-Module ActiveDirectory
$Serverlist = Get-ADComputer -Filter 'operatingsystem -like "*server*" -and enabled -eq "true"' `
-Properties Name
Sort-Object -Property Name |
foreach ($Server in $Serverlist) {
$Server
Get-WmiObject Win32-Service | Select DisplayName, StartName | Where-Object {$_.StartName -eq "administrator"}
获取这些错误:
At line:5 char:18
+ foreach ($Server in $Serverlist) {
+ ~~
Unexpected token 'in' in expression or statement.
At line:5 char:17
+ foreach ($Server in $Serverlist) {
+ ~
Missing closing ')' in expression.
At line:5 char:32
+ foreach ($Server in $Serverlist) {
+ ~
Unexpected token ')' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
1条答案
按热度按时间eqqqjvef1#
假设您具有远程查询这些主机的权限,则可以尝试以下操作:
1.附注
Get-CimInstance
和Get-WmiObject
(在本例中被替换,因为在新的PowerShell版本中不再维护)可以并行调用查询,因此不需要循环。1.两个cmdlet都允许使用WQL进行查询。这种方式的筛选速度比使用powershell快。
1.使用
Get-WmiObject
而不是Get-CimInstance
的唯一真实的原因可能是使用DCOM作为远程处理协议。此时,您可以使用New-CimSessionOption -Protocol DCOM
并使用CimSession进行连接。两个cmdlet的功能基本相同。1.您应该在
Select-Object
语句中包含PSComputerName
,以了解对象来自哪台计算机。