【发布时间】:2016-01-04 22:33:18
【问题描述】:
我有一个启动 PS1 脚本的 bat 文件,PS1 脚本应该转到 AD 并导出安全组中列出的名称。它运行良好并且导出良好,但是数据不正确,几乎就像它正在导出一些我不确定从哪里来的未知数据。这是我的 powershell 脚本:
$uni = Read-host 'Your username'
$SG = Read-host 'Security Group'
start-sleep -s 3
powershell.exe get-adgroupmember "$SG" | export-csv -path "C:\users\$uni\desktop\members.csv"
打开CSV时,显示类似:
TYPE System.String
长度 79 79 63 17 34 79 26 54 1
我需要声明或导入一个 pssession 吗?如果是,活动目录的配置名称是什么?
【问题讨论】:
-
删除
powershell.exe并添加-NoTypeInformation开关:get-adgroupmember "$SG" | export-csv -path "C:\users\$uni\desktop\members.csv" -NoTypeInformation。 -
我尝试了你的建议,但是我在 cmd.exe 中收到一条消息,说明 'get-adgroupmember' 无法识别,所以本质上它是在尝试从 cmd.exe 而不是运行 powershell 命令电源外壳。当我一开始离开 powershell.exe 时,它停止了这个错误。
-
您不是从 cmd.exe 获取的。您会遇到 PowerShell 异常 - 因为
Get-ADGroupmember不是常用的 cmdlet。您需要先导入 ActiveDirectory 模块(并且可能安装 RSAT 才能做到这一点)。 -
复制一下,我确实安装了 RSAT,并且安装了我的 AD 模块,但我完全理解您的意思。也许在 PS1 脚本中运行导入?我试过了,powershell.exe import-module ActiveDirectory | get-adgroupmember "$SG" yada yada... 但是得到同样的错误。有没有其他方法可以导入模块?我基本上需要在同一条线上。
-
你听起来很困惑。首先,就像我说的,您不需要在 PowerShell 脚本中调用 powershell.exe - 删除它。其次,您不应该将输出从
Import-Module传送到Get-ADGroupMember。而是使它们成为单独的命令。或许this example 可以说明我的意思?
标签: powershell csv batch-file active-directory