小编Ade*_*SIF的帖子

无法使用powershell函数在数组中添加元素

我有一个奇怪的问题,我有一个非常简单的功能。

这是我的 PowerShell 代码

$exclude = @()

function GetOracleDb {
param([string]$servername)
$exclude += $servername
}

GetOracleDb "Myserver2"

$exclude
Run Code Online (Sandbox Code Playgroud)

为什么我的 $exclude 数组是空的?

谢谢你的帮助

powershell scripting function powershell-2.0 powershell-3.0

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

空值powershell数组

我有一个奇怪的问题,这是我的CSV:

Serveur;Carte;Cordon;IP;Mac;Vmnic ;Vmnic mac;Connect;Port
Dexter;eth1;405;172.16.5.117;00:24:e8:36:36:df;Vmnic0;00:50:56:56:36:df;sw-front-1;A1
Dexter;eth2;14;192.168.140.17;00:24:e8:36:36:e1;Vmnic1;00:50:56:56:36:e1; sw_eq_ds_1;3
;;;;;;;;
Gordon;eth1;404;172.16.5.124;b8:ac:6f:8d:ac:b4;Vmnic0;00:50:56:5d:ac:b4;;
Gordon;eth2;35;192.168.140.114;b8:ac:6f:8d:ac:b6;Vmnic1;00:50:56:5d:ac:b6;;
Gordon;eth3;254;192.168.33.10;b8:ac:6f:8d:ac:b8;Vmnic2;00:50:56:5d:ac:b8;;
Run Code Online (Sandbox Code Playgroud)

所以我使用以下代码将其导入数组:

$Serveur = @()

Import-Csv C:\Users\aasif\Desktop\myfile.csv -Delimiter ";" |`
    ForEach-Object {
        $Serveur += $_.Serveur
    }
Run Code Online (Sandbox Code Playgroud)

要删除重复值,我这样做:

$Serveur = $Serveur | sort -uniq
Run Code Online (Sandbox Code Playgroud)

因此,当我显示我的数组时,我获得了这两个值:Dexter和Gordon以及第三个空值

但我也得到一个空值

以下代码返回3

$Serveur.count
Run Code Online (Sandbox Code Playgroud)

为什么?

谢谢你的帮助

arrays powershell powershell-2.0 powershell-3.0

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

一个简单的Try/catch不起作用

这是我的代码,非常简单:

$TargetFolder = 'M:\'

try{

$Getfolderlist = Get-ChildItem $TargetFolder -Recurse | ? { $_.PSIsContainer -and $_.Name -eq 'old' }

}catch {

Write-Host "Error ! :) "    

}
Run Code Online (Sandbox Code Playgroud)

它不起作用,我得到一个PowerShell异常:

Get-ChildItem : Cannot find drive. A drive with the name 'M' does not exist.
At C:\ef-scripts\PurgeDeliveryZip\purge_delivery_zip.ps1:23 char:18
+ $Getfolderlist = Get-ChildItem $TargetFolder -Recurse | ? { $_.PSIsContainer -an ...
+                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (M:String) [Get-ChildItem], DriveNotFoundException
    + FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

powershell exception powershell-2.0 powershell-3.0

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

如何正确关闭ODP.net连接:dispose()或close()?

这是我的powershell代码:

[void][System.Reflection.Assembly]::LoadFile("C:\DLL\Oracle.ManagedDataAccess.dll")
$OracleConnexion = New-Object Oracle.ManagedDataAccess.Client.OracleConnection('User Id=test;Password="test";Data Source=10.2.2.1/TEST')
$TimeOut = 60

$OracleConnexion.Open()

$Query=$OracleConnexion.CreateCommand()
$Query.CommandText="Select * FROM TEST"
$Query.CommandTimeout = $Timeout

$ExecuteRequete=$Requete.ExecuteReader()

while ($ExecuteRequete.Read()) {

    $SiebelLastRecord += $ExecuteRequete.GetDateTime(0).ToString()

} 

$OracleConnexion.Close()
Run Code Online (Sandbox Code Playgroud)

所以我打开ODP.NET连接$OracleConnexion.open()然后关闭它$OracleConnexion.close()是否足以正确关闭我与Oracle数据库的连接?或者我应该使用$OracleConnexion.Dispose()

我通过任务调度程序每隔5分钟执行一次PowerShell ...所以也许我应该使用Dispose()来避免内存饱和?

c# powershell odp.net powershell-3.0 oracle-manageddataaccess

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

如何忽略转义字符?

这是我的字符串

$mystring = "INSERT INTO `glpi_networkports` (`entities_id`,`is_recursive`,`items_id`,`itemtype`,`comment`,`logical_number`,`name`,`networkinterfaces_id`,`ip`,`mac`,`netmask`,`gateway`,`subnet`,`netpoints_id`)"
Run Code Online (Sandbox Code Playgroud)

我怎能忽略逃脱?

因为它给了我这样的字符串:

INSERT INTO glpi_networkports (entities_id,is_recursive,items_id,itemtype,comment,logical_number,
ame,
etworkinterfaces_id,ip,mac,
etmask,gateway,subnet,
etpoints_id)
Run Code Online (Sandbox Code Playgroud)

谢谢

powershell powershell-3.0

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

如何在Powershell中优化多个if语句?

这是我的代码:

Function CleanUpOracle 
{

    if ($Requete)
    {
        $Requete.Dispose()
    }

    if ($ExecuteRequete)
    {
        $ExecuteRequete.Dispose()
    }

    if ($Transaction)
    {
        $Transaction.Dispose()
    }

    if ($OracleConnexion)
    {
        $OracleConnexion.close()
        $OracleConnexion.Dispose()
    }

    if ($Log.id)
    {

        $Log.PSObject.Properties.Remove('id')

    }

}
Run Code Online (Sandbox Code Playgroud)

我正在测试是否存在变量 {do something}

但是在将来我会测试很多变量,我不想拥有数百行.

我该如何优化呢?也许用开关但怎么样?

谢谢 !

powershell powershell-4.0

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

如何在字符串中插入0

这是我的阵列:

eth1
eth12
eth5
eth11
Run Code Online (Sandbox Code Playgroud)

当我的字符串包含1到9之间的数字时,我想在之前添加0,以获得如下数组:

eth01
eth12
eth05
eth11
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这一目标?我不知道如何修改这样的字符串:/

谢谢

powershell powershell-3.0

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