相关疑难解决方法(0)

如何在PowerShell中检查字符串是空还是空?

IsNullOrEmpty在PowerShell中是否有内置函数来检查字符串是空还是空?

到目前为止我找不到它,如果有内置方式,我不想为此编写函数.

.net string powershell null

375
推荐指数
9
解决办法
46万
查看次数

?? 合并空字符串?

我发现自己做的越来越多的事情是检查字符串是否为空(如in ""或null)和条件运算符.

一个当前的例子:

s.SiteNumber.IsNullOrEmpty() ? "No Number" : s.SiteNumber;
Run Code Online (Sandbox Code Playgroud)

这只是一种扩展方法,它相当于:

string.IsNullOrEmpty(s.SiteNumber) ? "No Number" : s.SiteNumber;
Run Code Online (Sandbox Code Playgroud)

因为它是空的而不是null,所以??不会这样做.一个string.IsNullOrEmpty()版本??将是完美的解决方案.我认为必须有一个更清洁的方式来做这件事(我希望!),但我一直在找不到它.

有没有人知道更好的方法来做到这一点,即使它只在.Net 4.0中?

c# string coalesce null-coalescing-operator

154
推荐指数
7
解决办法
6万
查看次数

$ {env:ProgramFiles(x86)} Powershell变量在32位/ x86系统上包含什么?

简单的问题:

如果我在32位系统上的PowerShell脚本中使用$ {env:ProgramFiles(x86)}变量,它会返回"C:\ Program Files"还是未定义?

在x64系统上,当在x64和x86模式下运行时,它将映射到"C:\ Program Files(x86)".我没有要测试的32位系统,但我希望它将映射到"C:\ Program Files"文件夹,这样我就可以用它来引用任何系统上的x86程序.

powershell x86

17
推荐指数
1
解决办法
3万
查看次数

在Powershell中为变量设置默认值

在bash中我可以做这样的事情,name如果UserName没有设置,设置为默认值:

name=${UserName:-James}
Run Code Online (Sandbox Code Playgroud)

Powershell是否支持这样的事情?

powershell

9
推荐指数
1
解决办法
1万
查看次数

空值的默认值

在Powershell脚本上工作我有几个地方我想要A除非它是null,否则B.本质上是?? C#中的运算符.我最终编写了下面显示的函数,但我不禁想到有一种内置的方法可以做到这一点.

有没有更好的,内置的方式?

function Get-ValueOrDefault()
{
    foreach ($value in $args)
    {
        if ($value -ne $null) { return $value }
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为这更好:

function Get-ValueOrDefault() { $args | select -first 1 }
Run Code Online (Sandbox Code Playgroud)

powershell

6
推荐指数
1
解决办法
1942
查看次数

使用 Powershell 解析具有变量类型的 XML 文件

我试图从脚本中删除变量的定义,并从类似于以下内容的 XML 配置文件中读取它们:

XML文件

<?xml version="1.0" encoding="utf-8" ?>
<settings>
    <process>FALSE</process>
    <xmlDir>\\serv1\dev</xmlDir>
    <scanDir>\\serv1\dev</scanDir>
    <processedDir>\\serv1\dev\done</processedDir>
    <errorDir>\\serv1\dev\err</errorDir>
    <log>\\serv1\dev\log\dev-Log##DATE##.log</log>
    <retryDelay>5</retryDelay>
    <retryLimit>3</retryLimit>
</settings>
Run Code Online (Sandbox Code Playgroud)

然后使用以下内容解析脚本中的 XML:

[xml]$configFile = Get-Content $PSScriptRoot\$confFile
$settings = $configFile.settings.ChildNodes
foreach ($setting in $settings) {  
    New-Variable -Name $setting.LocalName -Value ($setting.InnerText -replace '##DATE##',(get-date -f yyyy-MM-dd)) -Force
}
Run Code Online (Sandbox Code Playgroud)

这很好用,但问题是它们都作为字符串读取,但有些我需要作为整数读取。为了解决这个问题,我必须在创建变量后将它们更改为整数,如下所示:

$retryDelay = ([int]$retryDelay)
$retryLimit = ([int]$retryLimit)
Run Code Online (Sandbox Code Playgroud)

虽然这可行,但我希望在 XML 中包含其他变量,例如布尔值 $true / $false (并作为布尔值读入),并且宁愿让 foreach 能够处理它们的类型,而不是脚本中的其他行。任何线索表示赞赏。

xml powershell

2
推荐指数
1
解决办法
4915
查看次数

奇怪的合并行为

好的,最近我正在寻找一种在 PowerShell 中空合并的方法,我遇到了这篇文章:在 powershell 中空合并

我看到@Zenexer 的评论,很感兴趣。这是语法:

Clear-Host
#expected one
"Test 1: " + ("one", "two", 1 -ne $null)[0]
#expected two
"Test 2: " + ($null, "two", 1 -ne $null)[0]
Run Code Online (Sandbox Code Playgroud)

这完美地工作。然而,我和一位同事 (Walter Puckett) 非常感兴趣,并且对语法进行了更多的挖掘,发现了一些真正的奇怪之处。

在我陷入奇怪之前,谁能指出任何解释这种语法的文档?

## THE WEIRDNESS:

# it does not matter what the number is evidently
"Test 3: " + ($null, "two", 8675309 -ne $null)[0]

# reversing the comparison test breaks the coalesce
"Test 4: " + ($null, "two", $null -ne 1)[0]

# Moving the test …
Run Code Online (Sandbox Code Playgroud)

powershell

2
推荐指数
1
解决办法
60
查看次数

更改 CSV 列中的数据

我有一个 PowerShell 脚本从 CSV 中提取数据。我想做的是根据值“替换”帐户列中的数据。例如,帐户 001 = 硬件,帐户 002 = 软件等。CSV 中的数据是从 SQL 数据库中提取的,因此如果我可以更轻松地在 SQL 脚本中更改它,我可以轻松做到这一点。CSV 中的帐户列有 001、002 等。我想将这些值更改为硬件、软件等。感谢您的帮助。

$Results = import-csv Expenses.csv

$Array = @()       
Foreach($R in $Results)
{
        $Object = [pscustomobject][ordered] @{
 
            Account = $R.Account
            Vendor = $R.Desc1
            Item = $R.Desc2
            Amount = $R.Amount
            
 
        }
        $Array += $Object
}

$Array
Run Code Online (Sandbox Code Playgroud)

csv powershell

1
推荐指数
1
解决办法
668
查看次数

标签 统计

powershell ×7

string ×2

.net ×1

c# ×1

coalesce ×1

csv ×1

null ×1

null-coalescing-operator ×1

x86 ×1

xml ×1