我们的其中一台 Windows 服务器上有一些用户文件夹,但权限却很糟糕。我想要它SYSTEM并Domain Admins完全控制所有文件夹。我希望用户只读取顶级文件夹(这是他们的主文件夹)并修改所有子文件夹和文件。这可以通过 GUI 轻松完成,但我不知道如何编写脚本。
我从我的 PowerShell 脚本调用 icacls,因为 get-acl 和 set-acl 是主要的 PITA。如果我必须使用它们,我并不反对,但我想调用 icacls 会更容易。这是我必须到目前为止的相关代码:
icacls.exe $folder /grant '$domain\$user:(OI)(CI)(M)'
icacls.exe $folder /grant 'SYSTEM:(OI)(CI)(F)'
icacls.exe $folder /grant '$domain\domain admins:(OI)(CI)(F)'
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在使用icacls.exe $folder /grant '$domain\$user:(OI)(CI)(M)'. 我无法弄清楚如何使修改仅适用于子文件夹和文件,同时将只读授予顶级文件夹。
所需的权限结构如下所示(只是为了清楚起见):
-Users
--M
---Marra (read only to me)
----Documents (Modify)
----Scripts(Modify)
----Etc (Modify)
Run Code Online (Sandbox Code Playgroud)
什么是正确的 icacls 语法,或者我如何使用 set-acl 在 PS 中进行本机操作?
当我Start-Job {dir}在 PowerShell 中运行命令时,我得到输出
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
43 Job43 Running True localhost dir
Run Code Online (Sandbox Code Playgroud)
我怎样才能让这个工作把它的输出写到控制台?
我们的问题:
客户端,一个普通用户,必须能够一次重置多个密码。一口气打了30个左右。这将需要 powershell 或类似的东西,但对于 AD 和 Powershell,需要是域管理员。
我的解决方案是创建一个在 AD 服务器上运行的服务并从程序获取连接。然后该服务将进行 AD 更改。
到目前为止一切顺利,我只想听听关于这个问题的其他一些想法。因为我肯定不会是唯一一个拥有它的人
我需要运行 100 个用户名的列表并清除他们的 Pager 字段,可以使用 Power Shell 完成吗?包含用户名的文件名输入如下所示:itaig haruth geloos fested
我们正在使用 Exchange 2010。我想检索 30 天内来自工作场所所有用户的已发送电子邮件总数和已接收电子邮件的列表。该列表应包含所有用户的姓名,然后是发送和接收的电子邮件总数。
我已经尝试了下面的示例代码,并试图将其更改为无济于事。
Get-MessageTrackingLog -Recipients user01@yourdomain.com -start “10/22/2011 00:00:00” -end “11/21/2011 11:59:00” -EventId "receive" | measure-object
Get-MessageTrackingLog -sender user01@yourdomain.com -start “10/22/2011 00:00:00” -end “11/21/2011 11:59:00” -EventId "send" | measure-object
我正在服务器 2012 环境中进行一些 POC 测试,在初始防火墙配置期间,当我真的更愿意编写脚本时,我发现自己反复进入 GUI。我四处搜索,但找不到任何关于 3.0 中新的 powershell 命令的信息,也没有通过 WMI 找到任何信息。
有什么我遗漏的或者这仍然主要是面向 GUI 的任务吗?
作为简单备份例程的一部分,我正在尝试将单个目录中的所有文件压缩到不同的文件夹中。
代码运行正常,但不生成 zip 文件:
$srcdir = "H:\Backup"
$filename = "test.zip"
$destpath = "K:\"
$zip_file = (new-object -com shell.application).namespace($destpath + "\"+ $filename)
$destination = (new-object -com shell.application).namespace($destpath)
$files = Get-ChildItem -Path $srcdir
foreach ($file in $files)
{
$file.FullName;
if ($file.Attributes -cne "Directory")
{
$destination.CopyHere($file, 0x14);
}
}
Run Code Online (Sandbox Code Playgroud)
任何想法我哪里出错了?
我正在尝试复制一个名为“dat”的文件。该文件没有扩展名。问题是在父文件夹“个人”下我有 500 个文件夹,所有这 500 个文件夹都有“dat”文件。我有兴趣复制所有这些“dat”文件并将它们放在我的目标目录中。
因此,当我将这些“dat”文件粘贴到目标目录中时,我希望将它们命名如下:
“Folder_they_were_residing_in.dat”
因此,所有 dat 文件都将重命名为它们所在的文件夹名称,扩展名为“dat”。
这可能吗?
我想使用 PowerShell 从 Windows 2012 挂载 NFS 共享,并使该挂载在调用它的 PowerShell 会话以外的上下文中可见。如果我使用 New-PSDrive 命令(cmdlet?),例如:
New-PSDrive Z -PsProvider FileSystem -Root \\10.40.1.1\export\isos
Run Code Online (Sandbox Code Playgroud)
然后它将 NFS 服务器安装到 Z 驱动器,但我无法在文件资源管理器中访问该驱动器。
我已经开始设置组,如:
其中部门主管是部门员工的成员,部门主管是部门主管的成员。
我知道如何使用 powershell 列出一个人所属的组,可以是直接分配的组,也可以是通过嵌套组继承的组。
但是我想弄清楚的是一个脚本,它将直接和间接地向我显示属于这些组之一的所有用户,例如。用户 A 是部门员工和部门主管的直接成员。
我的谷歌搜索未能找到或编写可以做到这一点的脚本。
编辑:
实际上,嵌套的层数和分支更多,部门也很多,所以很混乱。我想获得直接属于任何组的成员列表,以及间接属于同一组的成员,以便我可以删除多余的组直接成员资格。
powershell ×10
windows ×2
autoit ×1
compression ×1
console ×1
icacls ×1
nfs ×1
scripting ×1
windows-7 ×1
wmi ×1