Joe*_*Rod 1 powershell administrator local
我已经通过GPO在所有桌面上配置了winrm,因此我现在可以使用invoke-commandcmdlet在远程计算机上本地运行命令.当我net localgroup administrators在我的本地机器上运行时,这可以工作并给我我想要的东西.问题是我对这些数据无能为力.我无法将结果输出到变量,所以我可以说删除特定的帐户.
是否有内置cmdlet可以让我做同样的事情net localgroup administrators?
您可以解析输出中的名称。
这是使用 V4 的示例:
(net localgroup administrators).where({$_ -match '-{79}'},'skipuntil') -notmatch '-{79}|The command completed'
Run Code Online (Sandbox Code Playgroud)
虽然可以运行net localgroup groupname和解析其输出,但这不是一种非常PoSh的方式.我建议使用WinNT提供程序:
$computers = 'HostA', 'HostB', 'HostC', ...
$groupname = 'Administrators'
$computers | % {
$group = [ADSI]("WinNT://$_/$groupname,group")
$group.PSBase.Invoke('Members') | % {
$_.GetType().InvokeMember('Name', 'GetProperty', $null, $_, $null)
}
}
Run Code Online (Sandbox Code Playgroud)
如果你想使用Invoke-Command你可以做这样的事情:
$computers = 'HostA', 'HostB', 'HostC', ...
$groupname = 'Administrators'
Invoke-Command -Computer $computers -ScriptBlock {
$group = [ADSI]("WinNT://$env:COMPUTERNAME/$($args[0]),group")
$group.PSBase.Invoke('Members') | % {
$_.GetType().InvokeMember('Name', 'GetProperty', $null, $_, $null)
}
} -ArgumentList $groupname
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13308 次 |
| 最近记录: |