在 Windows 系统中,您可以通过 CMD 和 PowerShell 来设置、查询、启用、禁用打印机共享功能。以下是通过这两种方式操作打印机共享的步骤和命令。在 Windows 系统中,通过 CMD 和 PowerShell 命令设置、查询、启用、禁用共享文件夹权限以及跨设备访问,涉及多个步骤,包括设置文件共享、验证共享状态、启用跨设备访问等。

在 Windows 系统中,您可以通过 CMDPowerShell 来设置、查询、启用、禁用打印机共享功能。以下是通过这两种方式操作打印机共享的步骤和命令。

1. 主机设置打印机共享(手动方式)

  1. 打开 控制面板 -> 设备和打印机
  2. 右键点击您想共享的打印机,选择 打印机属性
  3. 在 共享 选项卡中,勾选 共享这台打印机
  4. 为打印机设置一个易识别的名称,确保其他设备能够找到并连接。

2. CMD命令操作打印机共享

2.1 启用打印机共享

  1. 启用打印机共享: 使用以下命令启用打印机共享:
    cmdCopy Code
    net share "打印机名称" /grant:everyone,print
    例如,要共享名为 HPPrinter 的打印机:
    cmdCopy Code
    net share HPPrinter="\\电脑名\HPPrinter" /grant:everyone,print

2.2 禁用打印机共享

  1. 禁用打印机共享: 使用以下命令来禁用共享:
    cmdCopy Code
    net share "打印机名称" /delete
    例如,要禁用共享 HPPrinter
    cmdCopy Code
    net share HPPrinter /delete

2.3 查询打印机共享状态

  1. 查看已共享的打印机
    cmdCopy Code
    net share
    这将显示所有当前共享的资源,包括共享的打印机。

3. PowerShell命令操作打印机共享

3.1 启用打印机共享

  1. 启用打印机共享: 使用以下命令启用打印机共享:
    powershellCopy Code
    Set-Printer -Name "打印机名称" -Shared $true
    例如,要共享名为 HPPrinter 的打印机:
    powershellCopy Code
    Set-Printer -Name "HPPrinter" -Shared $true

3.2 禁用打印机共享

  1. 禁用打印机共享: 使用以下命令禁用打印机共享:
    powershellCopy Code
    Set-Printer -Name "打印机名称" -Shared $false
    例如,要禁用 HPPrinter 的共享:
    powershellCopy Code
    Set-Printer -Name "HPPrinter" -Shared $false

3.3 查询打印机共享状态

  1. 查看打印机的共享状态: 使用以下命令查询打印机是否共享:
    powershellCopy Code
    Get-Printer -Name "打印机名称" | Select-Object Name,Shared
    例如,查看 HPPrinter 是否共享:
    powershellCopy Code
    Get-Printer -Name "HPPrinter" | Select-Object Name,Shared

4. 验证共享打印机是否可访问

4.1 CMD 命令验证打印机共享

  1. 通过 net view 验证共享的打印机: 使用 net view 命令查看网络上共享的打印机:

    cmdCopy Code
    net view \\计算机名

    例如,要查看 Computer01 上共享的资源:

    cmdCopy Code
    net view \\Computer01
  2. 访问共享打印机: 在 命令提示符运行 中,输入打印机共享路径:

    cmdCopy Code
    \\计算机名\打印机名称

    例如,要连接共享的打印机:

    cmdCopy Code
    \\Computer01\HPPrinter

4.2 PowerShell 命令验证打印机共享

  1. 查看共享打印机: 使用以下命令列出网络中共享的打印机:

    powershellCopy Code
    Get-WmiObject -Class Win32_Printer -Filter "Shared = 'True'" | Select-Object Name, SystemName
  2. 测试打印机是否可用: 您可以通过 Test-Path 来验证共享路径是否可访问:

    powershellCopy Code
    Test-Path "\\计算机名\打印机名称"

    例如:

    powershellCopy Code
    Test-Path "\\Computer01\HPPrinter"

 

  • CMD启用共享打印机net share "打印机名称" /grant:everyone,print
  • PowerShell启用共享打印机Set-Printer -Name "打印机名称" -Shared $true
  • CMD禁用共享打印机net share "打印机名称" /delete
  • PowerShell禁用共享打印机Set-Printer -Name "打印机名称" -Shared $false
  • 查询打印机共享状态:通过 net share(CMD)或 Get-Printer(PowerShell)查询共享状态。
  • 验证打印机共享:使用 net view(CMD)或 Get-WmiObject(PowerShell)验证共享打印机是否可用。

这些命令和步骤可以帮助您通过 CMDPowerShell 在 Windows 系统上管理和验证打印机共享的设置。


通过 CMDPowerShell 命令来设置、查询、启用、禁用打印机共享以及客户端连接的详细步骤。

1. 设置打印机共享(CMD 与 PowerShell)

1.1 CMD命令

  • 启用打印机共享:

    使用 net share 命令共享打印机:

    cmdCopy Code
    net share "打印机名称" /grant:everyone,print

    例如,要共享名为 HPPrinter 的打印机:

    cmdCopy Code
    net share HPPrinter="\\电脑名\HPPrinter" /grant:everyone,print
  • 禁用打印机共享:

    使用以下命令禁用共享:

    cmdCopy Code
    net share "打印机名称" /delete

    例如,要禁用共享 HPPrinter

    cmdCopy Code
    net share HPPrinter /delete

1.2 PowerShell命令

  • 启用打印机共享:

    使用 Set-Printer 命令启用打印机共享:

    powershellCopy Code
    Set-Printer -Name "打印机名称" -Shared $true

    例如,要共享名为 HPPrinter 的打印机:

    powershellCopy Code
    Set-Printer -Name "HPPrinter" -Shared $true
  • 禁用打印机共享:

    使用以下命令禁用共享:

    powershellCopy Code
    Set-Printer -Name "打印机名称" -Shared $false

    例如,要禁用 HPPrinter 的共享:

    powershellCopy Code
    Set-Printer -Name "HPPrinter" -Shared $false

2. 查询打印机共享状态

2.1 CMD查询

  • 查看所有共享的资源:

    使用 net share 命令查看共享的打印机或文件夹:

    cmdCopy Code
    net share
  • 查看打印机是否共享:

    可以通过 net view 来查看共享的打印机:

    cmdCopy Code
    net view \\计算机名

    例如:

    cmdCopy Code
    net view \\Computer01

2.2 PowerShell查询

  • 查看打印机的共享状态:

    使用以下命令查看打印机的共享状态:

    powershellCopy Code
    Get-Printer -Name "打印机名称" | Select-Object Name, Shared

    例如:

    powershellCopy Code
    Get-Printer -Name "HPPrinter" | Select-Object Name, Shared
  • 列出所有共享打印机:

    使用 WMI 查询来列出所有共享的打印机:

    powershellCopy Code
    Get-WmiObject -Class Win32_Printer -Filter "Shared = 'True'" | Select-Object Name, SystemName

3. 客户端连接共享打印机

3.1 Win+R运行连接

  1. 在客户端电脑上按 Win+R,输入共享打印机的网络路径:

    textCopy Code
    \\主机IP\打印机名称

    例如:

    textCopy Code
    \\192.168.1.100\HPPrinter
  2. 右键共享打印机 -> 选择 连接,并根据提示完成连接操作。

3.2 常见故障排查

  • 确保主机计算机已开机且连接到网络。

  • 确保主机防火墙已放行445端口(SMB端口)。可以通过以下方法检查:

    • 打开 控制面板 -> Windows 防火墙 -> 高级设置
    • 在 入站规则 中查看 Microsoft 网络服务器共享(SMB) 是否允许。
  • 客户端和主机计算机在同一网络段,且能够相互访问。

    • 在客户端命令行中尝试 ping 主机 IP 地址:
      cmdCopy Code
      ping 主机IP
      确保能够 ping 通主机 IP 地址。
  • 确保共享打印机的权限已正确设置

    • 在主机的打印机属性中,确保已勾选 共享这台打印机

4. 验证打印机共享是否正常工作

4.1 CMD验证

  • 通过 net view 检查共享打印机是否显示在网络上:

    cmdCopy Code
    net view \\主机IP

    例如:

    cmdCopy Code
    net view \\192.168.1.100
  • 访问打印机路径,检查客户端是否能连接到打印机:

    cmdCopy Code
    \\主机IP\打印机名称

    例如:

    cmdCopy Code
    \\192.168.1.100\HPPrinter

4.2 PowerShell验证

  • 使用 Test-Path 检查共享路径是否可用:
    powershellCopy Code
    Test-Path "\\主机IP\打印机名称"
    例如:
    powershellCopy Code
    Test-Path "\\192.168.1.100\HPPrinter"

5. 总结

  • CMD设置共享:使用 net share 来启用和禁用打印机共享。
  • PowerShell设置共享:使用 Set-Printer 命令启用和禁用共享。
  • 查询共享状态:使用 net share(CMD)或 Get-Printer(PowerShell)查询共享状态。
  • 客户端连接:使用 Win+R 连接共享打印机,输入网络路径:\\主机IP\打印机名称
  • 常见故障:检查主机防火墙是否放行445端口,确保设备在同一网络中,并验证共享权限是否设置正确。

通过这些步骤和命令,您可以方便地设置和管理 Windows 系统中的打印机共享。


如何通过 CMD 命令PowerShell 命令 来完成 设置、查询、添加、启用、禁用、验证 打印机共享,以及如何 检查主机防火墙 是否放行 445 端口,并确保 设备在同一网络中验证共享权限是否设置正确


1. 设置打印机共享

1.1 CMD 命令

  • 启用打印机共享

    cmdCopy Code
    net share "打印机名称" /grant:everyone,print

    例如,启用名为 HPPrinter 的共享:

    cmdCopy Code
    net share HPPrinter="\\电脑名\HPPrinter" /grant:everyone,print
  • 禁用打印机共享

    cmdCopy Code
    net share "打印机名称" /delete

    例如,禁用共享 HPPrinter

    cmdCopy Code
    net share HPPrinter /delete

1.2 PowerShell 命令

  • 启用打印机共享

    powershellCopy Code
    Set-Printer -Name "打印机名称" -Shared $true

    例如,启用名为 HPPrinter 的共享:

    powershellCopy Code
    Set-Printer -Name "HPPrinter" -Shared $true
  • 禁用打印机共享

    powershellCopy Code
    Set-Printer -Name "打印机名称" -Shared $false

    例如,禁用 HPPrinter 共享:

    powershellCopy Code
    Set-Printer -Name "HPPrinter" -Shared $false

2. 查询打印机共享状态

2.1 CMD 命令

  • 查看共享资源

    cmdCopy Code
    net share
  • 查看打印机是否共享

    cmdCopy Code
    net view \\计算机名

    例如,查看共享的打印机:

    cmdCopy Code
    net view \\Computer01

2.2 PowerShell 命令

  • 查看指定打印机的共享状态

    powershellCopy Code
    Get-Printer -Name "打印机名称" | Select-Object Name, Shared

    例如:

    powershellCopy Code
    Get-Printer -Name "HPPrinter" | Select-Object Name, Shared
  • 列出所有共享的打印机

    powershellCopy Code
    Get-WmiObject -Class Win32_Printer -Filter "Shared = 'True'" | Select-Object Name, SystemName

3. 添加共享打印机

3.1 CMD 命令

  • 通过网络路径添加共享打印机
    cmdCopy Code
    rundll32 printui.dll,PrintUIEntry /ga /n\\主机名\打印机名称
    例如,添加共享打印机 HPPrinter
    cmdCopy Code
    rundll32 printui.dll,PrintUIEntry /ga /n\\192.168.1.100\HPPrinter

3.2 PowerShell 命令

  • 添加共享打印机
    powershellCopy Code
    Add-Printer -ConnectionName "\\主机IP\打印机名称"
    例如:
    powershellCopy Code
    Add-Printer -ConnectionName "\\192.168.1.100\HPPrinter"

4. 启用/禁用打印机共享

4.1 CMD 命令

  • 启用共享

    cmdCopy Code
    net share "打印机名称" /grant:everyone,print
  • 禁用共享

    cmdCopy Code
    net share "打印机名称" /delete

4.2 PowerShell 命令

  • 启用共享

    powershellCopy Code
    Set-Printer -Name "打印机名称" -Shared $true
  • 禁用共享

    powershellCopy Code
    Set-Printer -Name "打印机名称" -Shared $false

5. 验证打印机共享状态

5.1 CMD 命令

  • 验证共享路径是否可用

    cmdCopy Code
    \\主机IP\打印机名称

    例如:

    cmdCopy Code
    \\192.168.1.100\HPPrinter
  • 查看共享打印机是否已连接

    cmdCopy Code
    net view \\主机IP

    例如:

    cmdCopy Code
    net view \\192.168.1.100

5.2 PowerShell 命令

  • 验证共享路径是否可用
    powershellCopy Code
    Test-Path "\\主机IP\打印机名称"
    例如:
    powershellCopy Code
    Test-Path "\\192.168.1.100\HPPrinter"

6. 检查主机防火墙是否放行445端口(SMB)

6.1 CMD 命令

  • 使用 netstat 命令查看端口开放情况

    cmdCopy Code
    netstat -an | findstr ":445"
  • 检查防火墙规则是否允许 SMB(445端口)

    cmdCopy Code
    netsh advfirewall firewall show rule name="File and Printer Sharing (SMB-In)"

6.2 PowerShell 命令

  • 检查防火墙规则是否允许 SMB(445端口)

    powershellCopy Code
    Get-NetFirewallRule -DisplayName "File and Printer Sharing (SMB-In)"
  • 检查端口 445 是否打开

    powershellCopy Code
    Test-NetConnection -ComputerName 主机IP -Port 445

    例如:

    powershellCopy Code
    Test-NetConnection -ComputerName 192.168.1.100 -Port 445

7. 确保设备在同一网络中

7.1 CMD 命令

  • 使用 ping 命令检查设备是否在同一网络
    cmdCopy Code
    ping 目标IP
    例如:
    cmdCopy Code
    ping 192.168.1.100

7.2 PowerShell 命令

  • 使用 Test-Connection 检查设备是否在同一网络
    powershellCopy Code
    Test-Connection -ComputerName 目标IP
    例如:
    powershellCopy Code
    Test-Connection -ComputerName 192.168.1.100

8. 验证共享权限设置

8.1 CMD 命令

  • 检查共享权限是否设置正确
    cmdCopy Code
    net share
    查看是否存在已共享的打印机以及相应的权限。

8.2 PowerShell 命令

  • 检查共享权限

    powershellCopy Code
    Get-WmiObject -Class Win32_Share | Select-Object Name, Path, Type
  • 查看打印机的共享权限设置

    powershellCopy Code
    Get-Printer -Name "打印机名称" | Select-Object Name, Shared, PrinterStatus

 

通过上述 CMDPowerShell 命令,您可以:

  1. 设置和管理打印机共享(启用/禁用/添加)。
  2. 查询打印机共享状态
  3. 验证打印机共享的连接
  4. 检查防火墙是否允许 445 端口
  5. 确保设备在同一网络内
  6. 验证共享权限是否正确设置

通过这些步骤,可以方便地管理 Windows 系统中的打印机共享与网络访问。


在 Windows 系统中,通过 CMDPowerShell 命令设置、查询、启用、禁用共享文件夹权限以及跨设备访问,涉及多个步骤,包括设置文件共享、验证共享状态、启用跨设备访问等。以下是通过 CMDPowerShell 操作这些功能的方法。

1. 启用文件和打印机共享

CMD 命令:

  1. 启用文件和打印机共享:

    cmdCopy Code
    netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes
  2. 启用文件共享:

    cmdCopy Code
    net share "共享文件夹名"="文件夹路径" /grant:everyone,FULL

    例如,要共享 D:\共享 文件夹:

    cmdCopy Code
    net share SharedFolder="D:\共享" /grant:everyone,FULL

PowerShell 命令:

  1. 启用文件和打印机共享:

    powershellCopy Code
    Set-NetFirewallRule -Name "FileAndPrinterSharing" -Enabled True
  2. 启用共享文件夹:

    powershellCopy Code
    New-SmbShare -Name "SharedFolder" -Path "D:\共享" -FullAccess Everyone

2. 查询共享文件夹

CMD 命令:

  1. 查看当前共享的文件夹:
    cmdCopy Code
    net share

PowerShell 命令:

  1. 查看共享文件夹:
    powershellCopy Code
    Get-SmbShare

3. 禁用文件共享

CMD 命令:

  1. 取消共享文件夹:
    cmdCopy Code
    net share SharedFolder /delete

PowerShell 命令:

  1. 取消共享文件夹:
    powershellCopy Code
    Remove-SmbShare -Name "SharedFolder"

4. 启用跨设备访问

跨设备访问通常指的是在不同的设备上访问共享的文件夹。这通常涉及到启用 SMB 协议,确保设备之间的共享设置已正确配置。

启用 SMB 1.0 协议(如果设备间不兼容较新的 SMB 协议)

PowerShell 命令:

  1. 启用 SMB 1.0 协议:

    powershellCopy Code
    Enable-WindowsOptionalFeature -Online -FeatureName "SMB1Protocol" -All
  2. 禁用 SMB 1.0 协议(如果不再需要)

    powershellCopy Code
    Disable-WindowsOptionalFeature -Online -FeatureName "SMB1Protocol" -NoRestart

启用 SMB 2.0 或更高版本协议

SMB 2.0 或更高版本通常默认启用,但如果需要,可以手动验证并启用:

  1. 启用 SMB 2.0:

    powershellCopy Code
    Set-SmbServerConfiguration -EnableSMB2Protocol $true
  2. 禁用 SMB 2.0:

    powershellCopy Code
    Set-SmbServerConfiguration -EnableSMB2Protocol $false

5. 验证共享文件夹是否可跨设备访问

CMD 命令:

通过 资源管理器 或直接在地址栏输入目标计算机的 IP 地址来验证文件夹是否可访问:

cmdCopy Code
\\192.168.1.105

如果一切设置正确,您将能够查看该计算机上的所有共享资源。

PowerShell 命令:

可以通过 Test-Path 来验证是否能够访问共享文件夹(假设你知道共享路径):

powershellCopy Code
Test-Path "\\192.168.1.105\SharedFolder"

如果返回 True,表示访问成功;如果返回 False,则表示没有访问权限或配置错误。

6. 配置文件共享的权限

共享文件夹权限控制可以通过 ICACLSNew-SmbShare 配置。

CMD 命令:

通过 ICACLS 设置共享文件夹权限:

cmdCopy Code
icacls "D:\共享" /grant Everyone:(OI)(CI)F

PowerShell 命令:

通过 New-SmbShare 设置权限:

powershellCopy Code
New-SmbShare -Name "SharedFolder" -Path "D:\共享" -FullAccess Everyone

 

  • 启用共享:通过 net share(CMD)或 New-SmbShare(PowerShell)启用文件夹共享。
  • 查询共享:使用 net share(CMD)或 Get-SmbShare(PowerShell)查看共享资源。
  • 禁用共享:使用 net share /delete(CMD)或 Remove-SmbShare(PowerShell)取消共享。
  • 跨设备访问:启用 SMB 协议,通过 IP 地址访问共享资源 \\192.168.1.105
  • 设置权限:使用 ICACLS(CMD)或 New-SmbShare(PowerShell)配置文件夹的权限。

通过这些步骤,你可以灵活地在 Windows 系统中管理共享文件夹,并确保跨设备访问的正确配置。


通过 ICACLS 命令在 CMD 或 PowerShell 中设置共享文件夹的权限,并启用网络发现和文件共享(不涉及密码保护),你需要遵循以下步骤。虽然 ICACLS 本身并不直接控制网络发现和文件共享设置,但你可以通过 ICACLS 来修改文件夹的共享权限。网络发现和文件共享的设置则需要通过其他命令或控制面板来完成。

1. 启用网络发现和文件共享

首先,需要启用网络发现和文件共享,可以通过控制面板手动设置,或者使用 PowerShell 脚本进行配置。

手动启用网络发现和文件共享

  1. 打开 控制面板
  2. 选择 网络和共享中心
  3. 点击 更改高级共享设置
  4. 在 "家庭或工作 (当前配置文件)" 下,勾选 启用网络发现 和 启用文件和打印机共享,并选择 无密码保护

使用 PowerShell 启用网络发现和文件共享

你也可以通过 PowerShell 来启用网络发现和文件共享:

powershellCopy Code
# 启用网络发现
Set-NetFirewallRule -Name "Core-NetDiscovery-ICMPv4-In" -Enabled True
Set-NetFirewallRule -Name "Core-NetDiscovery-ICMPv6-In" -Enabled True

# 启用文件和打印机共享
Set-NetFirewallRule -Name "FileAndPrinterSharing" -Enabled True

2. 共享文件夹并设置权限

接下来,你可以使用 ICACLS 来设置文件夹的权限。以下是对文件夹 D:\工程文档 设置读取和写入权限的操作:

CMD 或 PowerShell 设置权限

  1. 共享文件夹
    右键目标文件夹(如 D:\工程文档) -> 属性 -> 共享 -> 高级共享,启用文件共享,并设置共享权限为 读取/写入

  2. 使用 ICACLS 设置文件夹权限
    打开 CMDPowerShell,使用以下命令来设置共享文件夹的权限。

给所有用户添加读取和写入权限:

bashCopy Code
icacls "D:\工程文档" /grant Everyone:(OI)(CI)F
  • OI: 对文件夹中的文件对象继承权限
  • CI: 对文件夹中的子文件夹继承权限
  • F: 完全控制权限

设置文件夹为只读或修改权限:

如果你只希望授予 读取/写入 权限,而不是完全控制,可以改成如下:

bashCopy Code
icacls "D:\工程文档" /grant Everyone:(OI)(CI)M
  • M: 修改权限(允许读取、写入、执行)

3. 允许无密码保护

对于家庭网络环境,可以选择无密码保护,这意味着网络中的计算机可以无需提供密码即可访问共享文件夹。虽然 ICACLS 不能直接配置无密码保护,但你可以在 控制面板 中启用这个设置,或者在 PowerShell 中使用以下命令来禁用密码保护:

禁用密码保护(PowerShell):

powershellCopy Code
Set-SmbServerConfiguration -RequireSecuritySignature $false -EncryptData $false
  • 启用网络发现和文件共享:使用控制面板或 PowerShell。
  • 共享文件夹并设置权限:通过 ICACLS 设置文件夹的访问权限,如读取、写入或完全控制。
  • 无密码保护:手动在控制面板中选择 无密码保护,或通过 PowerShell 禁用相关安全设置。

通过这些步骤,你可以在 Windows 环境中配置共享文件夹,并设置适当的权限,以实现无密码保护的家庭网络共享。


 


表格化的“Function Discovery Resource Publication”、“SSDP Discovery”和“UPnP Device Host”这三项技术的描述和应用场景:

功能/技术 描述 应用场景
Function Discovery Resource Publication 该功能允许计算机通过网络广播自己的资源(如打印机、共享文件夹等),让其他设备能够发现它。 常用于局域网内的设备自动发现和资源共享,适用于家庭网络中的文件共享、打印机共享等。
SSDP Discovery 简单服务发现协议(SSDP)是一种基于HTTP的协议,用于在局域网中发现设备和服务。 在家庭或办公室中,自动发现支持SSDP协议的设备(如智能电视、音响、打印机等),并进行控制或访问。
UPnP Device Host 通用即插即用(UPnP)设备主机提供一个平台,允许设备在网络中自动发现并配置自身。 用于智能家居设备,如智能灯泡、智能摄像头等设备的自动发现与配置,减少手动设置和配置的需求。

详细说明:

  1. Function Discovery Resource Publication

    • 描述:该功能使得设备能够在网络中公开自己的资源,其他设备可以通过这些资源进行交互。它通常依赖于Windows的功能发现协议。
    • 应用场景:例如,在家庭或公司网络中,用户能够轻松发现和使用共享文件夹、打印机、网络存储等资源。
  2. SSDP Discovery

    • 描述:SSDP(Simple Service Discovery Protocol)是一种轻量级的协议,通常基于HTTP,用于设备和服务在局域网内的自动发现。
    • 应用场景:在家庭自动化中,设备如智能音响、家居控制面板等可以通过SSDP自动被识别和连接,用户无需手动配置设备的网络设置。
  3. UPnP Device Host

    • 描述:UPnP(Universal Plug and Play)是一种允许设备在网络中发现和互相通信的协议,支持设备自动配置和共享资源。
    • 应用场景:智能家居环境中,用户可以通过UPnP协议自动发现设备(如智能电视、路由器、网络打印机)并进行控制,简化了设备的安装和管理。

CMDPowerShell 中,可以通过不同的命令来进行设置、查询、添加、启用、禁用服务,以及验证服务状态。以下是您需要的操作和相关命令,用于服务状态检测,尤其是关于 Function Discovery Resource PublicationSSDP DiscoveryUPnP Device Host 这些服务。


1. 服务状态检测(使用 CMD)

查看服务状态

CMD 中,使用 sc query 命令来查看服务状态:

cmdCopy Code
sc query "Function Discovery Resource Publication"
sc query "SSDP Discovery"
sc query "UPnP Device Host"

这会返回每个服务的当前状态,通常返回如下状态:

  • RUNNING 表示服务正在运行。
  • STOPPED 表示服务没有运行。

启用或启动服务

如果服务处于 STOPPED 状态,可以使用 net start 命令启动服务:

cmdCopy Code
net start "Function Discovery Resource Publication"
net start "SSDP Discovery"
net start "UPnP Device Host"

禁用服务

如果需要禁用这些服务,可以使用 sc config 命令:

cmdCopy Code
sc config "Function Discovery Resource Publication" start= disabled
sc config "SSDP Discovery" start= disabled
sc config "UPnP Device Host" start= disabled

注意: start= 后面有一个空格。否则,命令不会生效。

停止服务

如果服务正在运行并且您需要停止它,可以使用 net stop 命令:

cmdCopy Code
net stop "Function Discovery Resource Publication"
net stop "SSDP Discovery"
net stop "UPnP Device Host"

2. 服务状态检测(使用 PowerShell)

查看服务状态

PowerShell 中,使用 Get-Service 命令来查看服务状态:

powershellCopy Code
Get-Service -Name "Function Discovery Resource Publication"
Get-Service -Name "SSDP Discovery"
Get-Service -Name "UPnP Device Host"

这将显示每个服务的 Status(状态),例如 RunningStopped

启用或启动服务

如果服务处于停止状态,您可以使用 Start-Service 来启动它:

powershellCopy Code
Start-Service -Name "Function Discovery Resource Publication"
Start-Service -Name "SSDP Discovery"
Start-Service -Name "UPnP Device Host"

禁用服务

如果您希望禁用这些服务,可以使用 Set-Service 来修改服务启动类型:

powershellCopy Code
Set-Service -Name "Function Discovery Resource Publication" -StartupType Disabled
Set-Service -Name "SSDP Discovery" -StartupType Disabled
Set-Service -Name "UPnP Device Host" -StartupType Disabled

停止服务

如果服务正在运行并且需要停止它,可以使用 Stop-Service

powershellCopy Code
Stop-Service -Name "Function Discovery Resource Publication"
Stop-Service -Name "SSDP Discovery"
Stop-Service -Name "UPnP Device Host"

3. 总结:CMD 与 PowerShell 操作

1. 使用 CMD:

  • 查询服务状态:
    cmdCopy Code
    sc query "服务名称"
  • 启动服务:
    cmdCopy Code
    net start "服务名称"
  • 禁用服务:
    cmdCopy Code
    sc config "服务名称" start= disabled
  • 停止服务:
    cmdCopy Code
    net stop "服务名称"

2. 使用 PowerShell:

  • 查询服务状态:
    powershellCopy Code
    Get-Service -Name "服务名称"
  • 启动服务:
    powershellCopy Code
    Start-Service -Name "服务名称"
  • 禁用服务:
    powershellCopy Code
    Set-Service -Name "服务名称" -StartupType Disabled
  • 停止服务:
    powershellCopy Code
    Stop-Service -Name "服务名称"

4. 运行 services.msc 检查服务状态

您还可以使用 services.msc 来检查服务状态。只需在 运行窗口CMD/PowerShell 中输入 services.msc 并按回车键,这将打开 服务管理器,您可以在此查看和管理服务。

服务管理器 中,找到以下服务:

  • Function Discovery Resource Publication
  • SSDP Discovery
  • UPnP Device Host

您可以右键点击这些服务并选择 启动停止禁用设置为自动 等操作。


通过这些方法,您可以轻松地设置、查询、启用、禁用以及验证服务状态,确保相关服务按需正常运行。


要在 CMDPowerShell 中查询、添加、启用、禁用、验证和检查 Windows 防火墙配置,确保 “文件和打印机共享” 在 专用公用 网络中被放行,可以使用以下方法。

1. 查询防火墙配置

使用 CMD 查询“文件和打印机共享”规则

cmdCopy Code
netsh advfirewall firewall show rule name="File and Printer Sharing"

此命令会显示 "文件和打印机共享" 防火墙规则的详细信息,显示是否启用,以及应用于哪些网络配置(例如,专用、公用)。

使用 PowerShell 查询“文件和打印机共享”规则

powershellCopy Code
Get-NetFirewallRule -DisplayName "File and Printer Sharing"

此命令会列出“文件和打印机共享”规则的详细信息,包括其启用状态、方向、动作和应用的配置文件。

2. 添加或启用防火墙规则

使用 CMD 启用“文件和打印机共享”规则

cmdCopy Code
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes

此命令会确保“文件和打印机共享”规则在防火墙中启用。

使用 PowerShell 启用“文件和打印机共享”规则

powershellCopy Code
Enable-NetFirewallRule -DisplayName "File and Printer Sharing"

此命令启用 "文件和打印机共享" 防火墙规则。

3. 禁用防火墙规则

使用 CMD 禁用“文件和打印机共享”规则

cmdCopy Code
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=No

此命令会禁用“文件和打印机共享”规则。

使用 PowerShell 禁用“文件和打印机共享”规则

powershellCopy Code
Disable-NetFirewallRule -DisplayName "File and Printer Sharing"

此命令禁用 "文件和打印机共享" 防火墙规则。

4. 验证防火墙规则

使用 CMD 验证“文件和打印机共享”规则

cmdCopy Code
netsh advfirewall firewall show rule name="File and Printer Sharing"

此命令会显示当前“文件和打印机共享”规则的状态,验证其是否已启用。

使用 PowerShell 验证“文件和打印机共享”规则

powershellCopy Code
Get-NetFirewallRule -DisplayName "File and Printer Sharing" | Select-Object Name, Enabled, Direction, Action

此命令会显示“文件和打印机共享”规则的启用状态和其他相关信息。

5. 检查专用/公用网络配置

使用 CMD 检查防火墙规则的适用网络配置

cmdCopy Code
netsh advfirewall firewall show rule name="File and Printer Sharing" profile

此命令会显示 "文件和打印机共享" 规则适用的网络配置文件,如专用、公用、域等。

使用 PowerShell 检查防火墙规则的适用网络配置

powershellCopy Code
Get-NetFirewallRule -DisplayName "File and Printer Sharing" | Select-Object Name, Profile

此命令会列出 "文件和打印机共享" 规则适用的网络配置文件。

6. 启用防火墙(如果需要)

使用 CMD 启用防火墙

cmdCopy Code
netsh advfirewall set allprofiles state on

此命令会启用所有配置文件(域、私有、公用)上的 Windows 防火墙。

使用 PowerShell 启用防火墙

powershellCopy Code
Set-NetFirewallProfile -All -Enabled True

此命令会启用所有防火墙配置文件。

 

  • 查询防火墙规则:使用 netsh advfirewall firewall show rule 或 Get-NetFirewallRule 命令。
  • 启用规则:使用 netsh advfirewall firewall set rule 或 Enable-NetFirewallRule 命令。
  • 禁用规则:使用 netsh advfirewall firewall set rule 或 Disable-NetFirewallRule 命令。
  • 检查网络配置:使用 netsh advfirewall firewall show rule profile 或 Get-NetFirewallRule | Select-Object Profile 命令。
  • 启用防火墙:使用 netsh advfirewall set allprofiles state on 或 Set-NetFirewallProfile 命令。

这些命令可帮助你确保“文件和打印机共享”规则在专用和公用网络中被正确放行。


CMDPowerShell 中执行高级共享操作(如映射网络驱动器、快速共享、以及安全共享设置),你可以使用以下命令和技巧:

1. 映射网络驱动器:将共享文件夹设为固定盘符

在 CMD 中映射网络驱动器:

cmdCopy Code
net use Z: \\服务器名\共享文件夹 /persistent:yes
  • Z: 是映射的盘符,你可以根据需要选择不同的字母。
  • \服务器名\共享文件夹 是你想要映射的共享文件夹路径。
  • /persistent:yes 表示使映射持久化,重启后仍然保持。

在 PowerShell 中映射网络驱动器:

powershellCopy Code
New-PSDrive -Name Z -PSProvider FileSystem -Root \\服务器名\共享文件夹 -Persist
  • Z 是你映射的盘符。
  • \服务器名\共享文件夹 是共享文件夹的路径。
  • -Persist 使得映射在系统重启后依然有效。

2. 快速共享:右键文件 -> 共享 -> 选择特定用户

在 Windows 中,右键单击文件或文件夹,选择 "共享" -> "特定用户",然后你可以选择想要共享文件的特定用户。这个操作是图形化的,不需要命令行。不过,你也可以使用命令行创建共享:

在 CMD 中创建共享:

cmdCopy Code
net share 共享名=共享路径

例如,将 D:\SharedFolder 共享为 MyShare

cmdCopy Code
net share MyShare=D:\SharedFolder

在 PowerShell 中创建共享:

powershellCopy Code
New-SmbShare -Name "MyShare" -Path "D:\SharedFolder" -FullAccess "Everyone"
  • MyShare 是共享的名字。
  • D:\SharedFolder 是共享的路径。
  • -FullAccess "Everyone" 表示为所有用户提供完全访问权限,你可以根据需求设置其他权限(例如,-ReadAccess-ChangeAccess)。

3. 安全共享建议:使用“特定用户”权限控制

为了确保只有特定用户能访问共享文件夹,你可以使用 权限控制 来限制对共享文件夹的访问。

在 CMD 中设置共享权限:

cmdCopy Code
net share MyShare=D:\SharedFolder /grant:用户名,FULL
  • 用户名 是你想要授予访问权限的用户。
  • FULL 表示授予完全访问权限,其他选项还包括 READ(只读)和 CHANGE(读写)。

在 PowerShell 中设置共享权限:

powershellCopy Code
Set-SmbShare -Name "MyShare" -FolderEnumerationMode AccessBased
Set-SmbShareAccess -Name "MyShare" -AccountName "用户名" -AccessRight Full
  • -FolderEnumerationMode AccessBased 确保只有拥有权限的用户可以看到共享内容。
  • Set-SmbShareAccess 用来设置共享文件夹的权限,Full 表示完全访问权限,你可以根据需求调整权限设置。

4. 验证与检查共享状态

在 CMD 中查看共享列表:

cmdCopy Code
net share

此命令将列出当前计算机上所有的共享文件夹及其状态。

在 PowerShell 中查看共享列表:

powershellCopy Code
Get-SmbShare

此命令会列出所有的共享文件夹和相关的共享设置。

5. 添加、启用、禁用共享

在 CMD 中启用共享:

cmdCopy Code
net share MyShare=D:\SharedFolder

在 PowerShell 中启用共享:

powershellCopy Code
New-SmbShare -Name "MyShare" -Path "D:\SharedFolder" -FullAccess "Everyone"

在 CMD 中禁用共享:

cmdCopy Code
net share MyShare /delete

在 PowerShell 中禁用共享:

powershellCopy Code
Remove-SmbShare -Name "MyShare"

6. 安全建议:控制特定用户权限

共享敏感文件时,确保仅允许特定用户访问,避免将权限设置为 "Everyone" 或广泛访问权限。

在 PowerShell 中使用“特定用户”权限设置:

powershellCopy Code
Set-SmbShareAccess -Name "MyShare" -AccountName "用户名" -AccessRight Read
  • -AccessRight Read 表示授予只读权限,你可以将其替换为 Full(完全访问)或 Change(读写权限)来调整权限。

7. 检查共享状态

在 PowerShell 中查看共享权限:

powershellCopy Code
Get-SmbShareAccess -Name "MyShare"

此命令会列出所有用户对 MyShare 共享文件夹的访问权限。

  • 映射网络驱动器:使用 net use 或 New-PSDrive
  • 快速共享:通过右键菜单共享或使用 net shareNew-SmbShare
  • 权限控制:使用 net share /grant 或 Set-SmbShareAccess 来设置特定用户的访问权限。
  • 安全性:避免使用广泛的权限(如 "Everyone"),尽量使用精确的用户权限控制。

这些命令和技巧有助于你在 Windows 中进行高效的文件共享与管理。


在 Windows 中,ICACLS 是一个命令行工具,用于修改文件和文件夹的访问控制列表(ACL)。你可以使用 ICACLS 在 CMD 或 PowerShell 中来设置、查询、添加启用/禁用权限以及验证文件夹权限。

1. 查询权限

查询共享文件夹或文件的权限信息。

CMD 或 PowerShell 查询命令:

bashCopy Code
icacls "C:\path\to\shared\folder"

这个命令会显示指定文件夹或文件的所有访问权限和用户。

2. 设置权限

设置文件夹或文件的权限。你可以通过 ICACLS 指定允许或拒绝权限。

CMD 或 PowerShell 设置命令:

bashCopy Code
icacls "C:\path\to\shared\folder" /grant 用户名:(权限)

例如,给用户 User1 赋予 读取 权限:

bashCopy Code
icacls "C:\path\to\shared\folder" /grant User1:(R)

其中权限标志包括:

  • (F) 完全控制
  • (M) 修改
  • (RX) 读取和执行
  • (R) 读取
  • (W) 写入

3. 添加权限

如果你想添加额外的权限而不删除现有权限,可以使用 icacls/grant/inheritance 选项。

CMD 或 PowerShell 添加权限命令:

bashCopy Code
icacls "C:\path\to\shared\folder" /grant 用户名:(权限)

例如,给 User1 用户添加完全控制权限:

bashCopy Code
icacls "C:\path\to\shared\folder" /grant User1:(F)

4. 启用或禁用权限继承

你可以使用 icacls 启用或禁用文件夹的权限继承(继承允许文件夹从其父文件夹继承权限)。

启用继承:

bashCopy Code
icacls "C:\path\to\shared\folder" /inheritance:e

禁用继承:

bashCopy Code
icacls "C:\path\to\shared\folder" /inheritance:d

5. 验证权限

icacls 可以验证某个用户或组的访问权限。通过以下命令,你可以查看某个用户对指定文件夹的访问权限。

CMD 或 PowerShell 验证命令:

bashCopy Code
icacls "C:\path\to\shared\folder" /verify

这个命令会检查文件夹的访问控制信息,验证是否有任何问题。

6. 删除权限

如果你需要删除某个用户或组的权限,可以使用 /remove

删除权限:

bashCopy Code
icacls "C:\path\to\shared\folder" /remove 用户名

7. 应用命令到所有文件

如果你希望递归地对文件夹内的所有文件和子文件夹应用命令,可以使用 /T 选项。

递归设置权限:

bashCopy Code
icacls "C:\path\to\shared\folder" /grant User1:(F) /T

这个命令会将完全控制权限应用到该文件夹及其所有子文件夹和文件。

ICACLS 提供了强大的功能来管理和配置 Windows 文件和文件夹的权限。通过它,你可以查询、设置、启用/禁用权限、验证权限并进行其他权限相关操作。无论是通过 CMD 还是 PowerShell 都可以使用相同的命令。


问题分析与解决

针对用户A无法访问共享打印机、用户B看不到邻居电脑、以及用户C访问共享文件夹时提示权限错误,以下是根据您的需求,分别使用 CMD 命令PowerShell 命令 来进行排查和修复的步骤。


1. 用户A无法访问共享打印机:检测主机电源状态及Spooler服务是否运行

1.1 CMD 命令

检测主机电源状态

通过 ping 命令检测主机是否正常在线。

cmdCopy Code
ping 目标IP

例如,检测 IP 为 192.168.1.100 的主机:

cmdCopy Code
ping 192.168.1.100

如果收到回复,表示主机在线。如果没有回复,可能是电源关闭、网络问题或设备故障。

检查 Spooler 服务是否运行

Spooler 服务用于打印管理,确保它运行是必要的。

cmdCopy Code
sc query spooler

若返回 RUNNING 状态,表示 Spooler 服务已启动。如果显示为 STOPPED,则需要启动该服务:

cmdCopy Code
net start spooler

1.2 PowerShell 命令

检测主机电源状态

powershellCopy Code
Test-Connection -ComputerName 目标IP

例如,检测 IP 为 192.168.1.100 的主机:

powershellCopy Code
Test-Connection -ComputerName 192.168.1.100

如果设备在线,将返回结果,表示主机正常运行。

检查 Spooler 服务是否运行

powershellCopy Code
Get-Service -Name spooler

如果服务状态为 Running,表示 Spooler 服务正在运行。如果需要启动服务:

powershellCopy Code
Start-Service -Name spooler

2. 用户B看不到邻居电脑:对比IP是否同网段(如192.168.1.x)

2.1 CMD 命令

检查邻居电脑的IP是否在同一网段

检查自己电脑的 IP 地址:

cmdCopy Code
ipconfig

输出结果中的 IPv4 地址 会显示自己的 IP 地址。例如 192.168.1.101。确保邻居电脑的 IP 地址在相同的子网内(如 192.168.1.x)。

Ping 测试

确保本地和邻居电脑在同一网络段后,尝试通过 ping 命令测试连通性:

cmdCopy Code
ping 192.168.1.102

例如,邻居电脑的 IP 为 192.168.1.102。如果没有回复,可能是网络配置或防火墙阻止了连接。

2.2 PowerShell 命令

检查本机 IP 地址

powershellCopy Code
Get-NetIPAddress

查看本机的 IP 地址和网络段。

Ping 邻居电脑

powershellCopy Code
Test-Connection -ComputerName 192.168.1.102

如果能够成功连通,表示设备在同一网络段内。如果不能,则需要检查网络配置或防火墙设置。


3. 用户C访问提示权限错误:检查共享文件夹的 NTFS 权限设置

3.1 CMD 命令

查看共享文件夹的权限

cmdCopy Code
net share

通过此命令可以查看当前主机上的所有共享文件夹。如果共享文件夹设置不当,检查是否存在对该文件夹的共享权限设置错误。

查看文件夹的 NTFS 权限

使用 icacls 命令查看文件夹的 NTFS 权限:

cmdCopy Code
icacls "C:\共享文件夹路径"

该命令会显示文件夹的 NTFS 权限信息,确保用户C的访问权限是否正确。

3.2 PowerShell 命令

查看共享文件夹的权限

powershellCopy Code
Get-WmiObject -Class Win32_Share

此命令显示所有共享的文件夹信息。

查看 NTFS 权限设置

使用 Get-Acl 命令查看指定文件夹的权限设置:

powershellCopy Code
Get-Acl "C:\共享文件夹路径" | Format-List

此命令可以显示文件夹的详细 NTFS 权限,检查是否已正确配置用户C的访问权限。


4. 总结

1. 用户A无法访问共享打印机:

  • CMD: ping 检查主机状态,sc query spooler 确认打印服务状态。
  • PowerShell: Test-Connection 检查主机状态,Get-Service -Name spooler 检查 Spooler 服务状态。

2. 用户B看不到邻居电脑:

  • CMD: ipconfig 检查网段,ping 检查网络连接。
  • PowerShell: Get-NetIPAddress 查看 IP 地址,Test-Connection 测试连通性。

3. 用户C访问提示权限错误:

  • CMD: net share 查看共享文件夹权限,icacls 检查 NTFS 权限。
  • PowerShell: Get-WmiObject -Class Win32_Share 查看共享,Get-Acl 查看 NTFS 权限。

通过这些命令,你可以排查并解决共享打印机和网络访问中的问题。


 

 

ICACLS 是一个在 CMDPowerShell 中都能使用的命令,用于设置文件夹和文件的访问控制列表(ACL),包括查询、修改、启用、禁用权限。以下是有关 共享文件夹 权限管理的完整示例,包括如何查询、添加、启用、禁用权限及验证检查。

1. ICACLS 基本命令

查询文件夹权限

要查询共享文件夹的当前权限,使用以下命令:

cmdCopy Code
icacls "C:\共享文件夹路径"

该命令会列出所有有权限的用户及其对应的权限。

添加权限

要向文件夹添加特定用户的权限,可以使用以下命令:

cmdCopy Code
icacls "C:\共享文件夹路径" /grant 用户名:(权限)
  • 例如,给 user1 添加读取权限:
    cmdCopy Code
    icacls "C:\共享文件夹" /grant user1:(R)
  • 其他常见权限:
    • F: 完全控制(Full Control)
    • M: 修改(Modify)
    • R: 读取(Read)
    • W: 写入(Write)

启用或禁用继承

文件夹权限可以设置为继承父文件夹的权限。启用继承:

cmdCopy Code
icacls "C:\共享文件夹" /inheritance:e

禁用继承(不再继承父文件夹的权限):

cmdCopy Code
icacls "C:\共享文件夹" /inheritance:d

删除权限

要删除某个用户的权限:

cmdCopy Code
icacls "C:\共享文件夹" /remove 用户名

例如,删除 user1 的权限:

cmdCopy Code
icacls "C:\共享文件夹" /remove user1

修改权限

要修改已有的权限,可以使用 /grant/deny 来指定新的权限:

  • 给 user1 添加完全控制权限:
    cmdCopy Code
    icacls "C:\共享文件夹" /grant user1:(F)

重设权限为默认

重设文件夹的权限(恢复为默认权限):

cmdCopy Code
icacls "C:\共享文件夹" /reset

2. PowerShell 命令

PowerShell 中也可以使用 icacls 命令,但 PowerShell 提供了更强大的权限管理功能,可以使用 Get-AclSet-Acl 来操作文件夹权限。

查询文件夹权限

在 PowerShell 中,可以通过 Get-Acl 来查看文件夹的权限:

powershellCopy Code
Get-Acl "C:\共享文件夹"

设置文件夹权限

设置文件夹权限类似于使用 icacls,不过 PowerShell 通常结合 Set-Acl 来操作。首先,获取现有权限:

powershellCopy Code
$acl = Get-Acl "C:\共享文件夹"

然后修改权限:

powershellCopy Code
$permission = "user1","Read"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($permission[0],$permission[1],"Allow")
$acl.AddAccessRule($accessRule)
Set-Acl "C:\共享文件夹" $acl

启用或禁用继承

PowerShell 中启用或禁用继承,可以通过 SetAccessRuleProtection 来设置:

powershellCopy Code
$acl.SetAccessRuleProtection($true, $false)  # 禁用继承
$acl.SetAccessRuleProtection($false, $true)  # 启用继承
Set-Acl "C:\共享文件夹" $acl

删除权限

要删除某个用户的权限,可以使用 RemoveAccessRule 来移除:

powershellCopy Code
$acl.RemoveAccessRule($accessRule)
Set-Acl "C:\共享文件夹" $acl

重设权限

PowerShell 中没有直接的重设命令,但可以通过读取和写入默认的权限来重设:

powershellCopy Code
$acl = Get-Acl "C:\共享文件夹"
$acl.SetAccessRuleProtection($false, $true)  # 重设权限为继承
Set-Acl "C:\共享文件夹" $acl

3. 权限示例

查询权限

  • CMD:
    cmdCopy Code
    icacls "C:\共享文件夹"
  • PowerShell:
    powershellCopy Code
    Get-Acl "C:\共享文件夹"

添加权限

  • CMD:
    cmdCopy Code
    icacls "C:\共享文件夹" /grant user1:(F)   # 完全控制
  • PowerShell:
    powershellCopy Code
    $acl = Get-Acl "C:\共享文件夹"
    $permission = "user1","FullControl"
    $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($permission[0],$permission[1],"Allow")
    $acl.AddAccessRule($accessRule)
    Set-Acl "C:\共享文件夹" $acl

禁用继承

  • CMD:
    cmdCopy Code
    icacls "C:\共享文件夹" /inheritance:d
  • PowerShell:
    powershellCopy Code
    $acl.SetAccessRuleProtection($true, $false)
    Set-Acl "C:\共享文件夹" $acl

删除权限

  • CMD:
    cmdCopy Code
    icacls "C:\共享文件夹" /remove user1
  • PowerShell:
    powershellCopy Code
    $acl.RemoveAccessRule($accessRule)
    Set-Acl "C:\共享文件夹" $acl

重设权限

  • CMD:
    cmdCopy Code
    icacls "C:\共享文件夹" /reset
  • PowerShell:
    powershellCopy Code
    $acl.SetAccessRuleProtection($false, $true) # 启用继承,重设权限
    Set-Acl "C:\共享文件夹" $acl

4. 验证和检查权限

要验证权限是否正确设置,可以使用以下方法:

使用 icacls 验证权限

  • CMD:
    cmdCopy Code
    icacls "C:\共享文件夹"
    输出会显示当前所有用户的权限。如果权限修改成功,应该能看到您所添加或删除的权限。

使用 PowerShell 验证权限

  • PowerShell:
    powershellCopy Code
    Get-Acl "C:\共享文件夹" | Format-List
    这会列出该文件夹的所有权限设置和用户。

通过这些命令,您可以全面管理共享文件夹的权限,包括查询、添加、启用/禁用继承、删除权限以及验证设置。

 


 

 

在 Windows 系统中,权限控制基于计算机名、域、用户或组的身份进行。通过 CMD 和 PowerShell 命令,您可以设置文件夹或文件的访问控制,管理用户或计算机的权限。以下是如何通过 CMDPowerShell 实现基于计算机名、域、和用户/组身份的权限控制。

1. 通过 CMD 设置权限

在 CMD 中,我们使用 icacls 命令来设置文件或文件夹的权限。

示例 1:为某个用户或组设置文件夹权限

假设您有一个文件夹 C:\共享文件夹,并希望为域中某个用户(例如,DOMAIN\User1)授予完全控制权限。

cmdCopy Code
icacls "C:\共享文件夹" /grant "DOMAIN\User1":(F)
  • icacls:用于管理文件和文件夹的访问控制列表(ACL)。
  • "C:\共享文件夹":目标文件夹路径。
  • /grant:授予权限。
  • "DOMAIN\User1":用户或组(此处为域中的用户)。
  • (F):完全控制权限。其他常用权限包括:
    • (M):修改权限
    • (RX):读取和执行权限
    • (R):读取权限
    • (W):写入权限

示例 2:为计算机名设置权限

如果您想为一个计算机授予文件夹访问权限,可以通过计算机名来指定:

cmdCopy Code
icacls "C:\共享文件夹" /grant "Computer1\user1":(F)
  • Computer1\user1:指定计算机 Computer1 上的用户 user1

示例 3:撤销用户的访问权限

要撤销某个用户或组对文件夹的权限,可以使用 /remove 参数:

cmdCopy Code
icacls "C:\共享文件夹" /remove "DOMAIN\User1"
  • /remove:撤销指定用户或组的权限。

2. 通过 PowerShell 设置权限

在 PowerShell 中,您可以使用 Get-AclSet-Acl 命令来查看和修改文件夹或文件的访问控制列表(ACL)。另外,使用 New-Object System.Security.AccessControl.FileSystemAccessRule 可以为特定用户或组创建新的访问控制规则。

示例 1:查看文件夹的当前权限

要查看某个文件夹的权限,您可以使用 Get-Acl

powershellCopy Code
$acl = Get-Acl "C:\共享文件夹"
$acl

这将显示 C:\共享文件夹 的当前权限配置。

示例 2:为用户授予权限

假设您想为域中的某个用户 DOMAIN\User1 授予完全控制权限,您可以按如下方式操作:

powershellCopy Code
# 获取文件夹的当前 ACL
$acl = Get-Acl "C:\共享文件夹"

# 创建一个新的访问控制规则,允许用户 User1 完全控制
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("DOMAIN\User1", "FullControl", "Allow")

# 将新规则添加到文件夹的 ACL
$acl.AddAccessRule($accessRule)

# 设置新的 ACL
Set-Acl "C:\共享文件夹" $acl

示例 3:为计算机名授予权限

如果要为计算机名上的用户授予权限,可以通过计算机名来指定:

powershellCopy Code
# 获取文件夹的当前 ACL
$acl = Get-Acl "C:\共享文件夹"

# 创建一个新的访问控制规则,允许计算机 Computer1 上的用户 user1 完全控制
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("Computer1\user1", "FullControl", "Allow")

# 将新规则添加到文件夹的 ACL
$acl.AddAccessRule($accessRule)

# 设置新的 ACL
Set-Acl "C:\共享文件夹" $acl

示例 4:撤销用户的访问权限

如果要撤销某个用户或组的权限,可以使用 RemoveAccessRule 方法:

powershellCopy Code
# 获取文件夹的当前 ACL
$acl = Get-Acl "C:\共享文件夹"

# 创建要撤销的访问控制规则
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("DOMAIN\User1", "FullControl", "Allow")

# 从 ACL 中移除规则
$acl.RemoveAccessRule($accessRule)

# 设置新的 ACL
Set-Acl "C:\共享文件夹" $acl

 

通过 icacls 和 PowerShell,您可以灵活地为计算机、域、用户或组设置文件和文件夹的访问权限。关键命令如下:

  • CMD 中

    • icacls 用于授予、撤销、查看权限。
    • 通过 "/grant" 授予权限,"/remove" 撤销权限。
  • PowerShell 中

    • Get-Acl 和 Set-Acl 用于查看和设置 ACL。
    • 使用 New-Object System.Security.AccessControl.FileSystemAccessRule 创建新的访问规则。

通过这些命令,您可以根据计算机名、域名、用户、组等身份来精确控制访问权限。


实现“开机自动映射工作组中计算机名并设置文件夹权限”,可以使用 CMDPowerShell 命令来完成该任务。下面是如何在计算机启动时自动映射工作组中的计算机名并设置文件夹权限的步骤。

步骤 1:设置自动映射工作组中的共享文件夹

我们假设工作组中的共享文件夹已配置好,并且目标计算机可以访问这些共享文件夹。为了实现自动映射工作组中的计算机共享文件夹,你可以通过以下命令在开机时映射网络驱动器。

1.1 使用 CMD 来映射网络驱动器

CMD 命令:使用 net use 命令来映射工作组中的计算机共享文件夹。

cmdCopy Code
net use Z: \\ComputerName\SharedFolder /user:Username Password
  • Z::映射的本地驱动器字母。
  • \\ComputerName\SharedFolder:目标计算机的共享文件夹路径。
  • /user:Username Password:指定用户名和密码。如果是匿名共享,也可以省略该部分。

1.2 使用 PowerShell 来映射网络驱动器

PowerShell 中,使用 New-PSDrive 命令来映射网络驱动器。

powershellCopy Code
New-PSDrive -Name "Z" -PSProvider FileSystem -Root "\\ComputerName\SharedFolder" -Persist -Credential (New-Object System.Management.Automation.PSCredential("Username", (ConvertTo-SecureString "Password" -AsPlainText -Force)))
  • -Name "Z":映射的本地驱动器字母。
  • -Root "\\ComputerName\SharedFolder":目标计算机的共享文件夹路径。
  • -Persist:确保驱动器在重启后保持映射。
  • -Credential:指定用户名和密码。可以将 Username 和 Password 替换为实际的凭据。

步骤 2:设置文件夹权限

在设置文件夹权限时,我们可以使用 CMDPowerShell 来控制文件夹的访问权限。

2.1 使用 CMD 设置文件夹权限

使用 icacls 命令可以修改文件夹的访问权限。例如,要为某个用户或组设置完全控制权限:

cmdCopy Code
icacls "Z:\SharedFolder" /grant "DOMAIN\User1":(F)
  • "Z:\SharedFolder":指定映射的共享文件夹路径。
  • /grant "DOMAIN\User1":(F):为 User1 用户授予完全控制权限。

2.2 使用 PowerShell 设置文件夹权限

在 PowerShell 中,您可以使用 Get-AclSet-Acl 配合 FileSystemAccessRule 来设置文件夹权限。例如:

powershellCopy Code
$acl = Get-Acl "Z:\SharedFolder"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("DOMAIN\User1", "FullControl", "Allow")
$acl.AddAccessRule($accessRule)
Set-Acl "Z:\SharedFolder" $acl
  • Get-Acl 获取当前文件夹的权限。
  • New-Object System.Security.AccessControl.FileSystemAccessRule 创建一个新的权限规则。
  • AddAccessRule 将规则应用于文件夹。
  • Set-Acl 更新文件夹的权限。

步骤 3:确保命令在开机时自动执行

要使这些命令在计算机启动时自动执行,您可以将它们放入 启动脚本任务计划程序 中。

3.1 将脚本添加到启动文件夹

  1. 创建一个批处理文件或 PowerShell 脚本,将映射网络驱动器和设置权限的命令写入该脚本中。
  2. 将脚本添加到启动文件夹:
    按 Win + R,输入 shell:startup,然后将脚本文件复制到打开的文件夹中。

3.2 使用任务计划程序设置开机启动任务

  1. 打开 任务计划程序:在开始菜单中搜索“任务计划程序”,然后打开它。
  2. 在任务计划程序中,点击 创建基本任务
  3. 输入任务名称和描述,然后点击 下一步
  4. 选择 当计算机启动时,然后点击 下一步
  5. 选择 启动程序,然后浏览并选择您的批处理文件或 PowerShell 脚本。
  6. 完成任务设置。

这样,当计算机启动时,任务计划程序将自动执行您的映射和设置权限的命令。


 

通过使用 CMDPowerShell,您可以在开机时自动映射工作组中的计算机共享文件夹并设置文件夹权限。通过任务计划程序或启动文件夹,您可以确保这些任务在每次启动时自动执行。


 

posted @ 2025-03-23 05:45  suv789  阅读(222)  评论(0)    收藏  举报