Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # スクリプト実行パスを取得する関数
- # バージョンによって取得する情報を変更する
- function Get-ScriptDir() {
- if( $PSVersionTable.PSVersion.Major -ge 3) {
- # Data from $PSScriptRoot
- $ScriptDir = $PSScriptRoot
- }
- else {
- # Data from $MyInvocation.MyCommand.Path
- $ScriptDir = Split-Path $MyInvocation.MyCommand.Path -Parent
- }
- return $ScriptDir
- }
- # NetWeaver .Net Connectorのモジュールをロードする関数
- function Load-Nco {
- $ScriptDir = Get-ScriptDir
- $Size = [System.IntPtr]::Size
- if ($Size -eq 4) {
- $Path = $ScriptDir + "\x86\"
- }
- elseif ($Size -eq 8) {
- $Path = $ScriptDir + "\x64\"
- }
- [Reflection.Assembly]::LoadFile($Path + "sapnco.dll") > $Null
- [Reflection.Assembly]::LoadFile($Path + "sapnco_utils.dll") > $Null
- }
- # -----
- # SAPへの接続先を設定する
- # -----
- Function Get-Destination {
- $cfgParams = New-Object SAP.Middleware.Connector.RfcConfigParameters
- $cfgParams.Add("NAME", "TEST")
- $cfgParams.Add("ASHOST", "ABAP")
- $cfgParams.Add("SYSNR", "00")
- $cfgParams.Add("CLIENT", "400")
- $cfgParams.Add("USER", "User")
- $secPasswd = Read-Host -Prompt "Password" -AsSecureString
- $ptrPasswd = [Runtime.InteropServices.Marshal]::SecureStringToBStr($secPasswd)
- $passwd = [Runtime.InteropServices.Marshal]::PtrToStringBStr($ptrPasswd)
- $cfgParams.Add("PASSWD", $passwd)
- $cfgParams.Add
- Return [SAP.Middleware.Connector.RfcDestinationManager]::GetDestination($cfgParams)
- }
- # ----
- # SAP汎用モジュールを実行する
- # ----
- Function Invoke-SAPFunctionModule {
- $destination = Get-Destination
- # Metadata
- Try {
- [SAP.Middleware.Connector.IRfcFunction]$bapiCreateUser = $destination.Repository.CreateFunction("BAPI_USER_CREATE1")
- [SAP.Middleware.Connector.IRfcFunction]$bapiTransactionCommit = $destination.Repository.CreateFunction("BAPI_TRANSACTION_COMMIT")
- }
- Catch [SAP.Middleware.Connector.RfcBaseException] {
- Write-Host "Failed"
- Break
- }
- # Set Import Parameters
- $bapiCreateUser.SetValue("USERNAME", "MYUSER")
- [SAP.Middleware.Connector.IRfcStructure]$imPassword = $bapiCreateUser.GetStructure("PASSWORD")
- $imPassword.SetValue("BAPIPWD", "initial")
- [SAP.Middleware.Connector.IRfcStructure]$imAddress = $bapiCreateUser.GetStructure("ADDRESS")
- $imAddress.SetValue("FIRSTNAME", "My")
- $imAddress.SetValue("LASTNAME", "User")
- $imAddress.SetValue("FULLNAME", "MyUser")
- # Open context
- [SAP.Middleware.Connector.RfcSessionManager]::BeginContext($destination) > $Null
- # 汎用モジュール呼び出し
- Try {
- # ユーザ作成
- $bapiCreateUser.Invoke($destination)
- [SAP.Middleware.Connector.IRfcTable]$return = $bapiCreateUser.GetTable("RETURN")
- ForEach ($line in $return) {
- Write-Host $line.GetValue("TYPE") "-" $line.GetValue("MESSAGE")
- }
- # コミット
- $bapiTransactionCommit.Invoke($destination)
- }
- Finally {
- # クローズ
- [SAP.Middleware.Connector.RfcSessionManager]::EndContext($destination) > $Null
- }
- }
- # ----
- # メイン関数
- # ----
- Function Main() {
- Load-NCo
- Invoke-SAPFunctionModule
- }
- # ------------------------------
- # Main
- # ------------------------------
- Main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement