我在兜兜转转,希望有人能指出我正确的方向......
我创建了一个 .csv 文件如下
SamAccountName,Name,GivenName,Surname,DisplayName,Type,Path,Logon Name,UserPrincipleName,ScriptPath,Password
fredflinstone,Fred Flinstone,Fred,Flinstone,Fred Flinstone,User,"CN=users,DC=Test,DC=local",fredf@test.local,fredf@test.local,login.bat,Yabba
Run Code Online (Sandbox Code Playgroud)
我去powershell,运行
import-module activedirectory
Import-CSV C:\Users1.csv | New-ADUser
Run Code Online (Sandbox Code Playgroud)
它成功添加了用户,但我遇到的问题是
Account User login name但确实放入了 2000 年前的名称。 任何帮助,将不胜感激
我正在寻找一种快速方法来获取Exchange 2010 SP1 系统上“已删除邮件”文件夹大小的每用户帐户。这是最近的一次迁移,我只是想在实施政策之前获得概述/基线。
我有一个很棒的 VBscript,它将列出我所有大小低于给定大小的Exchange 2003邮箱。
我有另一个很棒的 VBscript,它接受用户列表并为每个用户设置配额。
任何人都可以填补空白,并指出一种方法(VBscript 或其他方式)的方向,我可以通过该方法为邮箱低于特定限制的所有用户设置配额?
我正在尝试减少我的邮箱限制,并希望首先对已经低于该限制的用户实施该限制。这样,让人们低于新限制的更大问题不会变得更大!
更新:感谢 Evan Anderson,我发现我需要将 GUID 转换为另一种格式以用于 LDAP 查找。Microsoft 有一篇知识库文章解释了如何执行此操作,但我没有所需格式的 GUID。还有另一篇kb文章描述了“如何将字符串格式的GUID转换为十六进制字符串形式以供查询活动目录时使用”,但是脚本抛出错误。
更新 2:好的 - 忘记 VB 脚本。我找到了一种更简洁的方法来使用 PowerShell 获取我的数据。
$computers = "vexch01","vexch02"
foreach ($computer in $computers) {
Get-Wmiobject -namespace root\MicrosoftExchangeV2 -class Exchange_Mailbox -computer $computer | sort-object -desc Size | select-object MailboxDisplayName,StoreName,@{Name="Size/Mb";Expression={[math]::round(($_.Size / 1024),2)}}, MailboxGUID | Export-Csv -notype -Path $computer.csv
}
Run Code Online (Sandbox Code Playgroud)
目前,这会将 MailboxGUID 输出为字符串类型的 GUID(例如 {21EC2020-3AEA-1069-A2DD-08002B30309D})。我想通过这个在 AD 中查找用户,但 AD 以 octetBytes 格式存储它们。
我发现了一些 …
问题: 从 CSV 文件中获取用户名列表,并从他们所属的所有用户组中递归删除它们。我想根据组名的前缀来限制他们从哪些组中删除。
示例: 如果 user_bob(CSV 中的众多用户名之一)是以下组的成员(递归确定):abc-users、abc-printers、abc-users-limited、xzy-users、xyz-secure,则我想让 PowerShell 脚本将他从所有前缀为“abc-”的组中删除,然后转到 CSV 中的下一个用户名并执行相同的过程。
注意: 我一直在网上搜索类似这样的例子,但似乎找不到任何线索。非常感谢我可以开始测试过程或将它们组合到解决方案中的代码片段或示例。我一直在查看有关 commandlet的TechNet 文档,但没有取得太大进展。提前致谢!
我正在编写一个脚本来备份我们的 SVN 存储库,基于http://www.codeproject.com/KB/powershell/SVNBackupPower.aspx。它工作得很好,但是当它等待 ZIP 完成时,我希望它在每次迭代时发出一个点而不是一个新行。所以,
Waiting for ZIP ...................
Run Code Online (Sandbox Code Playgroud)
与
Waiting for ZIP
Waiting for ZIP
Waiting for ZIP
Waiting for ZIP
(you get the picture)
Run Code Online (Sandbox Code Playgroud)
我猜当时 BASIC 中的等价物是:
PRINT ".";
Run Code Online (Sandbox Code Playgroud)
但是 PowerShell 等价物是什么?
所以我正在研究一种使用 Powershell 获取计划任务列表的方法。通过我的研究,我确定获得“大多数”任务的唯一方法是使用 SCHTASKS。此命令确实允许 XML 输出,您可以将其直接推送到变量中:
$tasks = [xml](SCHTASKS /QUERY /XML ONE)
Run Code Online (Sandbox Code Playgroud)
现在,问题出现了,任务名称存储为 XML 注释。当添加到任务对象时,所有这些数据都存储在“#comment”键下。使用正常的寻址规则,您将访问:
$tasks.Tasks.#comment
Run Code Online (Sandbox Code Playgroud)
以上当然不起作用,因为数字符号是注释的特殊字符,因此它会忽略它。我无法用反勾号“`”来逃避这个角色,所以我不知道该怎么做。我宁愿避免通过 csv 文件完成所有这些操作,因为这样做会丢失大量数据。
谢谢
我一直在研究一个 PS 脚本,它会提示我输入几个条件,然后创建一个 Exchange/AD 帐户。一切顺利,但我在想,是否有一个命令可以创建一个类似于另一个用户的新用户?通常在我们的组织中,大多数用户的设置与他们部门中的其他用户非常相似。因此,如果 John Doe 从会计开始,基本上我会将他设置为类似于已经在会计中的 Jane Smith。他的头衔可能略有不同(会计师 I 与会计师 II),但其他项目如他所在的楼层、他在 AD 中的组等都是相同的。是否有一个 PS(或其他)命令会说“Add-User -like Jane”或者我可以说的东西,“创建新用户,保持 -description -location -ADGroups 与用户 Jane 相同”,
这可能有点牵强,但似乎一旦完成,我就可以更快、更有效地设置这个人。欢迎任何想法,谢谢!
我正在管理服务器核心机器并尝试在 PowerShell 中完成所有操作,这很有趣。我需要一个默认文件的列表。从其他网站,我发现了如何使用 xxx-WebConfiguration 和 xxx-WebConfigurationProperty 设置和删除它们。我试过了:
Get-WebConfigurationProperty -Filter /system.webServer/defaultDocument -PSPath "IIS:\sites\Default Web Site" -Name files
Run Code Online (Sandbox Code Playgroud)
但它给出了:
Collection : {Microsoft.IIs.PowerShell.Framework.ConfigurationElement, Microsoft.IIs.PowerShell.Framework.Configuration
Element, Microsoft.IIs.PowerShell.Framework.ConfigurationElement, Microsoft.IIs.PowerShell.Framework.Confi
gurationElement...}
ItemXPath : /system.webServer/defaultDocument
Attributes : {}
ChildElements : {}
ElementTagName : files
Methods :
Schema : Microsoft.IIs.PowerShell.Framework.ConfigurationElementSchema
Run Code Online (Sandbox Code Playgroud)
这并没有真正的帮助。
我们正在使用 servermanager.exe 从命令提示符在 windows 2008R2 中安装 smtp 服务器。servermanager.exe 有什么替代品吗?如何从命令提示符在 Windows 2012 中启用 smtp 服务器?
提前致谢。
如果我将此两行发送到 Powershell
$sName = "ALG"
$service = Get-Service -computername db-name -Name $sName
Run Code Online (Sandbox Code Playgroud)
我将在该计算机上获取有关该服务的信息。如果我将名称更改为“db-nameXXX”(虚假名称),我将收到找不到该服务的错误消息。但是,我有一个服务器停止接受远程桌面会话(我也无法与 MS SQL 管理工作室连接)并将这些命令发送到该机器(在错误情况下)只是挂起......脚本运行但从未返回。我想要一个“超时”功能,以便在某个时刻,我可以输出一条消息,说机器没有响应。现在,脚本不允许我做任何事情。我尝试了 start/process/end 块,但只要 get-service 没有出现错误,我就无法到达任何地方。