因此,我已经浏览了该站点和Web,感觉好像缺少了一些简单的东西。
我发现相关问题,但是没有一个问题scriptblock与第3方应用程序(不是简单的Windows函数或应用程序)的远程调用相结合
我有以下字符串,可以将其复制到命令窗口中,并且可以正常运行
"C:\Program Files (x86)\Vizient\Vizient Secure Channel v2.1\VizientSC.exe" UID=me@musc.edu PWD=XXXXXXXXX HCOID=123456 PRODTYPE=PRO-UHCSECURECHANNEL-CDB PACKAGETYPE=OTH FOLDERPATH="\\da\db5\MyFiles\Viz\20180413"
Run Code Online (Sandbox Code Playgroud)
为了简化这一过程,我们假设我想每次使用REMOTE调用时都运行相同的String。
我已经写了许多不同的方法,但是使用却无济于事
Invoke-Command -ComputerName "edwsql" -ScriptBlock { .........
Run Code Online (Sandbox Code Playgroud)
我只想在远程计算机上使用cmd.exe运行指定的字符串。
在字符串中运行的EXE是第三方软件,我不想安装所有可能的位置。从已安装且安全的盒子运行远程要容易得多。
有人可以指出我正确的方向吗????请问 我是PowerShell的新手。我正在尝试淘汰一些旧的PERL,因为在这几天之间,支持客户网站上的支持的人很少。
我试图调用命令撕裂我的头发但是将路径作为参数传递给exe
例如:我想接受这个命令
powershell Invoke-Command -ComputerName localhost -ScriptBlock { param($command ) C:\windows\system32\getmac.exe /$command } -ArgumentList ?
Run Code Online (Sandbox Code Playgroud)
并将其翻译成这样的形式
powershell Invoke-Command -ComputerName localhost -ScriptBlock { param($path, $command ) $path\getmac.exe /$command } -ArgumentList C:\windows\system32,?
Run Code Online (Sandbox Code Playgroud)
我已经尝试过各种引用,&符号和其他扭曲,但不能让它起作用.上述尝试导致
表达式或语句中出现意外的标记'\ getmac.exe'.在行:1 char:97
(我真的不想在localhost上调用getmac,这是runnable,SO的蒸馏版本)
我必须从某些服务器获取事件日志,我不想读取找到的每个服务器的凭据.
我试图通过使用ArgumentList参数传递我的变量,但我不工作.
这是我的代码:
$User = Read-Host -Prompt "Enter Username"
$Password = Read-Host -Prompt "Enter Password" -AsSecureString
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password)
$UnsecurePassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
Get-ADComputer -Filter "OperatingSystem -Like '*Server*'" | Sort-Object Name |
ForEach-Object{
if($_.Name -like '*2008*'){
Invoke-Command -ComputerName $_.Name -ArgumentList $User, $UnsecurePassword -ScriptBlock {
net use P: \\Server\dir1\dir2 /persistent:no /user:$User $UnsecurePassword
Get-EventLog -LogName System -After (Get-Date).AddHours(-12) -EntryType Error, Warning | format-list |
out-file P:\EventLog_$env:COMPUTERNAME.log
net use P: /delete /yes
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何在Invoke-Command ScriptBlock中使用变量?
我会尽量使这个例子简单。
$myValues = {
$value1 = "hello"
$value2 = "world"
}
Invoke-Command $myValues
Run Code Online (Sandbox Code Playgroud)
如何访问$value1和$value2后Invoke-Command执行?
编辑:我试图解决的问题是我必须在$myValues整个脚本中多次初始化变量。所以我想我会在顶部定义一次脚本块,然后Invoke-Command在$myVariables需要重新初始化变量时简单地调用。
设法获得JSON数据
$R= Invoke-WebRequest -Uri $url -Headers $headers -ContentType "application/json" -Method Get -UseBasicParsing
$x = $R.Content | Out-String | ConvertFrom-Json
Run Code Online (Sandbox Code Playgroud)
现在我有一个像这样的JSON文件:
{
"id": 1000,
"name_with_namespace": "myProjectName1",
},
{
"id": 1001,
"name_with_namespace": "myProjectName2",
},
{
"id": 1002,
"name_with_namespace": "myProjectName3",
}
Run Code Online (Sandbox Code Playgroud)
现在我需要提取所有出现的地方"name_with_namespace"和"id"地点"name_with_namespace" = "myProjectName.*"
我该如何一次性完成?
我试过这个:
foreach ($name in $x.name_with_namespace) {
if ( $name -match ".*myProjectName.*" ) {
write-host "$name - $x.id"
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到了这个:
myProjectName1 1000 1001 1002
myProjectName2 1000 1001 1002
myProjectName3 1000 1001 1002
Run Code Online (Sandbox Code Playgroud)
我知道问题出在$ …
$logstring = Invoke-Command -ComputerName $filesServer -ScriptBlock {\n param(\n $logstring,\n $grp\n )\n\n $Klassenbuchordner = "KB " + $grp.Gruppe\n $Gruppenordner = $grp.Gruppe\n $share = $grp.Gruppe\n $path = "D:\\Gruppen\\$Gruppenordner"\n\n if ((Test-Path D:\\Dozenten\\01_Klassenb\xc3\xbccher\\$Klassenbuchordner) -eq $true)\n {$logstring += "Verzeichnis f\xc3\xbcr Klassenb\xc3\xbccher existiert bereits"}\n else {\n mkdir D:\\Dozenten\\01_Klassenb\xc3\xbccher\\$Klassenbuchordner\n $logstring += "Klassenbuchordner wurde erstellt!"\n }} -ArgumentList $logstring, $grp\nRun Code Online (Sandbox Code Playgroud)\n\n我的目标是测试目录是否存在并根据需要创建它。
\n\n问题是路径包含德文字母(元音变音),目标服务器无法正确识别这些字母。
\n\n例如,服务器收到路径"D:\\Dozent\\01_Klassenb\xc3\x83\xc2\xbccher"而不是预期的"D:\\Dozent\\01_Klassenb\xc3\xbccher".
如何强制使用正确的 UTF-8 编码?
\npowershell utf-8 character-encoding codepages invoke-command
$server = "SOME_SERVER"
$target = "8.8.8.8"
Invoke-Command -ComputerName $server -ScriptBlock { Test-Connection -ComputerName $target }
Run Code Online (Sandbox Code Playgroud)
所以我有这个代码,它给我一个错误
无法验证参数'ComputerName'的参数.参数为null或空.提供非null或空的参数,然后再次尝试该命令.
奇怪的是,如果我换$target到8.8.8.8最后一行,一切都很好.
有人可以向我解释一下吗?我一直在努力争取一个小时,并搜索互联网寻找答案,但没有找到任何解决方案.这是PowerShell中的某种错误吗?
BTW - 如果我调用$target它,它给了我8.8.8.8,类型是String,所以......