小编Bra*_*rad的帖子

不区分大小写的PowerShell替代品

我有以下PowerShell脚本:

$RegExplorer = Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters
$NullSessionPipes = "$($RegExplorer.NullSessionPipes)"
$NullSessionPipes
$NullSessionPipes =  $NullSessionPipes.replace("browser", "")
$NullSessionPipes
Run Code Online (Sandbox Code Playgroud)

只要注册表项检查与我指定的情况完全匹配 - "浏览器",该脚本就可以正常工作.

但是,如果注册表项中的情况不同,则说"浏览器"或"浏览器"则不进行替换.

我正在寻找一些方法来使string.replace不区分大小写.我知道我可以首先使用.tolower或.toupper转换字符串以使比较更容易,但我不知道这个特定的注册表项或访问它的应用程序是否区分大小写,所以我不想更改现有的关键.

是否有捷径可寻?

powershell replace case

21
推荐指数
5
解决办法
4万
查看次数

PowerShell尝试/捕获并重试

我有一个相当大的PowerShell脚本,有许多(20+)个函数执行各种操作.

现在所有的代码都没有任何错误处理或重试功能.如果某个特定的任务/功能失败,它就会失败并继续.

我想改进错误处理并实现重试以使其更加健壮.

我在想类似的东西:

$tries = 0
while ($tries -lt 5) {
    try{    

       # Do Something

       # No retries necessary
       $tries = 5;
    } catch {
       # Report the error
       # Other error handling
    }
 }
Run Code Online (Sandbox Code Playgroud)

问题是我需要做很多步骤才能做到这一点.

我认为实施上述代码20次是没有意义的.这似乎真的是多余的.

我在考虑编写一个带有单个参数的"TryCatch"函数,该参数包含我想要调用的实际函数?

不过,我不确定这是正确的方法.我不会最终得到一个类似于以下内容的脚本:

TryCatch "Function1 Parameter1 Parameter2"
TryCatch "Function2 Parameter1 Parameter2"
TryCatch "Function3 Parameter1 Parameter2"
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

error-handling powershell try-catch

9
推荐指数
3
解决办法
9536
查看次数

按钮列的DataGridView图像

我正在尝试将可点击的图像/按钮添加到datagridview按钮列.

图像/按钮将是播放或停止的图标.如果用户单击播放按钮,则启动系统上的服务,如果用户单击停止按钮,则服务停止.

我已经编写了启动和停止服务的函数.我遇到的困难是让按钮/图像显示在数据网格中并使其可点击.

这是我对代码的看法:

this.dgrdServices.RowPrePaint +=new DataGridViewRowPrePaintEventHandler(dgv_RowPrePaint);
this.dgrdServices.Rows.Add();
this.dgrdServices.Rows[0].Cells[0].Value = Image.FromFile(@"C:\users\brad\desktop\green-dot.gif"); 
this.dgrdServices.Rows[0].Cells[1].Value = "MyServer";
this.dgrdServices.Rows[0].Cells[2].Value = "MyService";
this.dgrdServices.Rows[0].Cells[3].Value = "Started";
this.dgrdServices.Rows[0].Cells[4].Value = new DataGridViewButtonCell();
this.dgrdServices.Rows[0].Cells[5].Value = "Uninstall";
Run Code Online (Sandbox Code Playgroud)

如果最好使用一个图像按钮或一个可点击的图像,我就无法解决.我也无法正确显示按钮.

谢谢Brad

.net c# datagridview winforms

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

Terraform 查找 AWS 区域

我的 main.tf 文件中有以下代码:

provider "aws" {
  access_key = "${var.aws_access_key}"
  secret_key = "${var.aws_secret_key}"
  region     = "us-east-1"
  alias      = "us-east-1"
}

provider "aws" {
  access_key = "${var.aws_access_key}"
  secret_key = "${var.aws_secret_key}"
  region     = "us-west-1"
  alias      = "us-west-1"
}

module "us-east_vpc" {
  source = "./setup-networking"

  providers = {
    "aws.region" = "aws.us-east-1"
  }
}

module "us-west_vpc" {
  source = "./setup-networking"

  providers = {
    "aws.region" = "aws.us-west-1"
  }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的模块文件中,我有:

provider "aws" {
  alias = "region"
}

resource "aws_vpc" "default" {
  provider             = "aws.region"
  cidr_block           = …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services terraform

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

在powershell $ x.FullName中没有返回完整路径

我在下面有一个powershell脚本,它接受一个配置文件并删除与正则表达式匹配的x天以前的文件.

配置文件:

path,pattern,days,testrun
C:\logs\,^data_access_listener.log,7,false
Run Code Online (Sandbox Code Playgroud)

不过这是输出:

Would have deleted 000a19f6-a982-4f77-88be-ca9cc51a2bcbuu_data_access_listener.log
Would have deleted 00189746-2d46-4cdd-a5bb-6fed4bee25a7uu_data_access_listener.log
Run Code Online (Sandbox Code Playgroud)

我期望输出包含完整的文件路径,因为我正在使用.FullName属性,所以我希望输出如下:

Would have deleted C:\logs\000a19f6-a982-4f77-88be-ca9cc51a2bcbuu_data_access_listener.log
Would have deleted C:\logs\00189746-2d46-4cdd-a5bb-6fed4bee25a7uu_data_access_listener.log
Run Code Online (Sandbox Code Playgroud)

如果我使用$ x.FullName为什么我没有获得路径的全名(C:\ logs)?

谢谢Brad

$LogFile = "C:\deletefiles.log"
$Config = import-csv -path C:\config.txt

function DeleteFiles ([string]$path, [string]$pattern, [int]$days, [string]$testrun){
    $a =  Get-ChildItem $path -recurse | where-object {$_.Name -notmatch $pattern}    
    foreach($x in $a) {
    $y = ((Get-Date) - $x.LastWriteTime).Days
        if ($y -gt $days -and $x.PsISContainer -ne $True) {

            if ($testrun -eq "false") {
                write-output “Deleted" $x.FullName >>$LogFile 
            } else { …
Run Code Online (Sandbox Code Playgroud)

powershell

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

PowerShell 替换正则表达式

我有一个select-string正在 IIS 日志中搜索特定字符串并返回上面 2 行和下面一行的程序。

结果如下:

2012-06-15 18:26:09 98.138.206.39 OutboundConnectionResponse SMTPSVC1 WEB10 - 25 - - 220+mta1083.sbc.mail.ne1.yahoo.com+ESMTP+YSmtp+service+ready 0 0 60 0 218 SMTP - - - -
2012-06-15 18:26:09 98.138.206.39 OutboundConnectionCommand SMTPSVC1 WEB10 - 25 EHLO - WEB10.DOMAIN>COM 0 0 4 0 218 SMTP - - - -
> 2012-06-15 18:26:09 74.125.244.10 OutboundConnectionResponse SMTPSVC1 WEB10 - 25 - - 550+IP+Authorization+check+failed+-+psmtp 0 0 41 0 218 SMTP - - - -
2012-06-15 18:26:09 74.125.244.10 OutboundConnectionCommand SMTPSVC1 WEB10 - 25 …
Run Code Online (Sandbox Code Playgroud)

regex powershell replace

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

Exchange Web服务-从服务收到的响应不包含有效的XML

我正在尝试连接到Exchange 2010服务器上的Exchange Web服务(ews)。这是我正在使用的代码:

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Exchange.WebServices.Data;

namespace NDR_Processor
{
    class Program
{
    static void Main(string[] args)
    {
        ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
        service.Credentials = new System.Net.NetworkCredential("redacted", "redacted", "redacted");

        service.Url = new Uri("https://exchange.redacted.net/EWS/Exchange.asmx");

        System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

        FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, new ItemView(1000));

        foreach (Item item in findResults.Items)
        {
            Console.WriteLine(item.Subject);
            Console.WriteLine(item.Body);

        }
    }
}
}
Run Code Online (Sandbox Code Playgroud)

但是,这样做时出现错误,指出“从服务收到的响应不包含有效的XML。”。内部异常指示:{“根级别的数据无效。第1行,位置1。”}

我尝试在Web浏览器中点击https://exchange.redacted.net/EWS/Exchange.asmx,它提示我登录,然后据我所知向我提供有效的XML文档。所以我不知道为什么我的应用程序令人窒息。

是否有人对为什么会发生或我如何解决有任何想法?

谢谢布拉德

c# xml exchangewebservices

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

使用 Terraform、Chef 或 Powershell 以编程方式设置 EBS 卷 Windows 驱动器号

我正在使用 terraform 和 Chef 创建多个 aws ebs 卷并将它们附加到 EC2 实例。

问题是我希望能够为每个 ebs 卷指定一个特定的 Windows 驱动器号。问题是当 EC2 实例被实例化时,窗口只给它顺序驱动器号(D、E、F 等)

某些驱动器的大小相同,因此我不一定会根据驱动器大小进行重命名。有谁知道用 terraform 或厨师来做到这一点的方法。我的 google foo 没有找到任何东西。

当然,这必须为其他人提出吗?

我确实看到了使用 EC2Config Windows GUI 来设置它们的参考,但重点是自动化该过程,因为最终我希望 Chef 安装 SQL 服务器,并且某些数据预计会出现在某些驱动器号上。

这似乎有效 - 尽管我确实想知道是否有更简单的方法。

function Convert-SCSITargetIdToDeviceName
{
param([int]$SCSITargetId)
If ($SCSITargetId -eq 0) {
    return "/dev/sda1"
}
$deviceName = "xvd"
If ($SCSITargetId -gt 25) {
    $deviceName += [char](0x60 + [int]($SCSITargetId / 26))
}
$deviceName += [char](0x61 + $SCSITargetId % 26)
return $deviceName
}

Get-WmiObject -Class Win32_DiskDrive | ForEach-Object …
Run Code Online (Sandbox Code Playgroud)

windows amazon-ec2 drive-letter chef-infra terraform

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

将参数传递给 Redis Lua 脚本

我正在尝试使用以下语法将参数传递给我的 Redis Lua 脚本:

redis-cli -h 127.0.0.1 -p 6379 -a my-super-secret-auth-key --eval /tmp/test.lua 0 60

但是在我的脚本中,当我这样做时: print (ARGV[1]);

我得到(零)回报。我究竟做错了什么?如何正确地将参数传递给我的脚本?

lua arguments redis

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

从 BitBucket Rest API v2.0 获取文件

我有一个脚本,它使用 bitbucket REST API (1.0) 从 GIT 获取文件,但它最近停止工作。我推测这可能是由于 v1 REST API 被贬值所致,但我不确定。

无论如何,我正在尝试使用新的 2.0 REST API 检索文件,但由于请求不断失败,我似乎无法获得正确的语法。

我从curl 开始,因为它最容易测试。这就是我正在尝试的:

curl -u myusername@mydomain.com "https://api.bitbucket.org/2.0/repositories/MyCompany/myrepo/downloads/Scripts/Environment Setup/test.txt"

Enter host password for user 'myusername@mydomain.com': redacted

{"type": "error", "error": {"message": "Resource not found", "detail": "There is no API hosted at this URL.\n\nFor information about our API's, please refer to the documentation at: https://developer.atlassian.com/bitbucket/api/2/reference/"}}
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的参考文档:https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/downloads/%7Bfilename%7D

也许我使用了错误的功能?我不知道。

api rest curl bitbucket

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

脚本输出额外的0

我有以下powershell脚本绑定到活动目录OU并列出计算机.它似乎工作得很好,除了它输出额外的0 - 我不知道为什么.有人可以帮忙吗?

 $strCategory = "computer"

 $objDomain = New-Object System.DirectoryServices.DirectoryEntry("LDAP://          OU=Computers,OU=datacenter,DC=ourdomain,DC=local")

 $objSearcher = New-Object System.DirectoryServices.DirectorySearcher($objDomain)
 $objSearcher.Filter = ("(objectCategory=$strCategory)")

  $colProplist = "name"
  foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}

 $colResults = $objSearcher.FindAll()

 foreach ($objResult in $colResults)
 {
 $objComputer = $objResult.Properties; 
 $objComputer.name
 }
Run Code Online (Sandbox Code Playgroud)

输出: 0 Server1 Server2 Server3

powershell

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