标签: powershell

如何在“ if”语句中使用PowerShell的“ invoke-SQLcmd”结果?

我不知道如何获取查询结果(qty_records)为5,因此可以在PowerShell If语句中使用它。

====

$my_query = "select count(CustomerNumber) as qty_records from customers"

$qty_records = Invoke-Sqlcmd -Query $my_query -ServerInstance "2008c" -Username sa -Password abc.1234 -Database MikeDB

if ($qty_records -gt 4) {
    write-host "do something"
} else {
    Write-Host "do something else"
}
Run Code Online (Sandbox Code Playgroud)

======谢谢

sql powershell

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

Powershell格式字符串,带有函数输出

嘿家伙我无法弄清楚如何将以下函数(需要输入)转换为变量

 function Convert-ToLetters ([parameter(Mandatory=$true,ValueFromPipeline=$true)][int] $value)  {
   $currVal = $value;
   $returnVal = '';
   while ($currVal -ge 26) {
      $returnVal = [char](($currVal) % 26 + 65) + $returnVal;
      $currVal =  [int][math]::Floor($currVal / 26)
   }
  $returnVal = [char](($currVal) + 64) + $returnVal;

     return $returnVal
  }
Run Code Online (Sandbox Code Playgroud)

此函数的作用是将数字转换为字母.

现在我想要实现的是以某种方式做到这一点:

$convert2letter = Convert-ToLetters()
Run Code Online (Sandbox Code Playgroud)

所以我可以做类似的事情

$WR= "$convert2letter($CValue1)" + "-" + "$convert2letter($CValue2)" + "-" + "3"
Run Code Online (Sandbox Code Playgroud)

但是Powershell不允许我做$ convert2letter

那我该怎么办?

谢谢

variables powershell function

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

powerwshell IF vs Switch

在检索计算机的操作系统时,根据我使用的是if语句还是交换机,我会得到不同的结果:

if (((Get-WmiObject -ComputerName DT-04 Win32_OperatingSystem).Caption.ToString()) -match "Microsoft Windows 7 Professional") { "Found" } Else { "Not found" } 
Run Code Online (Sandbox Code Playgroud)

结果=找到

switch ((Get-WmiObject -ComputerName DT-04 Win32_OperatingSystem).Caption.ToString()) { "Microsoft Windows 7 Professional" { "Found" } Default { "Not Found" } }
Run Code Online (Sandbox Code Playgroud)

结果=未找到

为什么会这样?

powershell

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

如何使用Add-Type通过System.Windows.Forms命名空间添加C#代码?

如何使用命名空间Add-Type添加C#代码System.Windows.Forms?我尝试了以下命令:

Add-Type -TypeDefinition @"
using System;
using System.Windows.Forms;

namespace testnamespace
{
    public static class testclass
    {
        public static string messagebox()
        {
            MessageBox.Show("test")
            return "test";
        }
    }
}
"@ 
Run Code Online (Sandbox Code Playgroud)

但是我遇到了一些错误,例如:

类型或名称空间名称“ Forms”在名称空间“ System.Windows”中不存在(您是否缺少程序集引用?)

我只是想用ONLY在PowerShell中的C#代码。请不要给我的选择。

.net c# powershell powershell-2.0

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

写主机并登录一行?

我是PowerShell的新手,因此可以自我学习。我的问题是,您是否可以在同一行上同时执行“写入主机”和“日志写入”操作?

我所拥有的是:

Write-Host "Node Id is $nodeProps["NodeID"]" 
LogWrite "Node Id is $nodeProps["NodeID"]"
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一种方法可以做到:

Write-Host, LogWrite "Node Id is $nodeProps["NodeID"]"
Run Code Online (Sandbox Code Playgroud)

感谢您提供的所有帮助!

powershell write-host

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

如何在Pester测试中模拟Read-Host?

如果我有这个功能:

Function Test-Foo {

    $filePath = Read-Host "Tell me a file path"
}
Run Code Online (Sandbox Code Playgroud)

我如何模拟读取主机以返回我想要的内容?例如,我想做这样的事情(这不起作用):

Describe "Test-Foo" {
  Context "When something" {
        Mock Read-Host {return "c:\example"}

        $result = Test-Foo

        It "Returns correct result" {
            $result | Should Be "c:\example"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

powershell pester

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

Microsoft在PowerShell CmdLet参数命名方面的一致性

假设我写了一个包含此命令的PowerShell脚本:

Get-ChildItem -Recurse
Run Code Online (Sandbox Code Playgroud)

但相反,我写道:

Get-ChildItem -Re
Run Code Online (Sandbox Code Playgroud)

为了省时间.经过一段时间后,我升级了PowerShell版本,Microsoft决定向Get-ChildItem添加一个名为"-Return"的参数,例如,根据是否找到任何项目,返回True或False.

在那个虚拟场景中,我是否可以编辑所有以前的脚本以确保脚本按预期运行?我理解微软试图节省我的打字时间,但这是我的担忧,因此我可能总是会尝试编写完整的参数名称.

除非你当然知道我不知道的事情.感谢您的见解!

convention parameters powershell naming consistency

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

将负数设为零Powershell

使用Powershell,是否有将负数设置为零的功能?

或者这是吗?

If ($num -lt 0) {$num = 0}
Run Code Online (Sandbox Code Playgroud)

powershell

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

使用PowerShell获取Azure VM OS名称

我一直在尝试使用PowerShell从Microsoft Azure获取VM OS名称.

我想我非常接近解决方案,但我不知道我哪里出错了.

这是我用来获取VM详细信息的命令:

Get-AzureRmVM -ResourceGroupName TEST -Name VF-Test1 | Select OsType
Run Code Online (Sandbox Code Playgroud)

我得到的答案只是空白.

运行以下命令时:

Get-AzureRmVM -ResourceGroupName TEST -Name VF-Test1
Run Code Online (Sandbox Code Playgroud)

我获得了属于该VM的所有细节.

powershell azure

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

Powershell-从文件名创建一个文件夹,然后将该文件放在文件夹中

我有一个文件列表说...

T123_Product_1.jpg
T123_Product_2.jpg
T123_Product_3.jpg
T456_Product_1.jpg
T456_Product_2.jpg
T456_Product_3.jpg 
Run Code Online (Sandbox Code Playgroud)

等等等等等等大约另外900个文件

我需要做的是根据第一个下划线之前的字符创建一个文件夹,但由于有多个文件,因此不再重复。

因此,在上面的示例中,我只需要两个名为T123和T456的文件夹。

然后,我需要脚本将适当的文件放置在文件夹中。

我在此线程中找到了一些代码,但是它们并不能完全满足我的要求。

https://superuser.com/questions/306890/windows-batch-script-to-create-folder-for-each-file-in-a-directory-name-it-tha

    $Files = Get-ChildItem -Path 'C:\Info\AUGUST 2011\Checklists\' -Filter 'DET1__*'
$Files | ForEach-Object {
    $FileFullName = $_.FullName
    $TempFileName = "$($FileFullName).tmp"
    $DestinationFileName = "$FileFullName\$($_.Name)"
    Move-Item $FileFullName $TempFileName
    New-Item -Path $FileFullName -ItemType Directory
    Move-Item $TempFileName $DestinationFileName
}
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?

directory powershell naming file

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