0
$adsi = [ADSI]"WinNT://$env:COMPUTERNAME" 
$adsi.Children | where {$_.SchemaClassName -eq 'user'} | Foreach-Object { 
$groups = $_.Groups() | Foreach-Object {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)} 
$_ | Select-Object @{n='UserName';e={$_.Name}},@{n='Groups';e={$groups -join ';'}} 
} 

嗨那里......当我在服务器2008中运行上述脚本时,出现以下提及的错误。必须在' - '运算符的右侧提供值表达式

You must provide a value expression on the right-hand side of the '-' operator. 
At C:\Temp\Usrgrp.ps1:4 char:73 
+ $_ | Select-Object @{n='UserName';e={$_.Name}},@{n='Groups';e={$groups -j <<<< oin ';'}} 

你能帮我找出最新的问题吗?

+1

错误消息的格式看起来有点怪......你从什么地方复制此?看起来像它有一个奇怪的字符... – restless1987

+0

是的,我得到这个例子来尝试... –

+0

也只是发现错误只出现在PowerShell v1.0,但在其他版本的罚款.. .pls让我知道你是否可以帮助我...... –

回答

0

这看起来有点像其他人张贴的内容。如果Powershel 1不支持-join(我真的不知道,但我的样子),你可以与去:

$adsi = [ADSI]"WinNT://$env:COMPUTERNAME" 
$adsi.Children | Where-Object {$_.SchemaClassName -eq 'user'} | Foreach-Object { 
    $groups = $_.Groups() | Foreach-Object {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)} 
    $_ | Select-Object @{n='UserName';e={$_.Name}},@{n='Groups';e={[string]::(';',$groups)}} 
}