尝试使用Powershell测试PSSession
Enter-PSSession -ComputerName <servername>
Invoke-Command -ComputerName <servername> -ScripBlock {
Get-PSDrive -PSProvider FileSystem | %{ write-host 'Checking drive ' $_.Root; set-location $_.Root; Get-ChildItem -Filter "load4.wav" -Recurse; write-host 'Checked drive ' $_.Root; } | Out-File "$env:UserProfile\Desktop\$env:ComputerName-Results.txt"
}
我最终希望能够针对服务器列表运行此命令,并在可能的情况下将结果保存到本地
所以当我运行它会进入PSSession
[server]: PS C:\Users\US_Chris.Ondrovic\Documents>
但是不会执行这部分代码
Invoke-Command -ComputerName server -ScripBlock {
Get-PSDrive -PSProvider FileSystem | %{ write-host 'Checking drive ' $_.Root; set-location $_.Root; Get-ChildItem -Filter "load4.wav" -Recurse; write-host 'Checked drive ' $_.Root; } | Out-File "$env:UserProfile\Desktop\$env:ComputerName-Results.txt"
}
因此,我可以验证它是否可以在远程计算机上正常运行
Invoke-Command -ComputerName <server> -ScriptBlock {Get-Service} | Out-File $env:Userprofile\Desktop\Test.txt
得到了一些有效的方法,现在它可以通过PSSession运行,但是并没有寻找我需要的东西
function Remote-Search() {
param([string[]]$Servers, [string]$Item)
foreach($server in $Servers) {
Invoke-Command -ComputerName $server -ScriptBlock {Get-PSDrive -PSProvider FileSystem | %{ write-host 'Checking drive ' $_.Root; set-location $_.Root; Get-ChildItem -Filter $item -Recurse; write-host 'Checked drive ' $_.Root; }} | Out-File $env:Userprofile\Desktop\$server-results-$item.txt
}
}
function Remote-Search() {
param([string[]]$Servers, [string]$Item)
foreach($server in $Servers) {
Invoke-Command -ComputerName $server -ArgumentList $Item -ScriptBlock { param([string]$filter)
Get-PSDrive -PSProvider FileSystem | %{
write-host 'Checking drive ' $_.Root
set-location $_.Root
Get-ChildItem -Filter $filter -Recurse
write-host 'Checked drive ' $_.Root
}
} | Out-File $env:Userprofile\Desktop\$server-results-$item.txt
}
}
脚本中的变量不能直接用于脚本块。您可以在脚本块中声明参数,然后通过的-ArgumentList
参数将值传递给它们Invoke-Command
。
因此,在这里,我$filter
向脚本块添加了一个参数,并$Item
通过的-ArgumentList
参数进行了传递Invoke-Command
。现在,在远程计算机上的脚本块中,$filter
将具有该值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句