使用PowerShell远程创建文件夹时遇ComputerName参数验证错误
解决PowerShell远程创建文件夹时ComputerName参数为空的错误
问题场景
尝试通过以下代码在远程计算机C盘创建文件夹:
$stageSvrs | %{ Invoke-Command -ComputerName $_ -ScriptBlock { $setupFolder = "c:\Support\test1" Write-Host "Creating Support Folder" New-Item -Path $setupFolder -type directory -Force Write-Host "Folder creation complete" } }
执行后出现错误:
Invoke-Command : Cannot validate argument on parameter 'ComputerName'. The argument is null or empty.
Provide an argument that is not null or empty, and then try the command again.
At \company.local\share\share\userdata\username\Documents\WindowsPowerShell\CreateFolder.ps1:2 char:39
Invoke-Command -ComputerName $_ -ScriptBlock {~~
- CategoryInfo : InvalidData: (:) [Invoke-Command], ParameterBindingValidationException
- FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.InvokeCommandCommand
错误原因
错误核心是$stageSvrs变量未正确初始化:
- 变量本身为空(未赋值)
- 变量包含空字符串、Null或纯空白的元素,导致管道传递给
ForEach-Object的$_无有效计算机名
解决方案
1. 初始化有效的计算机名列表
先给$stageSvrs赋值包含真实远程计算机名的数组:
# 替换为你的实际远程计算机名 $stageSvrs = @("RemotePC01", "RemotePC02", "FileServer01")
2. 过滤无效元素再执行
在管道中添加过滤逻辑,排除空值和空白字符串:
$stageSvrs | Where-Object { $_ -and $_ -notmatch '^\s*$' } | ForEach-Object { Invoke-Command -ComputerName $_ -ScriptBlock { $setupFolder = "c:\Support\test1" Write-Host "Creating Support Folder on $env:COMPUTERNAME" New-Item -Path $setupFolder -Type Directory -Force Write-Host "Folder creation complete on $env:COMPUTERNAME" } }
3. 增加前置检查(可选)
添加变量有效性检查,提前发现问题:
# 检查变量是否为空 if (-not $stageSvrs) { Write-Error "变量`$stageSvrs未初始化,请先添加远程计算机名" exit 1 } # 过滤出有效的计算机名 $validServers = $stageSvrs | Where-Object { $_ -and $_ -notmatch '^\s*$' } if (-not $validServers) { Write-Error "`$stageSvrs中无有效计算机名,请检查变量内容" exit 1 } # 执行远程创建操作 $validServers | ForEach-Object { Invoke-Command -ComputerName $_ -ScriptBlock { $setupFolder = "c:\Support\test1" Write-Host "Creating Support Folder on $env:COMPUTERNAME" New-Item -Path $setupFolder -Type Directory -Force Write-Host "Folder creation complete on $env:COMPUTERNAME" } }
内容的提问来源于stack exchange,提问作者user3511199
相关产品推荐
相关产品推荐

