【发布时间】:2021-04-19 15:08:34
【问题描述】:
我有一个简单的 PS 脚本,它计算远程机器上 2 个文件夹中的文件,然后导出为 CSV。
这些是使它发生的行(注意:所有变量,如 $server、$folder1path、$folder2path 都已定义且合法)
invoke-command -computername $servers -scriptblock {
$servername = hostname
$infoObject = New-Object PSObject
$folder1count=(Get-ChildItem -recurse -path $folder1path).count
$folder2count =(Get-ChildItem -recurse -path $folder2path).count
if ($folder1count -ne 0 -or $folder2count -ne 0) {
Add-Member -inputObject $infoObject -memberType NoteProperty -name "ServerName" -value $Servername
Add-Member -inputObject $infoObject -memberType NoteProperty -name "Folder1" -value $folder1count
Add-Member -inputObject $infoObject -memberType NoteProperty -name "Folder2" -value $folder2count
$infoObject}} | Select-Object * -ExcludeProperty PSComputerName, RunspaceId, PSShowComputerName | Export-Csv -path "C:\temp\Test_count_folder.csv" -NoTypeInformation
如果我在本地机器上运行(Get-ChildItem -recurse -path $folder1path).count cmd,它会返回正确的值。
问题在于,即使文件夹为空,scriptblock 部分也会始终返回不正确的值(28 和 38?)。
我错过了什么?它不会抛出错误,但会输出不正确的值。
【问题讨论】:
-
Invoke-Command脚本块中的变量必须传入或在脚本块中定义。我没有看到你在你的脚本块中传递了一些 $Vars。 -
@Lee_Dailey 你不认为这个问题值得回答为什么以及如何更正脚本吗?我同意这个在某种程度上是微不足道的,并且可能已经被问过了,但是,在我看来,理解为什么远程脚本不能有本地脚本变量有一些价值。
-
@Lee_Dailey 也许这个问题有点过于具体了。标题应更正为“为什么远程 PS 脚本无法按预期工作”。
标签: powershell invoke-command get-childitem