使用 powershell 共享特定 machine/user 的文件夹

Sharing a folder for a specific machine/user using powershell

我正在尝试使用 Powershell 将文件夹共享到特定 machine/user。

一些背景:我有很多 Windows 机器有一个文件夹(数据文件夹)需要备份。这些文件夹与 "special" 机器 运行ning 备份软件共享。该软件每天检查数据文件夹的内容并将数据备份到其本地硬盘。当一台新机器到达时,我们使用资源管理器手动共享文件夹。 (属性 -> 共享 -> 共享 ...)。所有机器都是大型网络的一部分,我们不想与所有机器共享数据。因此,我们只允许备份机对数据文件夹进行读取访问(我们称备份机上的用户为domain\BackupUser)。我想将这些共享数据文件夹的创建移动到我们可以从 Powershell 运行 的一些脚本中。

我找到的命令是:New-SmbShare -Path C:\Data\ -Name Data -ReadAccess "domain\BackupUser"。该命令将按预期创建 (smb) 共享,我可以通过备份机器观察它。但是在访问它时,权限被拒绝。 在列出共享文件夹访问权限 (Get-SmbShareAccess -Name "Data") 时,它会显示预期的用户。 我还尝试使用以下方法创建共享文件夹:net share Data=C:\Data /grant:BackupUser,FULL 但仍然出现权限被拒绝的错误。 奇怪的是,当使用资源管理器共享文件夹并列出访问权限时 (`Get-SmbShareAccess -Name "Data")。未列出用户 (BackupUser),但显示 "Everyone"。但是,当尝试从另一台(随机)机器访问数据文件夹时,它不会根据需要提供访问权限。备份机器确实有访问权限。

所以,主要问题是:什么 powershell 命令会为特定 machine/user 创建一个新的共享文件夹?

共享权限与文件系统权限不同。

设置分享权限,然后应用FOLDER/FILE权限:

$FolderName = 'C:\Data'
$UserId = 'DOMAIN\BackupUser'
New-SmbShare -Path $FolderName -Name Data -ReadAccess $UserId

$Acl = Get-Acl $FolderName
$NewAccessRule = New-Object system.security.accesscontrol.filesystemaccessrule($UserId,"Read","Allow")
$Acl.SetAccessRule($NewAccessRule)
Set-Acl $FolderName $Acl