首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerShell错误“参数为空或空。

PowerShell错误“参数为空或空。
EN

Stack Overflow用户
提问于 2022-01-03 15:49:01
回答 2查看 618关注 0票数 0

我正在尝试创建一个使用以下代码的PowerShell脚本。我相信具有空格的projects文件夹导致了我的错误,但我无法想出解决方案。我尝试过许多不同的堆叠溢出解决方案,但都没有成功。我不是PowerShell的人,所以我知道这是很简单的事情(也许)。有人来帮我..。

脚本代码:

代码语言:javascript
复制
Write-Host ""
$projectsFolder = Read-Host **'E:\Work - VS.NET 2022'**

Write-Host ""
Write-Host "Adding Path Exclusion: " $projectsFolder
Add-MpPreference -ExclusionPath $projectsFolder

foreach ($exclusion in $pathExclusions) 
{
    Write-Host "Adding Path Exclusion: " $exclusion
    Add-MpPreference -ExclusionPath $exclusion
}

错误:

代码语言:javascript
复制
 Adding Path Exclusion:   Add-MpPreference : Cannot validate argument
 on parameter 'ExclusionPath'. The argument is null or empty. Provide
 an argument that is not null or  empty, and then try the command
 again. At E:\Work - VS.NET 2022\Tools\Visual
 Studio\Windows_Defender_Exclusions_VS_2022.ps1:54 char:33
 + Add-MpPreference -ExclusionPath $projectsFolder
 +                                 ~~~~~~~~~~~~~~~
     + CategoryInfo          : InvalidData: (:) [Add-MpPreference], ParameterBindingValidationException
     + FullyQualifiedErrorId : ParameterArgumentValidationError,Add-MpPreference
EN

回答 2

Stack Overflow用户

发布于 2022-01-03 15:53:38

我不认为你想read host。我想你想要一个文件的内容。您的代码将类似于底部,但我还添加了一个简单的read-host供您查看。

==========read-host================

代码语言:javascript
复制
$YesNoResponse = $null
while ($YesNoResponse -ne "y" -and $YesNoResponse -ne "n") {
    Clear-Host
    write-host “Yes or No?”
    Write-Host "Please confirm."
    $YesNoResponse = Read-Host " [Y/N] "
    If ($YesNoResponse -eq "") {
        Write-Host "Enter was inputted"
        Return $null
    }
}

我想你是想做这样的事。如果您需要其他的东西,请扩展。

代码语言:javascript
复制
Write-Host "" 
$projectsFolder = Import-Csv 'E:\Work - VS.NET 2022'
Write-Host "" 
Write-Host "Adding Path Exclusion: " 
$projectsFolder = Add-MpPreference -ExclusionPath $projectsFolder

foreach ($exclusion in $pathExclusions) { 
    Write-Host "Adding Path Exclusion: " 
    $exclusion = Add-MpPreference -ExclusionPath $exclusion }
票数 0
EN

Stack Overflow用户

发布于 2022-01-04 14:23:13

脚本中的问题是,您使用的循环($pathExclusions)数组没有创建,因此是空的,导致$exclusion变量始终为空/空.这解释了你的错误信息。

如果目标是提示用户手动输入要处理的目录列表,那么您可以这样做:

代码语言:javascript
复制
# Create the exclusions array (of strings)
$pathExclusions = @()

Write-Host ""
$projectsFolder = Read-Host **'E:\Work - VS.NET 2022'**

# Press Enter at read-host prompt to exit the loop
while ($projectsFolder -ne "") {
    $pathExclusions += $projectsFolder
    $projectsFolder = Read-Host **'E:\Work - VS.NET 2022'**
}

Write-Host ""

# Process each item in the exclusions array
# Loop not executed if $pathExclusions is empty so no error message
foreach ($exclusion in $pathExclusions) {
    Write-Host "Adding Path Exclusion: " $exclusion
    Add-MpPreference -ExclusionPath $exclusion
}

如果目标是从文件中获取目录列表,那么只需通过获取文件内容而不是Read循环来填充排除数组:

代码语言:javascript
复制
$pathExclusions = Get-Content -Path "c:\temp\exclusionsfile.txt"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70568218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档