使用备用凭据通过WMI创建远程文件夹的PowerShell参数配置问题
WMI远程调用使用备用凭据的解决方案
你当前使用的[WMIClass]类型加速器不支持直接传入备用凭据,该语法默认使用当前登录用户的安全上下文发起WMI连接,需要改用支持-Credential参数的WMI/CIM cmdlet实现需求。
第一步:获取备用凭据
执行以下代码弹出交互窗口,输入具备远程计算机权限的用户名和密码:
$cred = Get-Credential
方案1:使用CIM cmdlet(推荐,兼容PowerShell 3.0及以上版本)
CIM cmdlet是微软官方推荐的WMI替代方案,兼容性和稳定性更好,代码示例如下:
$computer = "COMPUTERNAME" # 替换为目标计算机名 $pathname = "PATHNAME" # 替换为要创建的文件夹完整路径 # 调用CIM方法传递凭据执行创建操作 Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @{ CommandLine = "cmd.exe /c md $pathname" } -ComputerName $computer -Credential $cred
方案2:使用旧版WMI cmdlet(兼容PowerShell 2.0)
如果需要兼容老旧PowerShell环境,可以使用Get-WmiObject实现:
$computer = "COMPUTERNAME" # 替换为目标计算机名 $pathname = "PATHNAME" # 替换为要创建的文件夹完整路径 # 获取WMI对象时传入备用凭据 $win32Process = Get-WmiObject -Class Win32_Process -ComputerName $computer -Credential $cred $win32Process.Create("cmd.exe /c md $pathname")
注意事项
- 目标远程计算机需要提前开启WMI入站防火墙规则,否则会连接失败
- 你使用的备用凭据需要具备目标计算机的管理员权限,才能成功创建远程进程和写入文件夹
- 如果
$pathname路径包含空格,需要用引号包裹路径,示例:CommandLine = "cmd.exe /c md `"C:\Program Files\自定义文件夹`""
内容的提问来源于stack exchange,提问作者erikgroen88
相关产品推荐
相关产品推荐

