Powershell 调用命令以清除Internet Explorer缓存

Powershell 调用命令以清除Internet Explorer缓存,powershell,invoke-command,Powershell,Invoke Command,使用用户登录名和计算机名的特定输入,我想删除远程计算机上该用户的临时internet文件。我几乎可以让它工作,但当我尝试将filepath作为变量传递时,它会失败,要么为空,要么不包含用户名。我在谷歌上搜索了好几个小时,试图自己修复它。 我使用powershell已经有一段时间了,但我的“脚本”是定义变量和管道命令。除此之外的任何事情都可能会让我困惑,不过,任何帮助都将不胜感激。以下是我到目前为止的情况。冗余只是我检查我的变量是否被传递到-Scriptblock,这就是出错的地方 $User =

使用用户登录名和计算机名的特定输入,我想删除远程计算机上该用户的临时internet文件。我几乎可以让它工作,但当我尝试将filepath作为变量传递时,它会失败,要么为空,要么不包含用户名。我在谷歌上搜索了好几个小时,试图自己修复它。 我使用powershell已经有一段时间了,但我的“脚本”是定义变量和管道命令。除此之外的任何事情都可能会让我困惑,不过,任何帮助都将不胜感激。以下是我到目前为止的情况。冗余只是我检查我的变量是否被传递到-Scriptblock,这就是出错的地方

$User = Read-Host -Prompt 'Please input the user logon name.'
$CompName = Read-Host -Prompt 'Please enter the target computername.'
$UNC = "C:\Users\$User\AppData\Local\Microsoft\Windows\Temporary Internet Files"
$Block = { Remove-Item $UNC -Recurse -Force -EA Continue }
Invoke-Command -ComputerName $CompName -ScriptBlock {$Block} 

这个问题被问了很多。您正在调用$UNC内容不存在的新会话或运行时环境。您需要将该值从调用脚本传递到被调用的调用。您可以使用
-ArgumentList
执行此操作。此参数的
调用命令
调用表达式
的语法相同。以下是一个完整的示例:

另外,我要改变这一点:
Invoke命令-ComputerName$CompName-ScriptBlock{$Block}
为此:
Invoke命令-ComputerName$CompName-ScriptBlock$Block

意思很不一样
{$Block}
将运行输出$Block值(空白)的脚本。而在没有
{}
的情况下,您将传递一个要分析的scriptblock变量


以下是一个工作示例:

$OutsideVar = "Hello World!"

invoke-command -ArgumentList $OutsideVar -ScriptBlock {
    param( $InsideVar )
    Write-Host $InsideVar
}
理解这里发生的事情的关键是理解范围$OutsideVar存在于顶级流程范围中。使用
调用命令启动新作用域时,
$OutsideVar不再存在。就像可以使用参数调用.EXE文件一样,您也可以使用参数调用此新作用域。您必须告诉内部作用域如何处理这些参数,
param()
块就是这样做的。它说:“您将得到1个参数,将其存储在$InsideVar中”。现在,在内部范围中有了该值。通过添加更多参数,可以传递多个值,如下所示:

invoke-command -ArgumentList $OutsideVar, $OutsideVar2, $OutsideVar3 -ScriptBlock {
    param( $InsideVar, $InsideVar2, $InsideVar3 )
}

这个问题被问了很多。您正在调用$UNC内容不存在的新会话或运行时环境。您需要将该值从调用脚本传递到被调用的调用。您可以使用
-ArgumentList
执行此操作。此参数的
调用命令
调用表达式
的语法相同。以下是一个完整的示例:

另外,我要改变这一点:
Invoke命令-ComputerName$CompName-ScriptBlock{$Block}
为此:
Invoke命令-ComputerName$CompName-ScriptBlock$Block

意思很不一样
{$Block}
将运行输出$Block值(空白)的脚本。而在没有
{}
的情况下,您将传递一个要分析的scriptblock变量


以下是一个工作示例:

$OutsideVar = "Hello World!"

invoke-command -ArgumentList $OutsideVar -ScriptBlock {
    param( $InsideVar )
    Write-Host $InsideVar
}
理解这里发生的事情的关键是理解范围$OutsideVar存在于顶级流程范围中。使用
调用命令启动新作用域时,
$OutsideVar不再存在。就像可以使用参数调用.EXE文件一样,您也可以使用参数调用此新作用域。您必须告诉内部作用域如何处理这些参数,
param()
块就是这样做的。它说:“您将得到1个参数,将其存储在$InsideVar中”。现在,在内部范围中有了该值。通过添加更多参数,可以传递多个值,如下所示:

invoke-command -ArgumentList $OutsideVar, $OutsideVar2, $OutsideVar3 -ScriptBlock {
    param( $InsideVar, $InsideVar2, $InsideVar3 )
}

我知道这个变量已经不存在了,但是我不知道如何使它在我的情况下工作。有没有一本书可以让我理解这一点?这里是该方法的文档:我还将使用工作代码更新答案,供您测试。我知道变量已不存在,但我不太明白如何使其适用于我的情况。有没有一本书可以让我理解这一点?这是该方法的文档:我还将使用工作代码更新答案供您测试。为什么您需要为远程计算机上的用户删除该目录的内容?用户缓存了OWA的凭据,并已更改了密码。旧凭据一直在尝试对用户进行身份验证并将其锁定。清除缓存可以修复此问题吗?(奇怪)为什么需要为远程计算机上的用户删除该目录的内容?该用户缓存了OWA的凭据,并已更改了密码。旧凭据一直在尝试对用户进行身份验证并将其锁定。清除缓存可以修复此问题吗?(单数)