fra*_*one 6 powershell smb samba windows-server docker
我正在尝试创建一个简单的 Docker 主机来尝试将容器用于某些 .net 项目。
我已经设置了一个 Windows Server 1803 主机并使用 powershell 安装了 Docker EE,它作为服务正确运行。
我想使用自 1709 年以来可用的新“SMB 全局映射”功能来映射我的域上的 samba 共享并在容器中使用它,而无需求助于 gMSA 或其他技巧,我希望它在重新启动时使用 docker 自动挂载和启动容器重新启动策略,就好像它们是 Windows 服务一样。
我运行这些命令,一切正常
$creds = Get-Credential
New-SmbGlobalMapping -RemotePath \\contosofileserver\share1 -Credential $creds -LocalPath G:
docker run -v G:/:G: -it test cmd.exe
Run Code Online (Sandbox Code Playgroud)
但是在主机重新启动后,G: 不再映射,因此我无法理想地将容器置于自动启动状态。我猜这是因为凭证没有在任何地方持久化,但即使在此之后,我怀疑 powershell 命令会使任何东西保持原样,也因为它缺少标准 New-SmbMapping 命令行开关的 -Persistent 参数。
对于那些在这New-SmbGlobalMapping方面绊倒的人,有一个Persistent需要设置为的标志$true,即
New-SmbGlobalMapping -Persistent $true -RemotePath \\contosofileserver\share1 -Credential $creds -LocalPath G:
Run Code Online (Sandbox Code Playgroud)
小智 6
我还将此 cmdlet 与 Windows Server 1803 和 Docker 一起使用。为了解决这个问题,我执行以下操作:
在 C:\data\smbshare.ps1 中创建此 PS1 脚本
$secpasswd = ConvertTo-SecureString 'password' -AsPlainText -Force;
$creds = New-Object System.Management.Automation.PSCredential ("domain\user", $secpasswd);
New-SmbGlobalMapping -RemotePath 'RemotePath' -Credential $creds -LocalPath X:;
Run Code Online (Sandbox Code Playgroud)
现在,创建一个以服务器 StartUP 开始的计划任务。我使用此 cmdlet 执行此操作:
$Action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument "-file C:\data\smbshare.ps1" -WorkingDirectory "C:\data";
$Trigger = New-ScheduledTaskTrigger -AtStartup;
$Settings = New-ScheduledTaskSettingsSet -DontStopOnIdleEnd -RestartInterval (New-TimeSpan -Minutes 1) -RestartCount 10 -StartWhenAvailable;
$Settings.ExecutionTimeLimit = "PT0S";
$SecurePassword = ConvertTo-SecureString 'password' -AsPlainText -Force;
$UserName = "domain\user";
$Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $UserName, $SecurePassword;
$Password = $Credentials.GetNetworkCredential().Password;
$Task = New-ScheduledTask -Action $Action -Trigger $Trigger -Settings $Settings;
$Task | Register-ScheduledTask -TaskName 'SMBGlobalShare' -User "domain\user" -Password $Password;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5415 次 |
| 最近记录: |